
Ollama not running with ROCm backend?
快速结论:Ollama 在 AMD RDNA 3.5(如 Radeon 890M)iGPU 上可能未正确启用 ROCm 后端,导致性能远低于 llama.cpp 的 ROCm 或 Vulkan 后端。优先排查 Ollama 内置的 ROCm 库是否支持你的 GPU gfx 架构类型。
问题场景
用户在一台仅配备 AMD iGPU(Radeon 890M,RDNA 3.5 架构)的 Linux 设备上运行 Ollama(版本 0.5.11),并与 llama.cpp 的 CPU、ROCm 后端进行性能对比。测试发现 Ollama 推理速度显著慢于 llama.cpp 的 ROCm 后端,甚至慢于 llama.cpp 的 CPU 后端。在另一边,用户另一台配备双独立 AMD GPU 的设备上,Ollama 与 llama.cpp 速度相近,问题集中在 iGPU-only 设备。
报错原文
time=2025-02-16T07:31:24.513Z level=INFO source=gpu.go:217 msg="looking for compatible GPUs"
time=2025-02-16T07:31:24.525Z level=WARN source=amd_linux.go:61 msg="ollama recommends running the https://www.amd.com/en/support/linux-drivers" error="amdgpu version file missing: /sys/module/amdgpu/version stat /sys/module/amdgpu/version: no such file or directory"
time=2025-02-16T07:31:24.533Z level=WARN source=amd_linux.go:376 msg="amdgpu is not supported (supported types:[gfx1030 gfx1100 gfx1101 gfx1102 gfx900 gfx906 gfx908 gfx90a gfx940 gfx941 gfx942])" gpu_type=gfx1150 gpu=0 library=/usr/local/lib/ollama/rocm
原因分析
Issue 中服务器日志显示,Ollama 自带的 ROCm 库(位于 /usr/local/lib/ollama/rocm)仅支持特定的 gfx 架构列表,而用户的 iGPU 类型为 gfx1150(RDNA 3.5)。Ollama 报出“amdgpu is not supported”警告,且不支持列表中不包含 gfx1150 或 gfx1151。虽然用户系统已安装完整 ROCm(6.3.2),且 /opt/rocm/lib/rocblas/library/ 中存在 gfx1151 的 TensileLibrary 文件,但 Ollama 并不使用系统 ROCm,而是使用自带的受限库。
可能原因:Ollama 捆绑的 ROCm 库缺少对 RDNA 3.5(gfx1150/gfx1151)GPU 架构的支持,导致 Ollama 回退到 CPU 后端运行。用户尝试设置 HSA_OVERRIDE_GFX_VERSION=11.5.1(使 llama.cpp 生效的选项)对 Ollama 也无帮助,进一步佐证了内置库兼容性问题。
环境排查
- Ollama 版本:0.5.11
- ROCm 系统版本:6.3.2
- GPU:AMD Radeon 890M(RDNA 3.5 架构,gfx1150,据评论属于 gfx1151 家族)
- 操作系统:Linux
- 确认
/sys/module/amdgpu/version文件是否存在(问题中出现 “no such file or directory”) - 确认 Ollama 内置库路径
/usr/local/lib/ollama/rocm下是否包含对应 gfx 类型的 rocblas 库文件 - 检查
rocminfo输出中的 GPU 架构类型
解决步骤
- 确认 GPU 架构:运行
rocminfo查看 GPU 的 gfx 类型(例如 gfx1150)。 - 检查 Ollama 内置库支持范围:查看
/usr/local/lib/ollama/rocm目录下是否存在与你的 gfx 匹配的 .dat 文件:
ls /usr/local/lib/ollama/rocm | grep gfx(Issue 中日志显示支持的列表为:[gfx1030 gfx1100 gfx1101 gfx1102 gfx900 gfx906 gfx908 gfx90a gfx940 gfx941 gfx942],不包含 gfx1150/1151) - 尝试使用
HSA_OVERRIDE_GFX_VERSION:设置环境变量运行 Ollama(可优先尝试,但在 Issue 中对 Ollama 无效):
HSA_OVERRIDE_GFX_VERSION=11.5.1 ollama serve - 如果 Ollama 内置库不支持你的 GPU:目前 Issue 中的根本原因在于 Ollama 内置的 ROCm 库没有涵盖 RDNA 3.5。可能的方案(来自 Issue 讨论者建议):
– 等待 Ollama 更新内置 ROCm 库以支持新的 gfx 类型;
– 考虑使用 Vulkan 后端(如果 Ollama 后续支持);
– 使用 llama.cpp 直接搭配 ROCm 或 Vulkan 作为替代方案。 - 收集更多服务器日志:运行 Ollama server 时,收集详细日志以确认后端回退行为:
ollama serve 2>&1 | tee ollama_server.log - 检查 amdgpu 驱动:确保 amdgpu 内核模块已加载,并检查缺失的
/sys/module/amdgpu/version文件(可能只是一个文件缺失问题,不影响功能,但应确认驱动版本与 ROCm 兼容)。
验证方法
使用相同的模型(例如同一 .gguf 文件)在 Ollama 与 llama.cpp 的 ROCm 后端进行对比推理测试。如果 Ollama 正确启用了 ROCm 后端,其 tokens/s 应接近 llama.cpp ROCm 的性能。若速度仍显著低于 CPU 级别或远远慢于 llama.cpp ROCm,说明 Ollama 仍在使用 CPU 后端。可运行 ollama ps 查看当前模型是否分配到 GPU(显示 GPU 利用率)。



