在 AMD Ryzen AI Max+ 395 上运行 SAM 3:修复 rocBLAS 错误的完整指南
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 所需的文件夹层级,并将现有文件放入相应位置。
-
定位源文件
\site-packages\_rocm_sdk_libraries_custom\bin\rocblas\library -
复制所有文件(
*.dat、*.hsaco等)从该目录。 -
创建期望的层级结构
\site-packages\_rocm_sdk_libraries_gfx1151\bin- 如果
\_rocm_sdk_libraries_gfx1151文件夹不存在,请先创建它。 - 在其内部再创建一个
bin子文件夹。
- 如果
-
将复制的文件粘贴到新建的
bin文件夹中。 -
重命名 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 硬件上运行。
要点
- 文件夹结构不匹配可能会伪装成缺少库的错误。
- AMD ROCm 生态系统可能会在官方支持到位之前,将所需的二进制文件放在“自定义”路径下。
- 创建期望的目录层级并复制文件即可解决 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)结合的内容,敬请期待!