本地跑大模型时,最让人困惑的一类问题就是:机器明明有显卡,Ollama 却还是主要吃 CPU,速度也慢得离谱。
先说结论,这类问题通常不是单一原因。最常见的几类分别是:
Ollama根本没有识别到可用 GPU- 驱动、
ROCm或CUDA环境没装对 Ollama服务启动时没有继承正确环境变量- 模型太大,实际已经退回到
CPU或CPU/GPU混合加载 - AMD 平台存在额外兼容性问题,比如
ROCm版本、gfx代号或设备可见性设置不对
下面按最省时间的顺序排查。
1. 先确认是不是“真的没用 GPU”
最直接的方法是看:
|
|
重点看 PROCESSOR 一列。
100% GPU:说明模型完整跑在显卡上100% CPU:说明完全没用上显卡48%/52% CPU/GPU这类结果:说明模型部分进显存、部分落到系统内存
如果你看到的是 100% CPU,后面就该重点查环境和服务配置。
如果看到的是混合加载,那不一定是“显卡没生效”,更可能是显存不够。
2. 先排除最常见的误区:模型装不进显存
很多人以为只要装了 GPU,Ollama 就一定会全显卡推理。实际上不是。
如果模型太大、上下文太长,或者机器上已经有别的模型占着显存,Ollama 很可能会退回到:
- 部分 GPU + 部分 CPU
- 直接
100% CPU
这时候可以先做两个最简单的验证:
- 换一个更小的模型测试
比如先用4B、7B这类小模型,而不是一上来就跑更大的参数量。 - 卸载其他已加载模型后再试
先看ollama ps,确认没有别的模型占着显存。
如果小模型能上 GPU,大模型不行,问题往往就不在驱动,而在显存容量。
3. 检查显卡驱动和底层环境是不是可用
如果连小模型都只能跑 CPU,下一步就该看底层环境。
NVIDIA 方向
先确认驱动正常,系统能看到显卡。常见检查方式包括:
|
|
如果这里都报错,Ollama 基本不可能正常使用 GPU。
AMD / ROCm 方向
如果你是 AMD GPU,尤其是 ROCm 环境,重点先看:
|
|
如果这些工具都不能正常列出设备,说明问题还在 Ollama 之前,先不要继续折腾应用层。
对 AMD 来说,最常见的问题不是“有没有装驱动”,而是:
ROCm版本和系统版本不匹配- 当前 GPU 架构支持不完整
- 设备虽然存在,但运行环境没有正确暴露给
Ollama
4. 重启 Ollama 服务,不要只重开终端
这是非常高频的坑。
很多人装完驱动、改完环境变量、补完 ROCm 之后,只是重新开了一个终端,然后直接继续 ollama run。但如果 Ollama 是以后台服务方式运行,它很可能还在用旧环境。
所以更稳的做法是:
- 完整重启
Ollama服务 - 必要时直接重启系统
如果你是在 Linux 上以服务方式运行,通常要确认服务进程已经重新拉起,而不是沿用之前的旧进程。
5. 检查服务环境变量有没有真正传进去
这一步在 AMD ROCm 环境尤其重要。
有些机器在终端里手动执行命令没问题,但 Ollama 服务还是只跑 CPU,原因是服务进程没有拿到你在 shell 里设置的变量。
常见需要关注的变量包括:
|
|
其中:
ROCR_VISIBLE_DEVICES用来限制或指定ROCm能看到哪些 GPUHSA_OVERRIDE_GFX_VERSION常见于某些 AMD 平台兼容性处理
如果你只是在当前终端里临时 export 了变量,但 Ollama 是 systemd、桌面后台服务或其他守护进程启动的,这些变量未必会生效。
也就是说,终端里“看起来已经设置好了”,不代表 Ollama 真的拿到了。
6. AMD 平台重点看 ROCm 兼容性
从公开页面信息看,这个问题对应的视频主题本身就落在 AMD Max+ 395、strix halo、AMD ROCm 这条线上。
这类环境里,Ollama 不走 GPU,往往比 NVIDIA 平台更依赖版本匹配。
可以优先排查下面几项:
ROCm版本是否适合当前系统和当前显卡- 当前 GPU 是否属于
ROCm支持较好的架构范围 - 是否需要补
HSA_OVERRIDE_GFX_VERSION - 是否是旧版
Ollama或旧版底层推理库导致兼容问题
如果你已经确认 rocminfo 正常、GPU 也能被系统识别,但 Ollama 仍然只跑 CPU,那大概率要回到版本组合上重新检查,而不是继续盲目调模型参数。
7. Docker、WSL 或远程环境要额外检查设备映射
如果你不是直接在裸机跑,而是在下面这些环境里运行:
- Docker
- WSL
- 远程容器
- 虚拟化环境
那还要多看一层:GPU 设备有没有真正暴露进去。
典型现象是:
- 宿主机能看到 GPU
- 容器里
Ollama却只能跑CPU
这时要先确认不是 Ollama 本身的问题,而是容器或子系统根本没拿到 GPU 访问权限。
8. 最后再看日志,而不是一开始就瞎猜
如果前面都查过了,最有效的做法不是继续反复重装,而是直接看 Ollama 启动日志和运行日志。
重点看两类信息:
- 有没有识别到 GPU
- 有没有出现驱动、库加载、设备初始化失败之类的报错
只要日志里明确出现类似“未找到兼容 GPU”或“初始化 ROCm/CUDA 失败”,排查方向就会立刻清晰很多。
排查顺序
如果你只想记最短路径,可以按这个顺序来:
ollama ps看现在到底是GPU、CPU还是混合加载- 换一个更小的模型,排除显存不够
- 用
nvidia-smi、rocminfo、rocm-smi先确认底层环境正常 - 完整重启
Ollama服务 - 检查服务环境变量,尤其是 AMD 的
ROCR_VISIBLE_DEVICES、HSA_OVERRIDE_GFX_VERSION - 如果是 Docker / WSL,再检查设备映射
- 最后看日志定位具体报错