大模型原理之投机解码

摘要

投机解码(Speculative Decoding)是一种在不改变输出分布的前提下加速大模型自回归 Decode 阶段的推理优化。Decode 阶段逐 token 生成、受显存带宽限制(memory-bound),每步只产出一个 token 却要搬运全量权重。投机解码用一个低成本草稿模型抢先起草一串候选 token,再由目标模型一次前向并行验证整串候选,按概率匹配逐位接受、在拒绝处从修正分布重采样,从而将"验证 K 个 token"的开销压缩到近似"生成 1 个 token",同时保持输出分布不变,实现无损加速。通过案例演示、采样机制、草稿分类到工程落地,逐层讲透其原理与实证。

关键词:投机解码;拒绝采样;草稿模型;自投机;EAGLE;MTP;vLLM;SGLang

1 问题与动机

1.1 自回归串行与 memory-bound

大模型在 Decode 阶段逐 token 自回归生成文本,每一步都依赖上一步输出、无法并行,天然串行。更关键的是这一阶段受显存带宽 而非算力限制:模型每前进一步都要把全量权重从显存搬到计算单元,却只换回一个 token 的输出,搬运权重耗时远大于计算耗时。因此 Decode 处于典型的 memory-bound 状态,GPU 算力大量闲置 1。

1.2 核心洞察

两个直觉催生了投机解码。其一,生成中的大量 token 相当"好猜"------冠词、标点、常用短语都有明显的高概率答案,不值得让大模型逐位精算。其二,既然 Decode 受访存限制,让目标模型并行验证 K 个候选 token,与逐一生成单个 token 成本几乎相同------两者都要把权重读一遍。既然如此,不如一次搬完权重、一次多验证几个候选。

1.3 核心目标

投机解码承诺在不改变输出分布 的前提下加速推理,即无损加速 :同样的输出、更短的时间 1 2。

2 案例演示

为讲清机制,设定一段英文续写场景。目标模型 T 与草稿模型 D 共享同一词表,理想续写为 "the quick brown fox"。

2.1 草稿

草稿模型 D 基于当前前缀,快速自回归猜出 K=3 个候选 token,并给出各自的草稿概率:

x1=the (p=0.95),x2=quick (p=0.92),x3=brown (p=0.55) x_1=\texttt{the}\ (p=0.95),\quad x_2=\texttt{quick}\ (p=0.92),\quad x_3=\texttt{brown}\ (p=0.55) x1=the (p=0.95),x2=quick (p=0.92),x3=brown (p=0.55)

2.2 验证

目标模型 T 把这三个候选当作一个 batch,只做一次前向,同时算出三个位置的输出概率: q(the)=0.98q(\texttt{the})=0.98 q(the)=0.98、 q(quick)=0.89q(\texttt{quick})=0.89 q(quick)=0.89、 q(brown)=0.10q(\texttt{brown})=0.10 q(brown)=0.10。由于 Decode 访存受限,一次并行计算远快于逐 token 跑三次前向 1。

2.3 校验

对每个候选,按接受概率 r=min⁡(1, q/p)r=\min(1,\ q/p) r=min(1, q/p) 逐位判定:

r1≈min⁡ ⁣(1,0.980.95)=1.00,r2≈min⁡ ⁣(1,0.890.92)=0.97,r3≈min⁡ ⁣(1,0.100.55)=0.18 r_1\approx\min\!\big(1,\tfrac{0.98}{0.95}\big)=1.00,\quad r_2\approx\min\!\big(1,\tfrac{0.89}{0.92}\big)=0.97,\quad r_3\approx\min\!\big(1,\tfrac{0.10}{0.55}\big)=0.18 r1≈min(1,0.950.98)=1.00,r2≈min(1,0.920.89)=0.97,r3≈min(1,0.550.10)=0.18

前两个候选接受概率很高,大概率进入输出;第三个候选「brown」因草稿与目标分布分歧大(q 明显低于 p)、大概率被拒绝,校验在此截断。

2.4 重采样

在首个被拒绝的位置,从修正分布重新采样一个 token 补位。此例中位置 3 的目标分布里,草稿猜的「brown」(q=0.10)低于 p、处于被压低区域,而「fast」(q=0.62)出现概率高于 p,重采样大概率落在「fast」。于是最终累积为 "the quick fast",本轮结束。整个流程如图1 所示,接受与重采样细节如图2 所示。

图1 投机解码一轮流程

图2 接受与重采样细览

3 采样机制

投机解码的采样机制由三部分构成:逐位接受、拒绝截断与拒绝处重采样。它们共同保证草稿候选被规范地筛入输出,并维持输出分布不变。

3.1 接受规则与直觉

上一节的验证环节可以抽象成一条接受规则:只要草稿的概率没有明显超过目标模型 ,就接受它;一旦草稿过自信(p 明显大于 q),就按比例丢弃。形式化为接受概率 r=min⁡(1, q/p)r=\min(1,\ q/p) r=min(1, q/p) 1。

3.2 重采样分布保真

投机解码的"无损"由重采样这一步保证。在被拒绝的位置,从修正分布重新采样:

Presample(x) ∝ max⁡(0, q(x)−p(x)) P_{\text{resample}}(x)\ \propto\ \max\big(0,\ q(x)-p(x)\big) Presample(x) ∝ max(0, q(x)−p(x))

可以证明,这使每一步的边缘分布恰为目标分布 q------无论草稿模型多差,重采样都能纠正偏差,最终输出与目标模型直接采样完全一致 1 2。

3.3 期望接受长度

一轮主循环无论接受几个 token,目标模型都只做一次前向,至多产出 K+1 个 token(K 个接受 + 1 个重采样补位)。单轮收益由期望接受长度刻画:

Eaccepted= ∑i=1K ∏j<i p(xj)⋅r(xi)E\\text{accepted}=\sum_{i=1}^{K}\prod_{j<i}p(x_j)\cdot r(x_i) Eaccepted=∑i=1K∏j<ip(xj)⋅r(xi)

它由草稿分布 p 与目标分布 q 的接近度决定:越接近接受率越高、期望接受长度越大。极端情形 p≡q 时一轮全部接受、产出 K 个 token;反之接受率趋零则无收益、甚至因额外草稿开销转为净负。投机解码的加速本质是"摊薄权重加载"------同一份权重搬运换来更多 token 2。

4 草稿分类

草稿的类别决定了方案的成本、接受率与适用场景,主流分为以下几类。

4.1 独立草稿模型

用同家族的较小模型作草稿(如 Llama-8B 草稿 → Llama-70B 目标),代表是 Leviathan 与 Chen 的原始方案 1 2。优点:零额外训练、开箱即用;代价:要求草稿与目标共享同一词表,并需常驻部署小模型、占用显存。适用于草稿质量要求高、可接受额外显存成本的场景。

4.2 附加预测头 Medusa 与 EAGLE

不引入独立小模型,从目标模型自身加推断头作草稿。Medusa 在模型头部加多个并行 decoding head、一次预测多个未来 token;EAGLE 系列复用目标特征做特征级自回归,其中 EAGLE-2 引入动态树形草稿、EAGLE-3 改为直接 token 预测并融合多层特征。这类自投机省去独立小模型部署,是稠密模型的高性价比选择。当前 vLLM 的投机解码核心支持已转向 EAGLE 等,Medusa 主导地位相对衰退 3。

4.3 模型内置 MTP

部分架构在训练时就内置多 token 预测(Multi-Token Prediction, MTP),目标模型带一个 MTP 头、推理时直接用作草稿。代表为 DeepSeek V3、腾讯混元,官方即插即用、零额外部署,是 MoE 模型的首选 4。

4.4 无模型草稿

完全不引入模型,通过 n-gram 或 Prompt-Lookup 从历史序列、已有 prompt 或检索结果中直接查下一步候选。零部署、零显存增量,特别适合摘要、RAG、代码编辑等高重复强规律文本;缺点依赖文本规律性,自由生成内容收益有限。

4.5 部分层 LayerSkip

用大模型前若干浅层作草稿、全层做验证,节约独立草稿模型的部署,依赖层间协同完成草稿与验证的配合。

4.6 树形投机

草稿候选可从链式升级为树形投机(Tree Speculative Decoding):一次生成多个分支的候选,用树注意力掩码在目标模型一次前向中并行验证整棵树,显著提高单次验证的接受率。代价是需用树形掩码管理 token 间依赖、工程更复杂,现为提升接受率的主流手段。

选型速览:MoE 且自带 MTP 直接用内置 MTP;稠密模型追求高性能用 EAGLE-2/3;高重复强规律文本用 n-gram/Prompt-Lookup 零成本方案;有同族小模型可用独立草稿模型。

5 工程落地

5.1 引擎支持

主流推理引擎已内置投机解码。vLLM 通过 --speculative-model 指定草稿模型、--num-speculative-tokens(即 K)设定候选数 3;SGLang 通过 --speculative-algorithm EAGLE3 启用 EAGLE-3 草稿 5;自定义草稿头的训练可由 LMSYS 开源框架 SpecForge 完成,支持 EAGLE3、DFlash、Domino 等多种算法 6。

5.2 关键参数与调优

关键调参落在草稿长度与验证预算上:草稿长度 K(单轮候选数,建议 4--8,过大收益递减)与树宽(EAGLE 树形分支宽度);以及单轮投放到目标模型并行验证的 token 总量(对应 num-draft-tokens)。两者共同决定单轮的接受潜力与验证开销。

5.3 接受率生命线与失效场景

接受率是投机解码的生命线,本质反映草稿与目标分布的契合度。工程经验上,接受率低于约 50% 时验证收益被重采样抵消、趋向净负;40%--80% 是健康区间,越高加速越明显。主要失效场景:高并发 QPS 下与连续批处理争抢资源、草稿与目标 tokenizer 或行为不匹配、显存紧张放不下草稿。最佳适用场景是单用户低延迟(聊天、Agent、代码补全)与输入输出高重复(RAG、摘要、代码)。

5.4 与其他加速技术正交叠加

投机解码作用于 Decode 的访存摊薄,与以下技术在目标层面正交、可在同一引擎中叠加:

  • 量化(FP8/INT4):压缩权重传输、降低访存压力
  • PagedAttention / KV Cache:优化显存、放大 batch
  • CUDA Graph / FlashAttention:降低 kernel 启动与开销

正交叠加使收益可累加,是工程上常见组合 3。

6 实证与趋势

6.1 实证加速

不同草稿方案的端到端加速差异明显。原始投机解码(Leviathan/Chen)在常见场景可带来约 2--3× 的 Decode 加速 1 2;EAGLE-3 在五项任务上取得最高 6.5× 加速、较 EAGLE-2 提升约 1.4×,并在 SGLang 框架 batch size 64 下取得 1.38× 吞吐提升 5。

6.2 前沿演进

草稿训练正走向系统化:SpecForge 把"围绕目标采集特征 → 训练草稿 → 导出"变成一条可复用流水线,并开源多款草稿模型 6。草稿算法持续多样化:

  • DFlash:块扩散草稿
  • Domino:并行草稿骨干 + 轻量修正头
  • DSpark:半自回归 + 自适应验证

这些新方法不断刷新接受率与端到端加速,推动投机解码成为主流推理引擎的标配能力。

7 总结

投机解码用一个便宜的小模型抢先猜一串 token,让大模型一次并行验证、能接受的收下、猜错的在拒绝处重采样补一个,全程不改变输出分布,靠摊薄权重加载换来无损加速。草稿怎么选、接受率保住,是它好用与否的关键。

参考文献

1 Y. Leviathan et al. "Fast Inference from Transformers via Speculative Decoding." ICML , 2023.\ 2 C. Chen et al. "Accelerating Large Language Model Decoding with Speculative Sampling." arXiv:2302.01318 , 2023.\ 3 vLLM Project. "Speculative Decoding (vLLM Docs)." vLLM Documentation , 2025.\ 4 nebius. "MTP-DeepSeek-V3-0324 (Model Card)." Hugging Face , 2025.\ 5 Y. Li, F. Wei, C. Zhang, H. Zhang. "EAGLE-3: Scaling up Inference Acceleration of Large Language Models via Training-Time Test." NeurIPS , 2025.\ 6 The SpecForge Team. "SpecForge v0.3.0: a Unified Disaggregated and Colocated Speculative Decoding Stack." LMSYS Blog, 2026.

相关推荐
沛东的认知和实践1 小时前
Agentic RAG 的评测台:从跑分页到可诊断、可回归的系统
agent
qinglongcn1 小时前
Agent 任务的一生——从用户按下发送到任务完成
agent·ai编程
Momo__1 小时前
155个App把豆包关在门外,豆包反手掏出第二把钥匙
app·agent·ai编程
用户9788587019501 小时前
本地 Agent 十次里有两次工具调用失败,原因是它吐出的 JSON 少了个括号——格式校验与有限重试我这样加
llm·agent
阿里云云原生2 小时前
数字员工 or 数字分身?研发端到端交付提效的实践
agent
ikun_文2 小时前
LangChain-常用场景
langchain·agent
阿里云大数据AI技术3 小时前
云栖实录|从数据闭环到模型闭环,阿里云全栈方案助力多模态AI走向生产
人工智能·agent
阿里云云原生3 小时前
AgentTeams Dashboard:统一管理团队、项目与资产
云原生·agent
七牛云行业应用3 小时前
Codex接MCP完整教程:从官方文档服务器到HTTP、STDIO与OAuth配置(2026年10月)
人工智能·ai·agent·ai编程