Ollama 不使用 GPU 怎么办:NVIDIA、AMD、Mac 与 Docker 排查指南
核对说明:本文的支持范围、驱动版本要求、环境变量和日志位置均来自 Ollama 官方文档(docs.ollama.com 的 GPU 与 Troubleshooting 页面,2026-10-30 读取)。官方文档会随版本更新,请以你所用版本的文档为准;我们没有在每种硬件上逐一复现,下面的步骤是对官方说明的整理。
用 Ollama 跑模型时,发现风扇不转、速度慢得像在用 CPU、任务管理器里显存没动,这就是典型的 Ollama 不使用 GPU 问题。好消息是,原因通常就那么几种:模型放不下显存、驱动太旧、显卡不在支持列表、环境变量设置不当,或者容器里看不到 GPU。这篇文章按“先确认,再分平台排查”的顺序,一项项带你检查。如果你还没装好 Ollama,请先看《Ollama 安装教程》。
Ollama 不使用 GPU:先确认是不是真的没用
不要凭感觉判断,先用命令确认。加载一个模型后,在另一个终端运行:
ollama ps
看 PROCESSOR 一列:
| PROCESSOR 显示 | 含义 | 下一步 |
|---|---|---|
100% GPU |
模型完整在显存里,GPU 正常工作 | 如果仍然慢,问题不在 GPU 调用,见“速度慢但 100% GPU”一节 |
100% CPU |
完全没用到 GPU | 按下文“驱动与支持列表”逐项排查 |
xx%/yy% CPU/GPU |
模型一部分在 GPU,一部分在内存 | 显存放不下,减小模型或上下文,见《大模型显存需求怎么算》 |
NVIDIA 用户还可以运行 nvidia-smi,在进程列表里应该能看到 ollama 的进程以及它占用的显存。

症状与原因速查表
| 症状 | 最可能的原因 | 处理 |
|---|---|---|
ollama ps 显示 100% CPU |
驱动太旧、显卡不受支持、被设置成只用 CPU | 升级驱动;核对支持列表;检查 CUDA_VISIBLE_DEVICES 等变量 |
| 显示混合比例 | 模型加上上下文缓存超过显存 | 换小一档的模型;缩短上下文 |
| 一开始用 GPU,睡眠唤醒后变 CPU(Linux) | 已知的驱动问题 | 重新加载 nvidia_uvm 驱动 |
| Docker 里一开始用 GPU,过一阵变 CPU | systemd 的 cgroup 管理干扰 | 修改 Docker 的 cgroup 驱动设置 |
| AMD 显卡一直 100% CPU(Linux) | ROCm 驱动版本过旧 | 升级到 ROCm v7 驱动并重启 |
| Mac 上很慢 | Ollama 以 Rosetta 模拟运行,或使用 Intel Mac | 安装原生版本;Intel Mac 只有 CPU |
| 加载后速度忽快忽慢 | 显存刚好卡在边缘 | 降低上下文,或量化 KV 缓存 |
第一类原因:模型加上缓存放不进显存
这是最常见、也最容易被忽略的一类:显卡其实在工作,只是模型放不下,一部分被放进了内存,ollama ps 就会显示“CPU/GPU”混合比例,速度大幅下降。
原因通常有两个。一是模型本身太大,二是上下文设得太长。Ollama 官方文档说明:显存低于 24GiB 时默认上下文是 4k,24–48GiB 是 32k,48GiB 以上是 256k;智能体和编程工具建议至少 64000 token。上下文越长,KV 缓存越大,你可能没有换大模型,缓存却把显存撑爆了。
处理办法:
- 换小一档的模型,或者换更低的量化(见《大模型量化与 Q4_K_M》)。
- 用
OLLAMA_CONTEXT_LENGTH或/set parameter num_ctx缩短上下文。 - 开启
OLLAMA_FLASH_ATTENTION=1,再用OLLAMA_KV_CACHE_TYPE=q8_0把缓存砍到约一半。 - 8GB 和 24GB 显卡的具体取舍见《8GB 显存跑大模型》和《24GB 显存跑大模型》。
第二类原因:NVIDIA 驱动与支持列表
按 Ollama 官方文档,支持计算能力 5.0 及以上、驱动版本 550 及以上的 NVIDIA 显卡;计算能力 5.0 到 6.2 的老显卡则需要驱动 570 或更高。可以到 NVIDIA 的 CUDA GPU 页面查你的显卡计算能力。官方列表覆盖了 RTX 50 系列(计算能力 12.0)、RTX 40 系列(8.9)、RTX 30 系列(8.6)、RTX 20 系列与 GTX 16 系列(7.5)以及更早的 GTX 10 系列(6.1)等。
排查步骤:
- 运行
nvidia-smi。如果这条命令都报错,说明驱动没装好,先解决驱动。 - 对照驱动版本,低于 550 就升级;官方也建议尽量用最新的驱动。
- 多显卡时检查环境变量
CUDA_VISIBLE_DEVICES:它可以限制 Ollama 使用的显卡,设置成无效的编号(如-1)则会强制使用 CPU,请确认你没有误设。 - Linux 上遇到初始化失败,日志里可能出现错误码 3(未初始化)、46(设备不可用)、100(无设备)、999(未知)。官方建议:确认 uvm 驱动已加载(
sudo nvidia-modprobe -u);重载nvidia_uvm(sudo rmmod nvidia_uvm然后sudo modprobe nvidia_uvm);重启;更新驱动;仍然不行就设置CUDA_ERROR_LEVEL=50获取更多日志,并检查dmesg。 - Linux 休眠唤醒之后掉到 CPU:这是官方提到的驱动问题,同样用重载
nvidia_uvm的办法恢复。
第三类原因:AMD 显卡与 ROCm
Ollama 在 Linux 上要求 AMD ROCm v7 驱动,在 Windows 上要求支持 ROCm v7/HIP7 的驱动栈。官方列表包含 Radeon RX 9070 XT、RX 7900 XTX 等型号,以及部分 Ryzen AI 处理器(如 Ryzen AI Max+ 395);Windows 上支持的是 RX 7900 XTX、7900 XT 等 RX 7000 系列型号。
排查步骤:
- 如果服务器日志里出现“GPU discovery 超时”“bootstrap discovery took 30s”之类的信息,通常是系统驱动太旧(ROCm 6.x 或更早),需要用
amdgpu-install升级到 ROCm v7,然后重启并重启 Ollama。 - Linux 上访问
/dev/kfd需要属于video或render用户组,权限不对时 Ollama 会在日志里报错。 - 显卡不在官方支持列表时,可以尝试
HSA_OVERRIDE_GFX_VERSION,让系统使用相近的 LLVM 目标(官方举例 RX 5400 对应 gfx1034,可改用 10.3.0)。这是尝试性的办法,不保证稳定。 - 多块 AMD 显卡时,用
ROCR_VISIBLE_DEVICES选择;设置成无效编号会强制使用 CPU。多块 AMD 显卡在 Linux 上出现乱码输出,官方建议查阅 AMD 的多 GPU 已知问题文档。 - 容器里 SELinux 阻止访问 GPU 设备时,可用
sudo setsebool container_use_devices=1。
此外,官方还提供 Vulkan 作为补充支持:Vulkan 后端安装后默认启用,Windows 的大多数显卡驱动自带 Vulkan,Linux 则可能需要额外安装组件。如果 Vulkan 显卡不稳定,可以设置 OLLAMA_VULKAN=0 或 GGML_VK_VISIBLE_DEVICES=-1 关闭;在核显加独显的混合系统里,建议保持 Vulkan 开启,并用 GGML_VK_VISIBLE_DEVICES 指定独显的编号。

第四类原因:Mac 与 Apple 芯片
Ollama 在 Mac 上通过 Metal 使用 GPU,要求 macOS 14 或更新版本,Apple M 系列芯片可以同时使用 CPU 和 GPU,Intel Mac 只能使用 CPU。官方还提到,在 macOS 的 Rosetta 模拟环境下,只能使用 cpu 库。所以如果你在 M 系列 Mac 上发现速度异常慢,请确认安装的是原生版本、终端也没有以 Rosetta 方式运行。更多 Mac 的内存与选型建议见《Mac 跑大模型怎么选》。
第五类原因:Docker 与容器
在容器里跑 Ollama,GPU 需要先由容器运行时暴露出来。官方的第一步检查是:
docker run --gpus all ubuntu nvidia-smi
如果这条命令不能显示显卡,Ollama 也不可能看到。另一个官方提到的情况是:Ollama 一开始在容器里用 GPU,过一段时间却切换到 CPU,日志里还报 GPU discovery 失败,这可以通过关闭 Docker 的 systemd cgroup 管理来解决,在宿主机的 /etc/docker/daemon.json 里加入 "exec-opts": ["native.cgroupdriver=cgroupfs"]。AMD 显卡在某些发行版上还需要给容器加上 --group-add 来获得设备权限。如果你的 Open WebUI 也跑在容器里,连接问题见《Open WebUI 搭建教程》。
速度慢但显示 100% GPU:别再怪 GPU
ollama ps 已经是 100% GPU 却仍然觉得慢,常见原因有:
- 模型太大:即使完整放进显存,大模型的生成速度也受显存带宽限制,参见《本地大模型显卡推荐》里的带宽对比。
- 推理模型在“思考”:思考过程占用大量时间,不是 GPU 没用。
- 首次加载:模型从硬盘读入显存需要时间。
- 笔记本节能模式:断电或节能设置会让显卡降频。
- 上下文很长:提示词越长,预处理越慢。
日志与环境变量:怎么找到真正的原因
Ollama 官方文档给出了日志位置:
| 平台 | 日志位置或命令 |
|---|---|
| Mac | cat ~/.ollama/logs/server.log |
| Linux(systemd) | journalctl -u ollama --no-pager --follow --pager-end |
| Docker | docker logs <容器名> |
| Windows | 资源管理器中输入 %LOCALAPPDATA%\Ollama,查看 server.log |
要看更详细的信息,可以设置 OLLAMA_DEBUG=1,GPU 发现过程会输出额外信息。还有一个需要小心的实验性变量 OLLAMA_LLM_LIBRARY:它可以绕过自动检测,强制使用某个库(例如 cpu_avx2);如果你曾经设置过它,Ollama 就可能一直用 CPU,排查时请检查它是否残留在环境里。
一份 10 步排查清单
- 运行
ollama ps,记下 PROCESSOR。 - 如果是
100% CPU,在 NVIDIA 机器上运行nvidia-smi。 - 核对驱动版本(NVIDIA 550 及以上;老卡 570 及以上)。
- 在 NVIDIA 的 CUDA GPU 页面确认你的显卡计算能力在 5.0 以上。
- 检查
CUDA_VISIBLE_DEVICES、ROCR_VISIBLE_DEVICES、GGML_VK_VISIBLE_DEVICES、OLLAMA_LLM_LIBRARY是否被误设。 - 如果是混合比例,缩短上下文或换小一档模型。
- AMD 用户确认 ROCm v7 与用户组权限。
- Docker 用户先跑
docker run --gpus all ubuntu nvidia-smi。 - 重启 Ollama(必要时重启电脑)。
- 仍然不行,设置
OLLAMA_DEBUG=1,收集日志,到官方 Discord 或 GitHub 提问。
常见问题(FAQ)
为什么我的 Ollama 一直用 CPU?
最常见的原因是驱动太旧或显卡不受支持,其次是被环境变量限制了显卡,再次是显存放不下。先用 ollama ps 看 PROCESSOR 再对号入座。
NVIDIA 驱动至少要什么版本?
官方文档要求驱动 550 及以上;计算能力 5.0 到 6.2 的老显卡需要 570 及以上。
显存明明够,为什么还有 CPU 占比?
可能是上下文设得太长,KV 缓存挤占了显存;Ollama 对 24GiB 以上显存的默认上下文就更长。请缩短上下文或量化缓存。
AMD 显卡能用吗?
可以,Linux 上需要 ROCm v7 驱动,Windows 上需要支持 ROCm v7/HIP7 的驱动栈,另外还有 Vulkan 的补充支持;具体型号以官方支持列表为准。
Intel Mac 能用 GPU 吗?
官方说明 Intel Mac 只能使用 CPU,Apple M 系列芯片才能同时用 CPU 和 GPU。
重启之后又变回 CPU 了怎么办?
Linux 上先看是否是休眠唤醒问题(重载 nvidia_uvm),Docker 里看 cgroup 设置;同时检查开机自启时的环境变量是否和手动启动时一致。
下一步与社区
遇到解决不了的 GPU 问题,把 ollama ps 的输出、显卡型号、驱动版本和日志片段发到社区(加入社区),我们和其他成员会一起帮你看。我们在深圳做本地大模型机器的选型、采购、组装与实测,也乐于帮你判断是软件配置问题还是硬件不匹配;先聊需求,不强制购买。
