Gemma 4 下好了,跑起来了,但是……慢得要命。一秒两三个 token,甚至更慢。先别急着怪模型,大部分情况下调几个参数就能快 5-10 倍。这篇帮你一步步排查和解决。
第一步:找到慢的原因
Gemma 4 慢通常就这五个原因,挨个排查。
原因一:CPU 在跑,GPU 在看
这是最常见的速度杀手。模型跑在 CPU 上,GPU 完全没用上,但你可能根本没发现。
怎么检查:
# Mac:看 GPU 有没有在干活
sudo powermetrics --samplers gpu_power -n 1
# NVIDIA:利用率应该 > 0%
nvidia-smi
# AMD:同理
rocm-smi如果推理时 GPU 利用率一直是 0%,那就是在用 CPU 跑。先解决这个,其他都是白搭。
原因二:量化选错了
不同量化对速度的影响非常大:
| 量化格式 | 文件大小 (12B) | 速度 | 质量 | 适合场景 |
|---|---|---|---|---|
| Q4_K_M | ~7 GB | 最快 | 不错 | 日常使用 |
| Q5_K_M | ~8.5 GB | 快 | 更好 | 对质量有要求 |
| Q6_K | ~10 GB | 中等 | 很好 | 平衡选择 |
| Q8_0 | ~13 GB | 慢 | 接近原始 | 对质量敏感的任务 |
| FP16 | ~24 GB | 最慢 | 原始质量 | 显存充足才用 |
| IQ4_XS | ~6 GB | 最快 | 可接受 | 显存紧张 |
如果你在跑 Q8 或 FP16 还嫌慢,换成 Q4_K_M 试试。质量差别在大部分任务上感知不到,但速度差别是真的大。各量化等级的详细对比看 GGUF 量化指南。
原因三:上下文开太长了
Gemma 4 支持 256K 上下文,但上下文越长推理越慢,而且不是线性的:
| 上下文长度 | 相对速度 | 显存占用 (12B Q4) |
|---|---|---|
| 2K | 1.0x(基准) | ~7 GB |
| 8K | ~0.9x | ~8 GB |
| 32K | ~0.7x | ~12 GB |
| 128K | ~0.4x | ~20 GB |
| 256K | ~0.25x | ~30 GB+ |
解决方法: 根据实际需要设上下文长度:
# Ollama:限制上下文
ollama run gemma4:12b --ctx-size 8192
# llama.cpp
./llama-server -m model.gguf -c 8192
# 不是真需要 256K 就别开 256K原因四:KV 缓存膨胀
KV 缓存存的是注意力信息,对话越长缓存越大,吃显存还拖速度。
解决方法: 定期开新对话,或者量化缓存:
# llama.cpp:量化 KV 缓存
./llama-server -m model.gguf -c 8192 --cache-type-k q8_0 --cache-type-v q8_0
# 量化后的 KV 缓存省显存,质量损失很小原因五:批处理大小不对
如果在做推理服务,批处理参数不对会严重影响吞吐:
# vLLM:调整批处理
python -m vllm.entrypoints.openai.api_server \
--model google/gemma-4-12b-it \
--max-num-batched-tokens 4096 \
--max-num-seqs 8各平台优化
Mac(Apple Silicon)
Mac 上性能完全取决于 Metal GPU 加速是否正常:
# 检查 Metal 支持
system_profiler SPDisplaysDataType | grep Metal
# Ollama 在 Apple Silicon 上自动用 Metal
# 如果还是慢,查内存压力:
memory_pressure
# llama.cpp 确保开启 Metal
cmake -B build -DGGML_METAL=ON
cmake --build build
# M 系列芯片推荐设置
./llama-server -m model.gguf -ngl 999 -c 8192| Mac 机型 | 统一内存 | 12B Q4 速度 | 备注 |
|---|---|---|---|
| M1 8GB | 8GB | ~12 tok/s | 能用但紧张 |
| M1 Pro 16GB | 16GB | ~18 tok/s | 舒服 |
| M2 Pro 16GB | 16GB | ~22 tok/s | 日常主力 |
| M3 Pro 18GB | 18GB | ~25 tok/s | 甜点配置 |
| M3 Max 36GB | 36GB | ~30 tok/s | 能跑 27B Q4 |
| M4 Max 48GB | 48GB | ~35 tok/s | 什么都能跑 |
Mac 小贴士: 跑大模型前关掉 Chrome 和 Docker。Apple Silicon 的 CPU 和 GPU 共享内存,没有独立显存池。
Windows(NVIDIA CUDA)
# 确认 CUDA 在用
ollama ps
# Windows 常见问题:电源设置
# 改成「高性能」模式
# 笔记本在「平衡」模式下 GPU 会疯狂降频
# llama.cpp Windows 编译
cmake -B build -DGGML_CUDA=ON
cmake --build build --config ReleaseWindows 小贴士: 把模型目录加到 Windows Defender 排除列表。实时扫描会扫每次文件读取,严重拖慢速度:
# PowerShell(管理员)
Add-MpPreference -ExclusionPath "C:\Users\你的用户名\models"Linux(NVIDIA 或 AMD)
# NVIDIA:开启持久模式
sudo nvidia-smi -pm 1
# 设置 GPU 最大性能
sudo nvidia-smi -ac 1215,1410 # 具体值看你的 GPU
# AMD:确认 ROCm 正常
rocm-smi快速加速清单
按这个清单过一遍:
1. [ ] GPU 加速在工作(不是 CPU 回退)
2. [ ] 在用 Q4_K_M 量化(除非对质量有极高要求)
3. [ ] 上下文长度设成实际需要的(不是默认 256K)
4. [ ] KV 缓存已量化(--cache-type-k q8_0)
5. [ ] Flash Attention 已开启(如果框架支持)
6. [ ] 关了吃内存的后台程序
7. [ ] 电源设置为「高性能」(笔记本)
8. [ ] 装了最新驱动有些「慢」是正常的
有时候 Gemma 4 慢是预期行为:
- 首 token 延迟:第一个 token 总是慢(在处理输入),这是正常的
- 超长输入:处理 10 万 token 的输入,不管怎样都需要时间
- 27B 跑在 16GB 上:能跑但勉强,考虑换 12B
- 纯 CPU 推理:没有 GPU 就是 1-5 tok/s,这是 CPU 跑 LLM 的现实
如果不只是速度问题,还遇到了崩溃或报错,看看故障排除指南,有 OOM、GPU 检测等各种问题的解决方案。
下一步
- 不确定硬件够不够? 看 硬件需求指南 了解最低和推荐配置
- 不知道选多大的模型? 看 Gemma 4 模型选择指南 根据硬件选型号
- 想了解量化? 看 GGUF 量化指南 有详细对比
加速优化说到底就是把基础搞对。解决 CPU 回退、选对量化、设合理的上下文长度——这三件事搞定,90% 的速度问题就解决了。



