推测解码(深挖)
vLLM 推理引擎(深挖) 讲了怎么管理显存来提高吞吐量。还有一种完全不同的加速思路:用小模型”猜”下一个 token,再用大模型”验证”。 这就是推测解码。
为什么 AI 生成这么慢
AI 生成文本是”自回归”的——每次只生成一个 token。生成完一个,把结果加回输入,再生成下一个。100 个 token 的回答,需要跑 100 次前向传播。
每次前向传播,GPU 的计算单元大部分时间在”空闲”——在等显存里的数据搬过来。这是”内存带宽瓶颈”——不是算不过来,是数据搬不过来。
推测解码的思路:利用 GPU 的闲置算力,并行”猜”多个 token,大模型一次验证一堆。 1
怎么工作
-
小模型(草稿模型)快速生成。 用一个小模型(比如 100M 参数,跑得飞快)一次生成 K 个候选 token。K 通常取 3-8。
-
大模型(目标模型)一次验证。 把”前缀 + K 个候选 token”一起输入大模型。大模型做一次前向传播,同时计算这 K 个位置的正确 token 概率。
-
对齐检查。 逐个比对——小模型猜的第一个 token 和大模型认为的第一个 token 一样吗?一样就接受,继续比第二个。不一样就拒绝——用大模型的 token 替换,后续全部丢弃。
-
效果。 如果小模型猜对了 3 个 token,大模型一次前向传播就确认了 3 个 token。加速了 3 倍。如果小模型猜对了 0 个——没损失,大模型还是正常生成,只是浪费了一次验证。
关键:推测解码不改变输出质量。大模型验证后只接受自己认可的 token。最终输出的概率分布和正常生成完全一样。这是”无损加速”——质量不变,速度翻倍。
小模型怎么选
小模型不需要很强——只需要”在大多数情况下猜得差不多”。两种常见选择:
- 同家族的小版本。 Llama 4.1 8B 当草稿模型,Llama 4.1 70B 当目标模型。同架构、同词表,兼容性最好。
- 专门的草稿模型。 Medusa(2024 年)的思路:不额外训练一个小模型,而是在目标模型上加几个”预测头”——专门预测未来的 token 2。成本更低,不需要第二个模型。
实际效果
| 场景 | 加速比 | 说明 |
|---|---|---|
| 代码生成 | 1.5-2x | 代码的规律性强,小模型猜得准 |
| 中文对话 | 2-3x | 中文 token 的冗余度较高 |
| 英文写作 | 2-4x | 常见句式重复度高 |
| 数学推理 | 1-1.3x | 推理过程每个 token 都很关键,难猜 |
Benchmark 参考:在 HumanEval(编程)上,推测解码可提速 1.8x 且 Pass@1 零损失。在 MMLU 上提速约 1.5x。草稿模型接受率(draft acceptance rate)通常在 60-85%,是加速效果的核心指标 3。
2025-2026 年,vLLM 和 TensorRT-LLM 都内置了推测解码支持。一行配置就能开启:
vllm serve model --speculative-model draft-model
推测解码 vs 其他加速方法
| 推测解码 | 量化 | KV缓存优化 | |
|---|---|---|---|
| 加速原理 | 并行验证 | 降低精度 | 减少重复计算 |
| 质量损失 | 无 | 有 | 无 |
| 加速比 | 2-4x | 1.5-2x | 1.3-2x |
| 额外资源 | 需要小模型 | 不需要 | 不需要 |
三者可以叠加——量化 + KV 缓存优化 + 推测解码,综合加速 5-10 倍。
相关笔记
- vLLM 推理引擎(深挖) — vLLM 内置推测解码
- 模型量化(深挖) — 量化 + 推测解码可叠加
- 模型蒸馏(深挖) — 蒸馏出的小模型可作草稿模型
来源
- Leviathan et al., “Speculative Decoding”, 2023, https://arxiv.org/abs/2211.17192
- Cai et al., “Medusa”, 2024
注释
-
Leviathan et al., “Fast Inference from Transformers via Speculative Decoding”, 2023, https://arxiv.org/abs/2211.17192 ↩
-
Cai et al., “Medusa: Simple LLM Inference Acceleration Framework”, 2024 ↩
-
Leviathan et al., Speculative Decoding Benchmark, 2023 ↩
关联8
知识图谱局部图谱 · 点节点跳转