Appearance
Speculative Decoding
用一个快但可能"糊涂"的小模型去"猜",用一个慢但精确的大模型去"验"——这就是 Speculative Decoding。它是当前最实用的 LLM 推理加速技术,在不损失任何质量的前提下实现 2-3x 速度提升。
Overview
Speculative Decoding(推测解码,也称 Speculative Execution)是一种利用大模型和小模型的级联来加速自回归生成的技术。核心思想是:小模型生成速度快但可能不准确,大模型准确但生成速度慢——让小模型先"猜"几个 token,大模型一次性验证这些猜测,接受部分、拒绝部分、然后继续。
关键特性:Speculative Decoding 是无损失的——最终输出分布与单独使用大模型完全相同。
How It Works
核心流程
1. 小模型(Draft Model)快速生成 K 个 token 的序列:[d1, d2, d3, ...]
2. 大模型(Target Model)一次性对这 K 个 token 进行并行验证
3. 从第一个不匹配的位置开始重新生成
4. 重复步骤 1-3接受/拒绝机制
对于第 i 个猜测 token:
如果 draft 模型的预测与 target 模型的预测一致 → 接受
如果不一致 → 从 target 模型的分布中重新采样,并停止验证后续猜测关键观察:即使 draft 模型猜错了,我们也获得了一个来自 target 模型的真正 token ——这是无损失的关键。
加速比分析
加速比取决于两个因素:
Speedup ≈ α / (1 - β)
α = draft 模型速度 / target 模型速度 → 小模型越快越好
β = draft 模型的接受率 → 小模型越准越好实际数据:
- 小模型速度通常是大模型的 3-5 倍
- 接受率通常在 60-80%
- 实际加速:2-3x
Draft Model Strategies
| 策略 | Draft 模型 | 优点 | 缺点 |
|---|---|---|---|
| 独立小模型 | 专门训练的小号模型(如 Llama 68M) | 接受率最高 | 需要额外训练和存储 |
| 同模型小版本 | 目标模型的小版本(如 7B → 1B) | 兼容性好 | 仍需额外资源 |
| 自拆解 | 目标模型本身的早期层 | 无需额外模型 | 接受率较低 |
| Medusa / Lookahead | 学习多 token 头预测 | 无需单独 draft 模型 | 训练复杂 |
Medusa: 无需 Draft 模型的方案
Medusa 在目标模型上增加辅助头,同时预测未来多个 token:
标准 Transformer: 输出 hidden → 一个 lm_head → 一个 token
Medusa: 输出 hidden → 多个 medusa_head → 多个未来 token 预测好处:无需加载第二个模型,内存占用更少。
Implementation in Production
| 框架 | 支持情况 | 特点 |
|---|---|---|
| vLLM | ✅ 原生支持 | 支持多种 draft 策略,包括模型级联和自拆解 |
| TensorRT-LLM | ✅ 原生支持 | NVIDIA GPU 上最优化的实现 |
| llama.cpp | ✅ 原生支持 | 端侧/本地部署的标准方案 |
| TGI (Hugging Face) | ✅ 原生支持 | 生产级服务器支持 |
| SGLang | ✅ 原生支持 | 高性能实现 |
配置示例(vLLM)
python
from vllm import LLM
llm = LLM(
model="meta-llama/Llama-2-70b",
speculative_model="meta-llama/Llama-2-7b", # draft 模型
num_speculative_tokens=5, # 每次猜测 5 个 token
)Limitations
| 限制 | 说明 |
|---|---|
| 内存开销 | 需要同时加载两个模型(或至少更多的参数) |
| 小批量效果差 | 批量大时(batch size > 1)加速效果下降 |
| 短输出效果差 | 输出 token 数很少时,启动开销占比高 |
| 任务依赖 | 对于难度高的任务,draft 模型接受率会下降 |
Why It Matters
- 唯一无损失的加速方案:与量化、知识蒸馏等会影响质量的方法不同,Speculative Decoding 保证输出分布完全一致
- 线性复杂度的突破:在 Transformer 的自回归生成线性复杂度局限下,这是最实用的加速路径
- 生产环境必备:vLLM、TensorRT-LLM 等所有主流框架都已原生支持
- 与其他技术正交:可以与量化、并行推理、内存优化等技术同时使用
Relationships
- 推理基础:Model Inference & Deployment — 推理优化的核心技术之一
- 量化关联:Model Quantization — 可以与量化结合使用,如 QLoRA + Speculative Decoding
- 并行推理:与 Tensor 并行、Pipeline 并行等技术正交
- 架构创新:Mixture of Experts — MoE 模型的稀疏激活特性与 Speculative Decoding 有协同效应
- 工具实现:vLLM、llama.cpp、TensorRT-LLM 均已原生支持
Open Questions
- 当批量大时(batch size > 8),Speculative Decoding 的加速效果如何保持?是否需要新的算法变体?
- 多模态生成(图文混合)中的 Speculative Decoding 是否可行?图像 token 和文本 token 的猜测策略如何设计?
- 在端侧设备上,如何在有限内存中实现高效的 draft 策略?
- 动态调整猜测长度:根据当前任务难度和历史接受率动态调整每次猜测的 token 数量?
Sources
Fast Inference from Transformers via Speculative Decoding (Leviathan et al., Google, 2022)
Accelerating Large Language Model Decoding with Speculative Sampling (Chen et al., DeepMind, 2023)
Medusa: Simple LLM Inference Acceleration Framework with Multiple Decoding Heads (Cai et al., 2024)
Large Language Model (LLM) — 大语言模型的核心定义、技术原理与发展历程