回复一个字一个字往外蹦——生成速度过慢的提速清单
先量化问题
跑一次 Benchmark 看真实数据:
| Benchmark 结果 | 体感 |
|---|---|
| < 5 token/s | 几乎逐字蹦跶,完全不能用 |
| 5~10 token/s | 几秒一句话,勉强可用 |
| 10~20 token/s | 日常流畅 |
| > 20 token/s | 和云 AI 无异 |
提速清单(按效果从大到小)
1. 换更小的模型(效果最大)
7B → 4B → 3B → 2B → 1B。参数量每减半,速度大致翻倍。这是最有效的单一变量。
2. 降量化档位
Q4 → Q3 → Q2。每降一档体积缩小约 20~30%,速度提升 20~50%。质量损失在 Q3 以上基本感知不到,Q2 开始明显。
3. 检查 GPU offload
- iOS:设置里确认 Metal GPU offload 已开启
- 安卓:如果 Vulkan 不生效,设 num_gpu_layers = 0 纯 CPU 跑,或者手动试 10 / 20 / 30 找到最大值
- 可以先把 GPU offload 关掉跑一次,再开起来跑一次,对比两次 Benchmark
4. 减少上下文长度
context length 8192 → 4096 → 2048。虽然上下文长度主要影响长对话速度衰减,但缩短后基准速度也会有小幅提升。
5. 清理后台
大型浏览器标签页、游戏后台、相机预览等都是内存大户。每清理一次后台,Benchmark 会有小幅提升。
6. 开新会话
长对话越来越慢是正常现象。 如果当前会话已经聊了几十轮,直接开新会话比什么优化都管用。
7. 调 CPU 线程数
num_threads 设为设备物理核心数。如果手机过热降频,减到核心数的一半。
速度已经是硬件上限怎么办
Benchmark 跑到设备能达到的极限(比如 iPhone 17 Pro 上 7B Q4 模型只有 12 token/s),那就只能接受。本地推理的本质 trade-off:隐私 / 离线 换 质量 / 速度 / 模型规模。
如果本地模型的能力已经满足你的日常需求,速度就不是问题。如果实在需要 7B+ 模型的能力 + 15+ token/s 的速度,可能需要一台 iPad Pro 或桌面端 Ollama 方案。