Ollama not running with ROCm backend?

用户在一台仅配备 AMD iGPU(Radeon 890M,RDNA 3.5 架构)的 Linux 设备上运行 Ollama(版本 0.5.11),并与 llama.cpp 的 CPU、ROCm 后端进行性能对比。测试发现 Ollama 推理速度显著慢于 llama.cpp 的 ROCm 后端,甚至

Ollama not running with ROCm backend?

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 架构类型

解决步骤

  1. 确认 GPU 架构:运行 rocminfo 查看 GPU 的 gfx 类型(例如 gfx1150)。
  2. 检查 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)
  3. 尝试使用 HSA_OVERRIDE_GFX_VERSION设置环境变量运行 Ollama(可优先尝试,但在 Issue 中对 Ollama 无效):
    HSA_OVERRIDE_GFX_VERSION=11.5.1 ollama serve
  4. 如果 Ollama 内置库不支持你的 GPU:目前 Issue 中的根本原因在于 Ollama 内置的 ROCm 库没有涵盖 RDNA 3.5。可能的方案(来自 Issue 讨论者建议):
    – 等待 Ollama 更新内置 ROCm 库以支持新的 gfx 类型;
    – 考虑使用 Vulkan 后端(如果 Ollama 后续支持);
    – 使用 llama.cpp 直接搭配 ROCm 或 Vulkan 作为替代方案。
  5. 收集更多服务器日志:运行 Ollama server 时,收集详细日志以确认后端回退行为:
    ollama serve 2>&amp1 | tee ollama_server.log
  6. 检查 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 利用率)。

参考来源

ollama/ollama #9180

GamsGo AI

AI 工具推荐

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

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

了解 GamsGo AI

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

celebrityanime
celebrityanime
文章: 13530

发表回复

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