推理优化边界:批处理、KV 管理与推测解码何时有效
1. 场景:每个优化都有适用区间
vLLM 快、KV 量化省、推测解码加速——这些结论都有边界。本文用第 1 篇的三本账,逐个算出"何时有效、何时无效",避免照搬参数翻车。配套的引擎实测见 13 章 vllm-principles、vllm-production-deployment 与 speculative-decoding。
2. continuous batching:摊薄带宽账
decode 每 token 读一遍全部权重,单请求下带宽是瓶颈。批处理让多个请求共享一次权重读取:
| batch | 70B FP16 每 token 权重读取 | 理论 TPOT 下限(3TB/s) |
|---|---|---|
| 1 | 140 GB | ~47 ms |
| 8 | 17.5 GB | ~5.8 ms |
| 64 | 2.2 GB | ~0.7 ms |
边界:batch 越大带宽摊得越薄,但显存(KV 按请求数增长)与调度开销上升。continuous batching 的价值在于:不需要等整批结束,请求动态进出,把"等效 batch"维持在较高水平。何时收益最大?请求到达越密集、每请求输出 token 越多,批处理效果越好;空闲时段(到达稀疏)则几乎无收益。量化判断:若单实例等效 batch < 4 且无法提高并发,升级带宽或换 MoE 比堆 batch 参数更有效。
3. KV 量化与前缀缓存:省显存账与首字延迟
- KV 量化(INT8/INT4):把第 1 篇 KV 公式里的 bytes 从 2 降到 1/0.5,省显存、省 KV 读取带宽,代价是精度。何时有效:长上下文/高并发下 KV 占比大(如 70B 32K 上下文 KV≈5.2GB,量化后≈1.3-2.6GB);短上下文下收益小。
- 前缀缓存(Prefix Caching):共享相同前缀的请求复用已算 KV,省的是重复的 prefill 算力。何时有效:系统提示词固定、RAG 共享文档前缀、多轮对话的既有上下文——命中率越高越值;每次前缀都不同的随机请求则几乎无效。站内 vllm-production-deployment 已实测 prefix caching 的首 token 收益,本文补边界:收益上限 = 重复 prefill 算力 / 总算力。
4. 推测解码:只有当验证快于自回归才划算
推测解码(speculative decoding)用草稿模型(小模型/单 token 预测)先猜 N 个 token,再让目标模型一次验证。何时有效,取决于两个时间:
直觉:验证一个 batch 的 token 与生成一个 token 的计算量相同但并行度更高(小 batch 下带宽受限时,验证批比逐 token 自回归更充分地利用带宽)。因此:
- 有效:目标模型大(decode 带宽瓶颈明显)、草稿模型命中率高(如代码/结构化文本)、小 batch(算力有余而带宽不足)。
- 无效或负收益:目标模型小(带宽本就不饱和)、草稿命中率低(验证全废)、大 batch 已把带宽摊薄(自回归已接近带宽极限,推测冗余)。
站内 speculative-decoding 篇有实测流程,本文给出决策公式:先测目标模型单 token 时延 与草稿命中率 ,若 低或 batch 已高,推测解码收益 <10% 就不值得接入。
5. 优化手段适用性速查
| 手段 | 省哪本账 | 有效条件 | 无效条件 |
|---|---|---|---|
| Continuous batching | 带宽账 | 到达密集、输出长 | 到达稀疏、等效 batch 低 |
| KV 量化 | 显存账+缓存带宽 | 长上下文/高并发 | 短上下文 |
| Prefix caching | prefill 算力账 | 前缀命中率高 | 前缀随机 |
| 推测解码 | decode 延迟 | 大模型+小 batch+命中率高 | 小模型/大 batch/命中率低 |
| 权重量化 | 显存账+权重带宽 | 精度可接受 | 精度敏感任务 |
6. 落地检查清单
- [ ] 先测当前等效 batch 与带宽利用率,再决定堆 batch 还是换优化手段
- [ ] KV 量化前先算 KV 占比(KV/总显存),占比 <10% 收益有限
- [ ] 前缀缓存按命中率评估,不盲目开启
- [ ] 推测解码用公式预判,接入前先测草稿命中率与单 token 时延
- [ ] 所有优化以第 1 篇三本账为基准复算,避免"优化了个寂寞"
方法参考:边界条件量化框架参考开源书稿《深入理解 AI Infra:量化分析与系统设计》(李博杰,Apache-2.0,bojieli.github.io/ai-infra-book);本文公式与边界推导为本站自行整理。