Speculative Decoding(推测解码/投机推断)深度全景解析
技术日报 2026-04-01
今日主题:Speculative Decoding(推测解码/投机推断)深度全景解析
摘要
Speculative Decoding(推测解码,又称投机推断/投机解码)是当前 LLM 推理加速领域最重要的技术范式之一。它通过"小模型快速起草 + 大模型并行验证"的两阶段框架,在数学上严格保证输出分布无损的前提下,将大模型的推理速度提升 2~6.5 倍。本文从数学原理、算法细节、变体全景、工程落地到最新 SOTA(EAGLE-3,NeurIPS 2025)进行全面深度解析。
一、背景与动机:自回归解码的性能瓶颈
1.1 串行生成的根本问题
大语言模型的标准推理是逐 token 自回归生成:
$$x_{t+1} \sim p(\cdot \mid x_1, x_2, \ldots, x_t)$$
每生成一个 token,必须完整执行目标模型一次前向传播。对于 70B 级别的大模型,这意味着:
| 问题类型 | 具体表现 |
|---|---|
| 内存带宽瓶颈 | 每次前向传播需将数百 GB 模型权重从 HBM 加载到计算单元,每次仅产出 1 个 token |
| 串行依赖 | $x_{t+1}$ 依赖 $x_t$,无法并行化 token 生成 |
| 计算/IO 比失衡 | 单序列推理(batch=1)时,算术强度极低,GPU 利用率不足 10% |
以 H100 GPU 上的 Llama-3.1-70B 为例,单 token 生成延迟约 14ms,而 1000 个 token 的完整回答就需要 14 秒——这对用户体验来说完全不可接受。
1.2 关键洞察:并行验证"免费"
Transformer 的一个重要特性:单次前向传播处理 k 个 token 的延迟 ≈ 处理 1 个 token 的延迟(在内存带宽瓶颈区域)。
核心想法:如果能提前猜测出后续若干 token,然后让大模型一次性并行验证,就可以在一次大模型调用中产出多个 token!
这就是 Speculative Decoding 的诞生动机。
二、核心原理:Draft-then-Verify 两阶段框架
2.1 基本框架
Speculative Decoding 使用两个模型协同工作:
┌─────────────────────────────────────────────────────────┐
│ Speculative Decoding │
│ │
│ Draft Model (q): 小模型,速度快,生成候选 token 序列 │
│ Target Model (p): 大模型,速度慢,并行验证候选 token │
│ │
│ 典型配对: │
│ Draft = 68M 辅助头, Target = LLaMA-3.1-8B │
│ Draft = 7B Chinchilla, Target = 70B Chinchilla │
└─────────────────────────────────────────────────────────┘
2.2 两篇奠基论文(2023,独立发现)
| 维度 | Leviathan et al.(Google) | Chen et al.(DeepMind) |
|---|---|---|
| 标题 | Fast Inference from Transformers via Speculative Decoding | Accelerating LLM Decoding with Speculative Sampling |
| arXiv | 2211.17192 | 2302.01318 |
| 会议 | ICML 2023 Oral | DeepMind Tech Report |
| 核心术语 | Speculative Decoding | Speculative Sampling |
| 草稿长度参数 | γ(gamma) | K |
| 验证目标 | T5-XXL(11B) | Chinchilla 70B |
| 实测加速比 | 2–3× | 2–2.5× |
两篇论文独立提出了本质上相同的思想,均严格证明了算法的无损性。
2.3 完整算法伪代码
def speculative_decoding(prefix, draft_model, target_model, N, gamma):
"""
参数:
prefix: 已有上下文 token 列表
draft_model: 小模型(分布 q)
target_model: 大模型(分布 p)
N: 目标生成 token 总数
gamma: 每轮草稿长度(通常 4-8)
返回:
生成序列(分布与直接使用 target_model 完全等价)
"""
output = list(prefix)
while len(output) < len(prefix) + N:
# ══════════════════════════════════════════════
# PHASE 1: DRAFT — 小模型自回归生成 gamma 个候选
# ══════════════════════════════════════════════
draft_tokens = []
draft_probs = []
x = list(output)
for _ in range(gamma):
q_dist = draft_model(x) # 小模型完整词表分布
t = sample(q_dist) # 从 q 采样
draft_tokens.append(t)
draft_probs.append(q_dist)
x.append(t)
# ══════════════════════════════════════════════
# PHASE 2: VERIFY — 大模型一次并行前向传播
# 输入: output + draft_tokens(长度 gamma+1)
# 输出: 每个位置的完整词表分布(共 gamma+1 个)
# ══════════════════════════════════════════════
target_probs = target_model(output + draft_tokens)
# ══════════════════════════════════════════════
# PHASE 3: ACCEPT / REJECT — Modified Rejection Sampling
# ══════════════════════════════════════════════
all_accepted = True
for i in range(gamma):
x_i = draft_tokens[i] # 草稿采样的 token
q_xi = draft_probs[i][x_i] # 草稿模型对 x_i 的概率
p_xi = target_probs[i][x_i] # 大模型对 x_i 的概率
alpha_i = min(1.0, p_xi / q_xi) # 接受概率
if random.uniform(0, 1) < alpha_i:
output.append(x_i) # ✅ 接受草稿 token
else:
# ❌ 拒绝:从残差分布重新采样
# p'(x) = normalize(max(0, p(x) - q(x)))
p_adjusted = normalize(relu(target_probs[i] - draft_probs[i]))
output.append(sample(p_adjusted))
all_accepted = False
break
# 若所有 gamma 个 token 全部接受,额外从大模型采样最后一个
if all_accepted:
output.append(sample(target_probs[gamma]))
return output
流程图:
输入: prefix [x₀, x₁, ..., xₜ]
│
┌─────▼────────────────────────────────────┐
│ DRAFT(小模型) │
│ 自回归生成 γ 个草稿 token: │
│ x̃₁ ~ q(·|prefix) │
│ x̃₂ ~ q(·|prefix, x̃₁) │
│ ... │
│ x̃ᵧ ~ q(·|prefix, x̃₁,...,x̃ᵧ₋₁) │
└─────┬────────────────────────────────────┘
│ γ 个候选 token
┌─────▼────────────────────────────────────┐
│ VERIFY(大模型) │
│ 一次并行前向传播: │
│ 输入: [prefix, x̃₁, x̃₂,..., x̃ᵧ] │
│ 输出: p₁, p₂,..., pᵧ, pᵧ₊₁ │
└─────┬────────────────────────────────────┘
│
┌─────▼────────────────────────────────────┐
│ ACCEPT/REJECT(逐 token 判断) │
│ 对 i = 1,...,γ: │
│ αᵢ = min(1, p(x̃ᵢ)/q(x̃ᵢ)) │
│ r ~ U(0,1) │
│ if r < αᵢ: ✅ 接受 x̃ᵢ │
│ else: ❌ 从 p'(x) 采样,break │
└─────┬────────────────────────────────────┘
│ 本轮产出 1 ~ γ+1 个 token
└──────► 更新 prefix,进入下一轮
三、无损加速的数学证明
3.1 为什么 Speculative Decoding 是"无损"的?
这是 Speculative Decoding 最重要的性质,也是它能被大规模工业部署的根本原因。
定理:使用 Modified Rejection Sampling,最终输出 token 的分布精确等于 $p$(目标大模型)的分布。
证明(单 token 情形):
设输出 token 为 $t$,有两种来源:
情况一:接受草稿 token(草稿模型采样到 $t$,且被接受)
$$P(\text{accept } t) = q(t) \cdot \min\left(1, \frac{p(t)}{q(t)}\right) = \min(q(t), p(t))$$
情况二:拒绝后从残差分布重采样
$$P(\text{resample } t) = \underbrace{\left(1 - \sum_x \min(p(x), q(x))\right)}_{\text{拒绝概率}} \cdot \frac{\max(0, p(t)-q(t))}{1 - \sum_x\min(p(x),q(x))} = \max(0, p(t)-q(t))$$
合并两种情况:
$$P(\text{output}=t) = \min(q(t),p(t)) + \max(0,p(t)-q(t))$$
利用恒等式 $\min(a,b)+\max(0,a-b)=a$:
$$\boxed{P(\text{output}=t) = p(t)} \quad \checkmark$$
结论:无论草稿模型 $q$ 质量如何,输出分布严格等于目标模型 $p$。这是无损加速的严格数学保证。
3.2 单 token 接受率 α
$$\alpha = \mathbb{E}{x \sim q}\left[\min\left(1, \frac{p(x)}{q(x)}\right)\right] = \sum_x \min(p(x), q(x)) = 1 - D{\text{TV}}(p, q)$$
- $\alpha$ 等于 $p$ 和 $q$ 分布的重叠面积(Total Variation 距离的补集)
- $p$ 和 $q$ 越相似,$\alpha$ 越接近 1,接受率越高,加速效果越好
3.3 理论加速比公式
设草稿长度为 $\gamma$,单位置接受概率为 $\alpha$,则一轮中期望产出 token 数:
$$E[\text{tokens per round}] = \frac{1 - \alpha^{\gamma+1}}{1 - \alpha}$$
设大模型单次前向传播时间为 $c$,草稿模型单个 token 生成时间为 $t_s$,则:
$$\boxed{\text{Speedup} = \frac{E[\text{tokens per round}] \cdot c}{\gamma \cdot t_s + c} = \frac{\dfrac{1-\alpha^{\gamma+1}}{1-\alpha} \cdot c}{\gamma \cdot t_s + c}}$$
理想极限($t_s \ll c$,$\gamma \to \infty$):
$$\text{Speedup}_{\max} = \frac{1}{1-\alpha}$$
当 $\alpha = 0.8$ 时,理论加速上限 $= 5\times$。
| 接受率 α | 理论加速上限 | 实际典型加速比 |
|---|---|---|
| 0.50 | 2.0× | 1.5× |
| 0.70 | 3.3× | 2.0× |
| 0.80 | 5.0× | 2.5× |
| 0.90 | 10.0× | 4.0× |
DeepMind 实验验证(Chinchilla 70B,K=4):
| 任务 | 接受率 α | 理论加速 | 实测加速 |
|---|---|---|---|
| HumanEval(代码) | 0.80 | 2.65× | 2.46× |
| XSum(摘要) | 0.62 | 2.05× | 1.92× |
四、变体全景:从经典到 SOTA
Speculative Decoding 的变体按草稿来源分为三大流派:
4.1 独立 Draft 模型派
经典方法(Leviathan / Chen,2023)
- 独立的小语言模型作为草稿模型
- 需要草稿模型与目标模型词表一致
- 加速比:2–3×
SpecInfer(ASPLOS 2024,arXiv:2305.09781)
- 创新:多个 Draft 模型协同生成,候选组织为 Token Tree(令牌树)
- Token Tree Attention:特殊树形注意力掩码,大模型单次前向传播验证整棵树
- 加速比:分布式推理 1.5–2.8×,卸载推理 2.6–3.5×
EAGLE-1(ICML 2024,arXiv:2401.15077)
- 创新:在特征空间(倒数第二层特征向量)进行自回归外推,而非 token 空间
- 轻量级 1 层 LM 作为草稿头,与目标模型分布更对齐
- 加速比:~3.0×(13B),比 Medusa 快 1.6×,比 Lookahead 快 2×
EAGLE-2(EMNLP 2024,arXiv:2406.16858)
- 创新:引入动态草案树(Dynamic Draft Tree),用置信度分数动态剪枝
- 高置信度路径深扩,低置信度路径早停
- 加速比:~4.0×(13B),比 EAGLE-1 快 1.4×
EAGLE-3(NeurIPS 2025,arXiv:2503.01840)⭐ 当前 SOTA
- 创新:三重改进
- 放弃特征预测约束,改用直接 token 预测
- 引入训练时测试模拟(Training-Time Test):训练时模拟完整推测解码流程
- 多层特征融合:融合多个中间层特征,不再仅依赖顶层
- 加速比:最高 6.5×(单卡),批量吞吐量提升 1.38×
- 数据扩展性强:训练数据增大时性能持续提升(EAGLE-1/2 有瓶颈)
- 已集成:vLLM、SGLang、TensorRT-LLM、NeMo 全部主流框架
EAGLE 系列加速比演进:
EAGLE-1 (3×) → EAGLE-2 (4×) → EAGLE-3 (5.6×/6.5×)
↑ICML'24 ↑EMNLP'24 ↑NeurIPS'25
4.2 附加模块派(无独立 Draft 模型)
Medusa(ICML 2024,arXiv:2401.10774)
- 创新:在目标模型主干上附加 K 个 Medusa 头,并行预测未来第 1、2、...K 位置的 token
- Tree Attention:笛卡尔积形式的候选树,单次前向传播并行验证
- 两种模式:Medusa-1(主干冻结,≥2.2×)/ Medusa-2(联合微调,2.3–3.6×)
- 特点:简单易部署,无独立草稿模型
Hydra(arXiv:2402.05109)
- Medusa 的改进版:各头引入顺序依赖(后一个头的预测考虑前一个头的结果)
- 加速比:~2.7×(比 Medusa 快 1.31×)
4.3 无模型派(Training-Free)
PLD(Prompt Lookup Decoding)
- 创新:从输入 Prompt 中查找 n-gram 作为草稿,完全无需任何模型
- 核心函数:
find_candidate_pred_tokens(input_ids, max_ngram_size=3, num_pred_tokens=10) - 加速比:~2.4×(文档摘要/问答)
- 已集成:HuggingFace
prompt_lookup_num_tokens参数,vLLMspeculative_model="[ngram]"
REST(NAACL 2024,arXiv:2311.08252)
- 创新:用 FAISS 索引的外部数据存储替代 Draft 模型,检索最近邻续写作为草稿
- 加速比:1.62–2.36×(代码生成)
Draft & Verify(ACL 2024,arXiv:2309.08168)
- 创新:同一模型的浅层快速起草,完整模型验证(层跳过策略)
- 加速比:~1.99×(LLaMA-2),零额外内存
Lookahead Decoding(arXiv:2402.02057)
- 受 Jacobi 迭代启发,维护固定大小窗口并行猜测多个未来 token
- 加速比:MT-bench 最高 1.8×,代码多卡可达 4×
SpecTr(NeurIPS 2023,arXiv:2310.15141)
- 将草稿选择形式化为最优传输(OT)问题,理论最优接受率
- 相对标准 Spec Decoding 再提升 1.37×,端到端 ~2.13×
4.4 变体对比总览表
| 方法 | 年份 | 草稿来源 | 加速比 | 需要训练 | 特点 |
|---|---|---|---|---|---|
| 经典 Spec Decoding | 2023 | 独立小模型 | 2–3× | 需要 | 理论基础,标准范式 |
| SpecInfer | 2023 | 多 Draft 模型树 | 1.5–3.5× | 需要 | 树形验证 |
| SpecTr | 2023 | Draft 模型 + OT | ~2.1× | 需要 | 理论最优接受率 |
| REST | 2023 | FAISS 检索库 | 1.6–2.4× | 不需要 | 即插即用 |
| PLD | 2023 | Prompt n-gram | ~2.4× | 不需要 | 零成本 |
| Medusa | 2024 | 附加解码头 | 2.2–3.6× | 需要(头) | 无独立 Draft |
| EAGLE-1 | 2024 | 特征空间外推 | ~3.0× | 需要(轻量) | 分布对齐好 |
| Lookahead | 2024 | Jacobi 窗口 | 1.8–4× | 不需要 | 完全免模型 |
| Hydra | 2024 | 顺序依赖多头 | ~2.7× | 需要(头) | 比 Medusa 精度高 |
| EAGLE-2 | 2024 | 动态草案树 | ~4.0× | 需要(轻量) | 动态剪枝 |
| Draft & Verify | 2024 | 同模型跳层 | ~2.0× | 不需要 | 零额外内存 |
| Ouroboros | 2024 | 短语级+KV复用 | ~3.9× | 不需要 | 训练自由 |
| EAGLE-3 ⭐ | 2025 | 多层融合直预 | ~6.5× | 需要(轻量) | 当前 SOTA |
五、技术演进路线图
经典 Spec Decoding(2023)
│
├── 独立 Draft 模型方向
│ ├── SpecInfer → 多 Draft + 树形验证(ASPLOS'24)
│ ├── SpecTr → OT 最优草案选择(NeurIPS'23)
│ └── EAGLE-1 → 特征预测(ICML'24)
│ └── EAGLE-2 → 动态草案树(EMNLP'24)
│ └── EAGLE-3 ⭐ → 多层融合 + 训练时测试(NeurIPS'25)
│
├── 无 Draft 模型(Training-Free)
│ ├── PLD → Prompt n-gram 查找
│ ├── REST → 外部 FAISS 检索库(NAACL'24)
│ ├── Lookahead → Jacobi 迭代窗口
│ └── Draft & Verify → 同模型跳层(ACL'24)
│
└── 附加模块(头部微调)
├── Medusa → 多头独立预测 + Tree Attention(ICML'24)
├── Hydra → 顺序依赖多头(改进 Medusa)
└── Ouroboros → 短语级 KV 缓存复用(EMNLP'24)
六、工程实践:主流框架中的实现
6.1 vLLM 实现
vLLM v1 引擎支持多种推测解码策略:
① 独立 Draft 模型
from vllm import LLM
llm = LLM(
model="meta-llama/Meta-Llama-3.1-70B-Instruct",
speculative_model="ibm-fms/llama3-70b-accelerator",
num_speculative_tokens=5,
tensor_parallel_size=4,
speculative_draft_tensor_parallel_size=1, # 草稿模型单卡
)
② N-Gram(Prompt Lookup Decoding)
llm = LLM(
model="facebook/opt-6.7b",
speculative_model="[ngram]",
num_speculative_tokens=5,
ngram_prompt_lookup_max=4,
ngram_prompt_lookup_min=1,
)
③ EAGLE(CLI 方式)
vllm serve meta-llama/Meta-Llama-3.1-8B-Instruct \
--speculative-model lmsys/sglang-EAGLE-llama3.1-instruct-8B \
--num-speculative-tokens 5
vLLM 实测加速比:
| 场景 | 方法 | 加速比 |
|---|---|---|
| 对话(ShareGPT) | Draft Model | ~1.5× |
| 文档摘要(CNN/DailyMail) | N-Gram Prompt Lookup | ~2.8× |
| 结构化 JSON 生成 | EAGLE-3 + 引导解码 | ~2× |
⚠️ 注意:高 QPS 场景下,额外草稿开销可能降低收益。vLLM 正在开发动态推测解码,根据系统负载自动调整草稿 token 数量。
6.2 SGLang 实现
SGLang 是 EAGLE-3 最早落地的推理框架,重点支持 EAGLE 系列。
EAGLE-3 配置:
python3 -m sglang.launch_server \
--model meta-llama/Meta-Llama-3.1-8B-Instruct \
--speculative-algorithm EAGLE3 \
--speculative-draft-model-path jamesliu1/sglang-EAGLE3-Llama-3.1-Instruct-8B \
--speculative-num-steps 3 \
--speculative-eagle-topk 4 \
--speculative-num-draft-tokens 16 \
--mem-fraction-static 0.7
SGLang 性能数据(LLaMA-3.1-8B,MT-bench,H100):
| 方法 | 吞吐量(tokens/s) | 加速比 |
|---|---|---|
| SGLang 基线(无推测) | 158.34 | 1.0× |
| SGLang + EAGLE-2 | 244.10 | 1.54× |
| SGLang + EAGLE-3 | 373.25 | 2.36× |
内存受限的保守配置(防 OOM):
--speculative-num-steps 3
--speculative-eagle-topk 1
--speculative-num-draft-tokens 4
--cuda-graph-max-bs 2
--mem-fraction-static 0.5
--max-running-requests 4
6.3 TensorRT-LLM 实现
NVIDIA TRT-LLM 提供两种架构:
| 实现架构 | 特点 | 适用场景 |
|---|---|---|
| 单模型架构(One-Model) | 目标模型与草稿模型共享 CUDA 图,性能最优 | 低延迟生产环境 |
| 双模型架构(Two-Model) | 独立 CUDA 图,功能更灵活 | 功能覆盖广 |
支持算法:EAGLE / EAGLE-3、N-Gram、MTP(Multi-Token Prediction)、Medusa
TRT-LLM + EAGLE-3 接受率数据(H200):
| 数据集 | 模型 | 接受长度 |
|---|---|---|
| JSON Mode Eval | LLaMA 3.1 8B(TP1) | 2.86 |
| JSON Mode Eval | LLaMA 3.3 70B(TP4) | 2.72 |
| JSON Schema Bench | LLaMA 3.1 8B(TP1) | 2.55 |
Llama 3.3 70B 整体吞吐量相比无推测解码可达 3× 提升。
6.4 HuggingFace Transformers(最简单上手)
from transformers import AutoModelForCausalLM, AutoTokenizer
# 目标模型
target_model = AutoModelForCausalLM.from_pretrained("facebook/opt-6.7b")
# 辅助/草稿模型
assistant_model = AutoModelForCausalLM.from_pretrained("facebook/opt-125m")
tokenizer = AutoTokenizer.from_pretrained("facebook/opt-6.7b")
inputs = tokenizer("你好,请介绍一下自己。", return_tensors="pt")
# 使用辅助生成(Speculative Decoding 的 HF 实现)
outputs = target_model.generate(
**inputs,
assistant_model=assistant_model,
do_sample=False, # 贪婪解码时加速效果最明显
max_new_tokens=200,
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
七、2025-2026 最新进展
7.1 EAGLE-3(NeurIPS 2025)
论文:arXiv:2503.01840(2025年3月发布,4月修订)
EAGLE-3 是当前推测解码的绝对 SOTA,三个核心改进:
-
放弃特征预测:EAGLE-1/2 依赖目标模型的顶层特征向量进行自回归外推。EAGLE-3 发现这一约束本身限制了模型容量,改为直接预测 token,突破了性能瓶颈。
-
训练时测试模拟(Training-Time Test):训练阶段完整模拟推测解码的接受/拒绝流程,让草稿模型真正学会"如何被接受",而不只是"如何预测下一个 token"。
-
多层特征融合:不再只用最后一层的特征,而是融合多个中间层的隐状态,获得更丰富的语义信息,同时使训练数据扩展效果更明显。
性能数据(2×RTX 3090,Vicuna 13B):
| 版本 | 加速比 |
|---|---|
| EAGLE-1 | 3.0× |
| EAGLE-2 | 4.0× |
| EAGLE-3 | 5.6× |
SGLang 框架,batch_size=64 时:吞吐量提升 1.38×
7.2 TAPS——任务感知推测解码(2026-03)
来源:AI研究前瞻公众号(2026-04-01)
TAPS(Task-Aware Proposal Distributions for Speculative Sampling)将任务信息融入草稿分布的构建,针对不同任务类型(代码生成、对话、翻译等)动态调整草稿模型的提议分布,进一步提升特定任务场景下的接受率。这代表了推测解码的下一个演进方向——从通用加速走向任务自适应加速。
7.3 SpecForge 生态(SGLang,2025-12)
SpecForge 是 SGLang 团队构建的草稿模型训练 + 部署一体化平台:
- SpecBundle:预训练的生产级草稿模型集合,开箱即用,可达约 4× 加速
- 支持 EAGLE 和 EAGLE-3 草稿头训练
- FSDP 分布式训练支持
- 2025 年 12 月正式发布 v0.2
7.4 MTP(Multi-Token Prediction)原生支持
DeepSeek-V3 在预训练时引入 MTP 辅助目标,使模型天然支持推测解码,无需额外草稿模型。vLLM 和 TRT-LLM 均已支持 MTP 推测解码路径,代表了"训练即加速"的新思路。
八、适用场景分析
适合 Speculative Decoding 的场景
| 场景 | 推荐方法 | 核心原因 |
|---|---|---|
| 文档摘要 / RAG | PLD(N-Gram) | 输出大量复制 prompt 内容,接受率极高 |
| 代码生成 / 补全 | EAGLE-3 | 语法高度规律,接受率 80%+ |
| 结构化输出(JSON/XML) | EAGLE-3 + 引导解码 | 格式固定,分布集中 |
| 指令跟随对话 | EAGLE-2/3 | 答题模式固定 |
| 低温度 / 贪婪解码 | 任意方法均有效 | 分布集中,易预测 |
| 长输出任务 | Draft Model | 分摊草稿构建固定开销 |
不适合 Speculative Decoding 的场景
| 场景 | 原因 |
|---|---|
| 高温度创意写作 | 高随机性导致草稿接受率极低(<30%),额外开销得不偿失 |
| 超高 QPS 在线服务 | 大 batch 下草稿模型本身成为瓶颈 |
| 极短输出任务(<20 token) | 固定开销占比大,加速比接近 1× |
| 频繁切换 prompt 风格 | 草稿模型难以快速适应,接受率波动大 |
工程实践关键点
- 草稿 token 数量 γ:通常 3–8 个最优,过多会导致后期接受率急剧下降
- 词表必须一致:Draft Model 与目标模型的 tokenizer 必须完全相同
- 显存规划:为草稿模型额外预留 KV Cache 空间,
--mem-fraction-static建议 0.5–0.7 - 草稿模型大小:同架构小 10× 量级效果更好(如 7B 配 68M EAGLE 头)
- 量化兼容:TRT-LLM 支持 FP8/INT8 量化草稿模型,进一步降低草稿推理开销
九、小结
Speculative Decoding 从 2023 年两篇同期论文奠基,到 2025 年 EAGLE-3 实现 6.5× 加速,已经形成了完整、成熟的技术生态:
- 理论层面:Modified Rejection Sampling 给出了严格的无损加速保证,接受率 = 分布重叠面积,是优雅的数学结论
- 算法层面:从线性草稿→树形草稿→动态草案树→多层特征融合,草稿质量持续提升
- 工程层面:vLLM、SGLang、TRT-LLM 全部原生支持,真正实现生产级落地
- 前沿方向:任务感知推测解码(TAPS)、MTP 原生支持、动态自适应草稿长度代表了下一阶段的演进方向
对于需要优化 LLM 推理延迟的团队,EAGLE-3 + SGLang/vLLM 是 2026 年首选的工程实践方案;而对于输入输出高度重叠的任务(RAG、摘要),PLD(N-Gram) 是零成本、即插即用的最优选择。
参考资料
- Fast Inference from Transformers via Speculative Decoding(arXiv:2211.17192) — Leviathan et al., Google, ICML 2023 Oral
- Accelerating Large Language Model Decoding with Speculative Sampling(arXiv:2302.01318) — Chen et al., DeepMind, 2023
- SpecInfer: Tree-based Speculative Inference and Verification(arXiv:2305.09781) — Miao et al., ASPLOS 2024
- Medusa: Simple LLM Inference Acceleration Framework(arXiv:2401.10774) — Cai et al., ICML 2024
- EAGLE-3: Scaling up Inference Acceleration via Training-Time Test(arXiv:2503.01840) — Li et al., NeurIPS 2025
- EAGLE GitHub Repository(SafeAILab/EAGLE)
- REST: Retrieval-Based Speculative Decoding(arXiv:2311.08252) — NAACL 2024
- Draft & Verify: Lossless LLM Acceleration via Self-Speculative Decoding(arXiv:2309.08168) — ACL 2024
- Hydra: Sequentially-Dependent Draft Heads for Medusa(arXiv:2402.05109)
- Lookahead Decoding: Break Sequential Dependency(arXiv:2402.02057)
- SpecTr: Fast Speculative Decoding via Optimal Transport(arXiv:2310.15141) — NeurIPS 2023
- Prompt Lookup Decoding(GitHub)
- Unlocking Efficiency in LLM Inference: A Comprehensive Survey(arXiv:2401.07851) — ACL 2024
- Speculative Decoding and Beyond: An In-Depth Survey(arXiv:2502.19732) — 2025
- vLLM Blog: How Speculative Decoding Boosts vLLM Performance by up to 2.8x
- SGLang Speculative Decoding Documentation
- TRT-LLM Tech Blog: Combining Guided Decoding and Speculative Decoding
- SpecForge GitHub(sgl-project/SpecForge)
- Google Research Blog: Looking Back at Speculative Decoding
- HuggingFace Blog: Assisted Generation
- [微信公众号·DeepTech深科技:投机解码被"投机"了!多猜一次,大模型推理速度再提升5倍(2026-03-06)]
- [微信公众号·AI研究前瞻:大模型推理加速与优化:任务感知推测解码,置信度路由(2026-04-01)]

浙公网安备 33010602011771号