在本地运行大模型时,Ollama 配合 AMD 显卡可以通过 ROCm 获得 GPU 加速,但实际部署往往涉及显卡架构、驱动、ROCm 用户态组件、设备权限和模型显存占用等多个环节。只要其中一层不匹配,就可能出现 GPU 未识别、自动回退 CPU、推理崩溃或速度异常。本文提供一套从环境核对到日志诊断的排查流程,帮助大家少走弯路。🛠️
一、安装前先确认兼容性
不要仅凭“AMD 显卡”这一条件判断能否使用 ROCm。首先执行 lspci -nn | grep -Ei "vga|display" 查看显卡型号,再执行 rocminfo | grep -E "Name:|gfx" 获取 GPU 对应的 gfx 架构标识。随后在 AMD ROCm 兼容性矩阵中核对显卡、Linux 发行版、内核和驱动版本是否属于受支持组合。
ROCm 是由内核驱动、固件、运行时和计算库共同组成的软件栈,版本越新并不代表越适合当前系统。对于生产环境,建议优先采用官方明确验证过的操作系统与版本组合;对于未列入正式支持范围的消费级显卡,应提前接受可能需要额外适配、升级后失效或回退 CPU 的现实。⚠️
二、检查驱动与 ROCm 运行环境
安装完成后,可按以下顺序验证基础环境:
- 执行 lsmod | grep amdgpu,确认 amdgpu 内核模块已经加载。
- 执行 ls -l /dev/kfd /dev/dri/render*,确认计算与渲染设备节点存在。
- 执行 rocminfo,检查是否能够列出 AMD GPU Agent。
- 执行 amd-smi;部分旧环境可使用 rocm-smi,观察显存、温度和利用率。
如果 rocminfo 无法识别显卡,问题通常还没有到 Ollama 层,应先排查驱动、内核、固件和 ROCm 安装。AMD 官方强调各组件需要保持版本协调,具体安装方式应以来源链接 官方文档为准,不建议随意混用多个软件源中的驱动与运行库。
设备权限也不能忽略
普通用户一般需要具备访问 render 与 video 设备组的权限,可执行 sudo usermod -aG render,video $USER,然后重新登录系统。如果 Ollama 由 systemd 服务运行,还要检查服务账户是否属于对应组。终端用户可以访问 GPU,并不代表后台的 ollama 用户也拥有相同权限。
三、安装并验证 Ollama 的 ROCm 组件
Linux 用户可按照 Ollama Linux 官方指南安装主程序。手动安装时,AMD GPU 还需要对应的 ROCm 附加软件包;升级旧版本前则要注意清理遗留库,避免新旧后端被同时加载。
安装后依次执行 ollama -v、sudo systemctl status ollama 和 ollama run 模型名。推理期间在另一个终端运行 watch -n 1 amd-smi,观察显存占用与 GPU 活动。如果模型生成正常,但 GPU 显存始终没有变化,通常意味着任务仍在 CPU 上执行。
判断 GPU 是否真正生效,不能只看“模型成功运行”,还应同时核对 Ollama 日志、显存变化和进程加载的推理后端。✅
四、从日志定位自动回退与加载失败
systemd 部署可使用 journalctl -u ollama --no-pager --follow 实时查看日志;手动执行 ollama serve 时,日志会直接输出到当前终端。若信息不足,可通过 systemd 覆盖配置加入 Environment="OLLAMA_DEBUG=1",重载服务后重新复现问题。详细方法可参考 Ollama 故障排查文档。
排查时重点搜索 rocm、hip、gfx、library、memory 和 fallback 等关键词。若日志只显示 CPU 后端,应检查 ROCm 附加包、设备权限和库搜索路径;若出现不支持的 gfx 架构,说明显卡目标与当前后端可能不兼容;若加载模型后立即退出,则需要进一步判断是显存不足、运行库冲突还是驱动异常。
五、常见推理兼容性问题
- 显存不足:模型权重、上下文缓存和并发请求都会占用显存。可改用参数量更小或量化程度更高的模型,同时降低上下文长度和并发数。
- 新旧库混装:升级 Ollama 或 ROCm 后出现异常,可检查 /usr/lib/ollama、系统 ROCm 目录及环境变量,避免加载到过期动态库。
- 服务环境不同:在交互式终端中设置的环境变量不会自动传给 systemd 服务,应写入服务覆盖配置并执行 sudo systemctl daemon-reload 与重启操作。
- 容器看不到 GPU:除了映射 /dev/kfd 和 /dev/dri,还要处理设备组权限;容器中的 ROCm 用户态组件也应与宿主机驱动保持兼容。
- 非官方架构覆盖:网上常见的 HSA 架构覆盖变量属于兼容性尝试,可能导致错误结果或崩溃,不应在不了解 gfx 架构差异时直接照搬。🧩
六、推荐的最短排查路线
建议按照“硬件兼容矩阵 → amdgpu 模块 → 设备节点 → rocminfo → 用户权限 → Ollama ROCm 包 → 调试日志 → 显存监控”的顺序处理。每完成一步都保留命令输出,并记录显卡型号、gfx 标识、内核版本、ROCm 版本、Ollama 版本及模型名称。这样无论在论坛求助还是提交问题,都能快速判断故障位于哪一层。
总结
Ollama 接入 AMD ROCm 的关键不是反复重装,而是确保硬件、内核驱动、ROCm 运行时、Ollama 后端和服务权限形成完整兼容链。先用官方矩阵确认支持范围,再以 rocminfo 验证计算环境,以 Ollama 调试日志确认后端选择,最后通过 AMD SMI 工具观察真实显存活动。沿着这条链路逐层排除,大多数 GPU 未识别、CPU 回退和推理崩溃问题都能得到清晰定位。🚀