在 AMD Ryzen AI Max+ 395 上运行 SAM 3:修复 rocBLAS 错误的完整指南

发布: (2025年12月18日 GMT+8 15:43)
8 min read
原文: Dev.to

Source: Dev.to

请提供您希望翻译的完整文本(除代码块和 URL 之外),我将把它翻译成简体中文并保持原有的 Markdown 格式。

介绍

“我每天花 14 小时与 AI(Claude)搏斗,已经再满意不过了。”
— Akio Shiki (@ar_akio) – 2025 年 10 月 20 日

嗨,我是 Akio,AI 开发初创公司的工程师。在上一篇文章中,我介绍了 SAM 3。这次,我将分享在 AMD 硬件上运行 SAM 3 时遇到的坑。

我们不断测试最新的 AI 模型和硬件。现在我手上的是只能用“AMD 工程的纪念碑”来形容的 Ryzen AI Max+ 395

AMD 官方

这台机器的规格说实话简直疯狂。配备高带宽内存和强大的 iGPU,在本地运行像 OpenAI 的 gpt‑oss‑120b 这样的大型语言模型时表现尤为出色。

但这不是我今天要做的事。

今天的目标是 Meta 最新的图像分割模型:SAM 3(Segment Anything Model 3)。

Meta 官方

“等等,SAM 3?不是轻量级的吗?如果追求推理速度,NVIDIA dGPU 不更合适吗?”

你说得完全正确——毫无争议。在 Ryzen AI Max+ 395 上跑 SAM 3,从某种意义上说就是用大锤子敲坚果。

但我不在乎。原因很简单:

“我只想在 AMD 最新硬件上跑最热的新模型。”

这是一个激情项目——效率不重要。我遇到的错误以及找到的解决方案,对所有 AMD 用户都具有普遍价值。把它当作征服几乎每个 Ryzen AI 用户都会碰到的 rocBLAS 错误的权威指南吧。

我的配置

组件详情
操作系统Windows 11
AI 堆栈AMD ROCm (HIP SDK)
框架PyTorch (ROCm 构建)
模型SAM 3
硬件Ryzen AI Max+ 395 (gfx1151)

环境安装顺利完成。随后我运行推理脚本,却被一堆无情的错误日志淹没。

rocBLAS error: TensileLibrary.dat not found

错误含义

“我找不到适用于你的 GPU(gfx1151)的计算库,所以无法进行任何计算。”

由于 Ryzen AI Max+ 395 使用的是最新架构,官方库尚未完全跟上路径配置——这在新发布硬件上是常见的问题。

第一次(失败的)变通办法

在 AMD 社区,常见的修复方法是 伪造环境变量,让系统以为 GPU 是兼容的旧型号(gfx1100)。

$env:HSA_OVERRIDE_GFX_VERSION = "11.0.0"

我原以为这能解决所有问题……但错误依旧,仍在寻找以下路径下的文件:

site-packages\_rocm_sdk_libraries_gfx1151\bin

深入挖掘

在穷尽了 Google、GitHub Issues 和 Reddit 线程(几乎没有相关内容)后,我决定 检查本地库文件夹

我的发现

在 PyTorch ROCm 安装目录中出现了一个意外的目录:

.../site-packages/_rocm_sdk_libraries_custom/

在其中:

.../_rocm_sdk_libraries_custom/bin/rocblas/library/

我找到了缺失的文件:

gfx1151‑相关文件
TensileLibrary_lazy_gfx1151.dat

关键洞察:
RDNA 3.5 的库文件已经存在,但 PyTorch 正在寻找名为 _rocm_sdk_libraries_gfx1151 的文件夹。实际文件位于 _rocm_sdk_libraries_custom 下。因此出现了“文件夹结构不匹配”。

修复方案 – 步骤详解

目标: 复制 PyTorch 所需的文件夹层级,并将现有文件放入相应位置。

  1. 定位源文件

    \site-packages\_rocm_sdk_libraries_custom\bin\rocblas\library
  2. 复制所有文件*.dat*.hsaco 等)从该目录。

  3. 创建期望的层级结构

    \site-packages\_rocm_sdk_libraries_gfx1151\bin
    • 如果 \_rocm_sdk_libraries_gfx1151 文件夹不存在,请先创建它。
    • 在其内部再创建一个 bin 子文件夹。
  4. 将复制的文件粘贴到新建的 bin 文件夹中。

  5. 重命名 Tensile 库(可选但推荐)

    • 复制 TensileLibrary_lazy_gfx1151.dat
    • 将复制得到的文件重命名为 TensileLibrary.dat

    这样可以匹配某些脚本所期望的命名约定。

可视化概览

\site-packages

├─ _rocm_sdk_libraries_custom
│   └─ bin
│       └─ rocblas
│           └─ library
│               ├─ TensileLibrary_lazy_gfx1151.dat
│               └─ … (其他 .dat/.hsaco 文件)

└─ _rocm_sdk_libraries_gfx1151
    └─ bin
        ├─ TensileLibrary_lazy_gfx1151.dat
        ├─ TensileLibrary.dat   ← 上述文件的副本
        └─ … (所有其他文件粘贴于此)

结果

再次运行脚本后产生了干净的日志:

[INFO] Device: cuda (PyTorch fallback label)
[INFO] Inference completed successfully.
VRAM usage: 7 GB
Single‑image inference time: ~8 s

注意: “cuda”标签只是 PyTorch 的默认字符串;即使在非 CUDA 设备上也会出现。

集成显卡运行顺畅,每张图像约 8 秒的推理时间——对于像 SAM 3 这样轻量级的模型来说完全可以接受。实时视频仍然遥不可及(我希望有一块高端 NVIDIA GPU),但实验表明 最新的图像模型可以在 AMD 硬件上运行

要点

  1. 文件夹结构不匹配可能会伪装成缺少库的错误。
  2. AMD ROCm 生态系统可能会在官方支持到位之前,将所需的二进制文件放在“自定义”路径下。
  3. 创建期望的目录层级并复制文件即可解决 Ryzen AI 300 系列 GPU(gfx1151)上的 rocBLAS error: TensileLibrary.dat not found

可以根据需要将此修复方法移植到任何官方库滞后的未来 AMD 硬件发布上。

祝编码愉快,愿你的 GPU 总能找到它们需要的库!


Ryzen AI Max+ 395 这样的强大硬件正处于软件生态系统(尤其是 Windows ROCm)尚未跟上硬件演进的过渡期。然而,正如本案例所示,很多情况下是 “文件存在,但路径未正确配置”。

别放弃——深入目录,你可能会找到解决方案。

对所有遇到同样错误的 AMD 用户:试试这 “文件夹移植手术”。祝你在本地 AI 探险中既舒适又略显超强!

如果你对本文有反馈或想让我在 Ryzen AI Max+ 395 上测试 “真正的大模型”,请在下方留言!

下次,我将发布关于将 SAM 3 与 IoT 摄像头(基于 ESP32)结合的内容,敬请期待!

Back to Blog

相关文章

阅读更多 »