目录
Ollama GPU 设置与性能调优教程:为什么这么慢?
本地模型最常见的抱怨就是“太慢”。大多数情况下,原因不是电脑性能不够,而是模型没有完整加载到 GPU。
第一步:确认是否使用了 GPU
先运行一个模型,再查看:
ollama run qwen3:8b "你好" --verbose
ollama ps
ollama ps 的 PROCESSOR | 含义 | 速度 |
|---|---|---|
100% GPU | 完整放在显卡上 | 最快 |
30%/70% CPU/GPU | 显卡放不下,部分放在系统内存中 | 明显变慢 |
100% CPU | 完全没有使用 GPU | 最慢 |
--verbose 输出的 eval rate 是每秒生成的 token 数,可以用来比较调整前后的差异。
NVIDIA 显卡未被使用
-
更新驱动程序。驱动程序过旧是最常见的原因。
-
确认系统能识别显卡:
nvidia-smi -
查看 Ollama 日志,搜索 GPU 相关信息:
- Linux:
journalctl -u ollama --no-pager | grep -i -E "gpu|cuda" - Windows:
%LOCALAPPDATA%\Ollama\server.log - macOS:
~/.ollama/logs/server.log
- Linux:
-
如果笔记本同时有集成显卡和独立显卡,请确认 Ollama 使用的是独立显卡(Windows 的“图形设置”可以指定应用使用高性能 GPU)。
-
如果有多张显卡,可以使用
CUDA_VISIBLE_DEVICES=0指定要使用的显卡。
AMD 显卡
Ollama 通过 ROCm 支持部分 AMD 显卡,支持的型号列表请参阅官方文档。不在列表中的显卡有时可以通过 HSA_OVERRIDE_GFX_VERSION 环境变量强制指定相近的架构,但无法保证稳定。
Apple Silicon Mac
M 系列芯片会自动使用 GPU。Mac 的“统一内存”由 CPU 和 GPU 共享,但系统默认只允许 GPU 使用其中一部分(大约三分之二到四分之三),模型和上下文所需内存不能超过这个额度。
模型无法全部放入 GPU 时怎么办
按效果排序:
1. 换用更小的模型或量化版本
例如从 14b 换成 8b,或从 q8_0 换成 q4_K_M。速度通常比“大模型但一半在 CPU 上运行”快很多。详见模型选择与硬件需求。
2. 缩短上下文长度
上下文所需的内存(KV cache)会随长度增加。如果 ollama ps 中的 CONTEXT 数值很大,可以尝试调小 OLLAMA_CONTEXT_LENGTH 或 num_ctx。
3. 量化 KV cache
OLLAMA_FLASH_ATTENTION=1
OLLAMA_KV_CACHE_TYPE=q8_0
q8_0 可以让上下文的内存用量减半左右,对质量的影响很小;q4_0 节省更多,但对质量的影响比较明显。KV cache 量化需要 Flash Attention。
4. 关闭其他占用显存的程序
浏览器、游戏和其他 AI 工具都会占用 VRAM。使用 nvidia-smi 可以查看各程序的显存用量。
5. 一次只加载一个模型
同时加载多个模型会争用内存:
ollama ps
ollama stop 不需要的模型
或者设置 OLLAMA_MAX_LOADED_MODELS=1。
其他影响速度的因素
| 现象 | 原因与对策 |
|---|---|
| 第一次回答特别慢 | 模型正在加载。调高 OLLAMA_KEEP_ALIVE,让模型保持加载状态 |
| 开始回答前停顿很久 | 输入(提示词)很长,模型需要先处理。此阶段主要受 GPU 运算能力影响 |
| 推理模型回答很慢 | 它正在“思考”。不需要深度推理时,可以关闭思考模式 |
| 多人同时使用时变慢 | 请求正在排队,参见 OLLAMA_NUM_PARALLEL |
大致的速度参考
生成速度主要受内存带宽限制,大致规律如下:
- 在同一张显卡上,模型越大,速度越慢,大致与模型文件大小成反比。
- 每秒生成 20 个 token 以上,阅读起来就很流畅;低于 10 个 token 时会感觉在等待。
如果你的速度远低于同级硬件的一般水平,几乎可以确定模型有一部分溢出到 CPU,回到第一步检查。
更新于 2026年10月12日