事情是这样的。上个月我把 OpenCode 装上了,满心期待地用它帮我写一段 Java 代码。结果输入完 prompt 后,我在终端前等了足足 3 分多钟——然后屏幕上一个字一个字地往外蹦,比我自己写还慢。我忍不住骂了一句:"这 AI 比我还菜,速度慢成这样怎么用?"
后来打开任务管理器一看——Ollama 进程的 GPU 占用率显示是 0%。它全程用 CPU 在跑。
(实测)这个坑估计 80% 的小白第一次部署都会踩到。Ollama 默认会把模型扔到 CPU 上推理,除非你手动配置让它用 GPU。这篇文章就是让你 5 分钟搞定这个问题。
这篇是 本地部署大模型实战:Ollama + Open WebUI 完整教程 的性能优化篇。先确保你的 Ollama 搭好了,再来看怎么加速。
在动手之前,先搞清楚目前的运行状态。不要瞎猜,直接用命令看。
# 查看当前运行的模型和使用的推理设备
ollama ps
# 输出示例(CPU 模式——慢):
# NAME ID SIZE PROCESSOR
# qwen2.5-coder:7b 123abc 4.5 GB 100% CPU
# 输出示例(GPU 模式——快):
# NAME ID SIZE PROCESSOR
# qwen2.5-coder:7b 123abc 4.5 GB 100% GPU
(实测)关键看 PROCESSOR 列——如果是 100% CPU,你的推理速度大概是 2-5 token/s,读一篇文章都等得让人崩溃;如果是 100% GPU,速度是 20-50 token/s,这才是正常体验。
如果你用的是 Windows,也可以用任务管理器看 GPU 占用,但 ollama ps 更直接。Mac M 系列芯片用户不需要担心,Ollama 会自动用上统一内存。
90% 的 GPU 加速问题都是因为 Ollama 没有识别到你的显卡。
# NVIDIA 显卡
nvidia-smi
# 如果正常输出(包括 GPU 型号、显存使用情况、驱动版本),说明驱动没问题
# 如果报错 "command not found",说明你没装 NVIDIA 驱动或 CUDA 工具包
如果你没装驱动:
# Ubuntu / Debian
sudo apt update
sudo apt install nvidia-driver-550 # 推荐 550+ 版本
sudo reboot
# 验证
nvidia-smi
(实测)驱动版本很重要。Ollama 要求 CUDA 11.8+ 或驱动版本 520+。我一开始装的是老驱动(470 系列),Ollama 直接忽略 GPU,全程跑 CPU。升级到 550 后立刻识别了。可以先看驱动版本:
nvidia-smi | grep "Driver Version"
# Driver Version: 550.54.15 ← ✅ 550 以上就没问题
# 查看 CUDA 版本
nvcc --version
# 如果报错,安装 CUDA Toolkit(Ollama 需要 CUDA 11.8+)
# 推荐直接用 Ollama 的 CUDA 打包版本(自带 CUDA runtime,不用单独装)
Ollama 从 0.1.30 版本开始,自带 CUDA 依赖。所以你其实不用手动安装 CUDA Toolkit——前提是驱动版本要够新。
如果你之前装的是 CPU-only 版本,需要换成 GPU 版本。
# 卸载旧版本
sudo systemctl stop ollama
sudo apt remove ollama
rm -rf ~/.ollama
# 重新安装(脚本会自动检测 GPU 并安装对应版本)
curl -fsSL https://ollama.com/install.sh | sh
(实测)重装 Ollama 这一步最有效。我跑了 3 轮排查都没解决,最后重装了一遍,进程的 GPU 占用率直接跳到 98%。
如果你的显卡只有 4G-6G 显存,Ollama 会因为显存不够而自动放弃 GPU 加速。但你可以强制它用 GPU 跑部分层。
# 强制 Ollama 使用 GPU,即使显存不够
OLLAMA_USE_CUDA=1 ollama serve
# 如果你有多张显卡,指定用第几张
CUDA_VISIBLE_DEVICES=0 ollama serve # 只用 GPU 0
(实测)如果你的卡只有 6G 显存,跑 7B 模型的量化版(Q4_K_M,约 4.5G)勉强能塞下。如果同时还跑其他程序(比如浏览器),显存不够会有部分层掉到 CPU。建议跑模型前把 VS Code、浏览器等其他程序关了。
如果你的显存刚好够但差一点,可以告诉 Ollama 用 GPU 跑多少层,剩下的交给 CPU:
# 指定模型用 GPU 跑前 20 层,剩余层走 CPU
OLLAMA_NUM_GPU_LAYERS=20 ollama run qwen2.5-coder:7b
不设置这个参数时,Ollama 会自动分配——但自动分配往往偏保守,会留很多层给 CPU。手动指定后能把更多计算放在 GPU 上。
(实测)默认自动分配时只能把 12/28 层放到 GPU,手动写 OLLAMA_NUM_GPU_LAYERS=24 后速度从 8 tok/s 提升到 22 tok/s。显存卡得比较紧时可以用这个办法。
如果你的显卡真的很老(比如 GTX 1060 6G),跑完整版 7B 模型不行。换量化版模型是唯一的出路。
# 查看当前模型的量化版本
ollama list
# 拉取 Q4_K_M 量化版(质量损失最小 + 性能最好)
# 7B 模型
ollama pull qwen2.5-coder:7b-q4_k_m # 约 4.5GB 显存
ollama pull deepseek-coder:6.7b-q4_k_m # 约 4.2GB 显存
# 14B 模型(需要 24G 显存起步的推荐版)
ollama pull qwen2.5-coder:14b-q4_k_m # 约 8.5GB 显存
各种量化版本的对比:
| 量化格式 | 显存占用 | 质量损失 | 推荐度 |
|---|---|---|---|
| Q8_0 | 最大 | 几乎无 | ⭐⭐⭐(显存够用就选它) |
| Q4_K_M | 约为 Q8_0 的 50% | 极小(推荐) | ⭐⭐⭐⭐⭐ 首选 |
| Q4_0 | 比 Q4_K_M 再小一点 | 稍明显 | ⭐⭐(显存实在不够再选) |
| Q3_K_S | 最小 | 明显 | ⭐(不推荐,质量下降太多) |
(实测)Q4_K_M 是事实上的"黄金格式"。显存占用只有 Q8_0 的一半,但质量下降几乎感知不到。我用 Qwen2.5-Coder 14B Q4_K_M,在 12G 显存上跑出 25 tok/s,作为日常补全完全够用。
配置完成后,不要凭"感觉"判断,用数据说话:
# 方法 1:看 PROCCESSOR 列
ollama ps
# 确认 PROCESSOR 显示 100% GPU(不是 CPU)
# 方法 2:显存占用确认
nvidia-smi
# 在进程列表里找到 ollama,看显存占用(应该占用了几 G)
# 方法 3:直观速度测试
# 写一段 prompt,计时:
time ollama run qwen2.5-coder:7b "写一个 Java 单例模式的双重检查锁实现"
# 速度目标参考:
# 7B Q4_K_M + GPU → 20-50 tok/s(正常)
# 7B Q4_K_M + CPU → 2-5 tok/s(需要修复)
# 14B Q4_K_M + GPU → 15-30 tok/s(正常)
# 14B Q4_K_M + CPU → 1-3 tok/s(太慢了受不了)
| 硬件 | 推荐模型 + 格式 | 预期速度(GPU) | 配置要点 |
|---|---|---|---|
| GTX 1060 6G | qwen2.5-coder:7b-q4_k_m | 15-20 tok/s | OLLAMA_NUM_GPU_LAYERS=20,关掉浏览器 |
| RTX 3060 12G | qwen2.5-coder:7b-q4_k_m | 30-40 tok/s | 默认配置即可 |
| RTX 3090 24G | qwen2.5-coder:14b-q4_k_m | 25-35 tok/s | 默认配置即可 |
| RTX 4090 24G | deepseek-coder:33b-q4_k_m | 20-30 tok/s | OLLAMA_NUM_GPU_LAYERS=40 |
| Mac M2 16G | qwen2.5-coder:7b-q4_k_m | 25-35 tok/s | Mac 默认就是 GPU,无需配置 |
观点收尾:
Ollama 走 CPU 还是 GPU,速度差距在 5-10 倍。所以如果你的本地模型"卡到不能忍",大部分时候不是电脑配置问题,是一行命令的事。
5 分钟排查顺序:
nvidia-smi 看驱动(驱动版本 520+)ollama ps 看 PROCESSOR 是不是 CPU一句话总结:本地模型用 CPU 跑的体验是"不能忍"的,调到 GPU 后是"日常可用"。值不值得花 5 分钟?值。
本地模型加速后,可以结合 VS Code 做补全:Ollama + OpenCode + VS Code 完全免费离线方案。想了解更多本地部署技巧,看 本地部署大模型实战。
本文基于博主在 RTX 3060 12G 和 RTX 3090 24G 上配置 Ollama GPU 加速的实测经历写成。Ollama GPU 支持相关信息参考自 Ollama 官方 GitHub Wiki。