ollama does not utilize HBM3 memory on MI300A

用户在配备 AMD MI300A APU(每颗含 128GB HBM3 内存)的服务器(Supermicro AS-4145GH-TNMR)上运行 Ollama,系统为 Rocky Linux 9.5,使用 ROCm 6.1.2。无论通过手动安装( ollama-linux-amd64-rocm.t

ollama does not utilize HBM3 memory on MI300A

ollama does not utilize HBM3 memory on MI300A

快速结论:此问题发生在 AMD MI300A APU 上,因为其统一 CPU/GPU 内存架构导致 sysfs 报告的 VRAM 总量为零。优先排查方法:尝试使用 ollama/ollama:0.12.4-rc6-rocm 或 v0.12.11 版本,或应用社区 PR 补丁。

问题场景

用户在配备 AMD MI300A APU(每颗含 128GB HBM3 内存)的服务器(Supermicro AS-4145GH-TNMR)上运行 Ollama,系统为 Rocky Linux 9.5,使用 ROCm 6.1.2。无论通过手动安装(ollama-linux-amd64-rocm.tgz)还是从源码编译,Ollama 都无法正确检测 GPU 内存,导致模型无法正常加载运行。

报错原文

# 启动日志中 GPU 内存信息显示零总量,无模型运行时的 GGGGGGGG 输出
# 示例日志(关键行)
time=2025-01-31T14:14:56.414-05:00 level=INFO source=images.go:432 msg="total blobs: 6"
# 运行任何模型时(deepseek-r1 7b, qwen:1.8b 等)均输出大量 G
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG

原因分析

社区在调查中发现,该问题是在 v0.13.0 版本中被引入的回归缺陷。具体原因:mem_hip 改为使用 sysfs 读取 /sys/class/drm/card0/device/mem_info_vram_total 来报告 VRAM 总量,但 MI300A 使用统一 CPU/GPU 内存架构,该路径返回零值。因此 mem_hip 检测到零可用 GPU 内存,认为设备不可用,导致模型运行失败。此问题在 v0.12.11 及之前版本中不存在。

环境排查

  • 确认系统架构是否为 AMD MI300A(APU 类型,非 MI300X)
  • 检查 ROCm 版本:6.1.2(用户报告),亦可能在 6.4.1 上复现
  • 确认 Ollama 版本:v0.13.0 至 v0.31.2 之间的版本均受影响
  • 查看 /sys/class/drm/card0/device/mem_info_vram_total 返回的值是否为 0
  • 设置 OLLAMA_DEBUG=2 获取更详细的 GPU 发现流程日志

解决步骤

  1. (可优先尝试)使用已知未受影响的版本:ollama/ollama:0.12.4-rc6-rocm 或 v0.12.11。
  2. 如果希望使用最新版本,可以应用社区提交的修复 PR(需自行查找具体提交)后从源码编译:
    cmake --preset "ROCm 6"
    cmake --build build --parallel
    go build
  3. 确认 v0.31.2 版本已修复此问题(社区用户报告在 MI300A 上正常工作)。

验证方法

运行 ollama serve 并观察启动日志,确认 GPU 内存总量被正确识别(应接近 128GB/APU)。尝试运行任意模型(如 ollama run qwen:1.8b),确认不再出现 GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG 输出且模型正常推理。

参考来源

ollama/ollama #8735

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 13262

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注