让大模型"先猜后验":投机解码原理与四代演进
自回归解码为什么慢?投机解码如何用"草稿-验证"把一次前向从产出 1 个 token 变成 3 到 6 个?从经典小模型草稿、Medusa 多头、EAGLE 特征级自回归,到 MoE 时代的专家散射问题与 2026 年的半自回归新方向,本文按技术代际拆解投机解码的底层机制与收益边界。
一个看似浪费的直觉
大模型生成文字时是逐 token 输出的:每生成一个 token,就要把整个模型的权重从显存搬到计算单元跑一遍。以 70B 模型为例,一次前向要搬运上百 GB 的参数,却只换来一个 token。GPU 的算力在绝大部分时间里都是"饿"着的——真正的瓶颈不是计算,而是显存带宽。
既然一次前向的成本几乎固定,一个自然的想法是:能不能一次前向多产出几个 token?投机解码(Speculative Decoding)就是围绕这个想法生长出来的技术家族。它让模型"先猜后验":先用一个廉价的小模型快速猜一串 token,再用大模型一次前向并行验证。猜得准,一次前向的产出就从 1 个 token 变成 3 到 6 个。
草稿-验证:把串行变成批处理
投机解码的流程可以拆成两个角色:
- 草稿模型(Draft Model):一个比目标模型小得多、快得多的模型,负责一口气猜出 γ 个候选 token。
- 目标模型(Target Model):也就是真正要服务的模型,把 γ 个候选 token 连同已有上下文放进同一次前向,一次性算出每个位置的概率分布,完成并行验证。
验证采用逐位置接受规则:目标模型对第 i 个候选 token 计算接受概率 min(1, p(x)/q(x)),其中 p 是目标模型概率、q 是草稿模型概率。被接受就继续看下一个;被拒绝时,从修正分布中重新采样一个 token 补位,这一轮结束。如果全部接受,还会额外奖励一个"bonus token",让一次前向产出 γ+1 个 token。
这个规则最关键的性质是分布无损:接受-拒绝采样保证最终输出分布与只用目标模型逐 token 采样完全一致。投机解码不是"近似加速",而是"精确加速"——输出质量理论上没有损失。这也是它能在生产环境大规模落地的前提。
来源:Fast Inference from Transformers via Speculative Decoding(arXiv:2211.17192)、Accelerating Large Language Model Decoding with Speculative Sampling(arXiv:2302.01318)
一条公式看懂收益边界
投机解码的加速效果取决于两个参数:草稿长度 γ(每次猜几个 token)和接受率 α(草稿被目标模型认可的比例)。单次目标前向期望接受的 token 数为:
(1 - α^(γ+1)) / (1 - α)
这个公式揭示了几个关键结论:
- 接受率 α 是最重要的杠杆。α 从 0.6 提升到 0.9,同样猜 5 个 token,期望接受数从约 2.2 涨到约 4.1,几乎翻倍。
- 草稿长度 γ 不是越大越好。接受率低时,猜得越多浪费越多——草稿模型的算力白花,验证前向也变得更贵。存在一个与工作负载相关的最优值。
- 接受率决定一切。经验上,代码、结构化输出这类可预测场景适合更长的草稿(γ 取 5 到 10);高熵的自由生成适合短草稿(γ 取 2 到 4)甚至不开投机。
所以投机解码的工程本质,就是不断抬高 α,同时把草稿成本压到足够低。四代技术演进基本围绕这两件事展开。
第一代:独立小模型草稿
最朴素的做法是拿一个同系列的小模型当草稿模型。例如用 Qwen3-0.6B 给 Qwen3-8B 起草。优点是接线简单、无需训练,小模型通常比目标模型快 4 倍以上,还不需要改动目标模型。
缺点是接受率有限:小模型的语言分布和大模型差异明显,α 通常只有 0.55 到 0.70,实际加速约 1.8 到 2.3 倍。部署上还要多加载一个完整模型,显存和调度成本不低。因此这一代在低端设备、CPU 推理(如 llama.cpp)等场景仍有价值,但在高吞吐生产环境中逐渐让位给后面的方案。
来源:vLLM Speculative Decoding 文档
第二代:挂上头,不再背一个模型
如果不想额外加载一个完整小模型,可以把"草稿能力"直接做成目标模型上的附加头。Medusa 是这一代的代表:在目标模型最后一层之上挂若干并行的轻量解码头,每个头预测未来第 k 个 token,训练成本约 10 亿量级的 SFT token,单头只是一个小 MLP,显存开销几乎可以忽略。
Medusa-1 报告超过 2.2 倍加速,Medusa-2 对头与底座做联合微调后达到 2.3 到 3.6 倍。由于不引入独立模型,它在部署友好性上赢了一局,至今仍是 TensorRT-LLM 对部分公开模型的主力路径。
来源:Medusa: Simple LLM Inference Acceleration Framework with Multiple Decoding Heads(arXiv:2401.10774)
第三代:在特征层自回归(EAGLE 系列)
EAGLE 系列把"草稿"从 token 层面搬到了特征层面:与其直接猜下一个 token,不如猜目标模型倒数第二层的隐藏状态。理由很直观——预测下一个 token 的离散选择充满不确定性,而预测连续的特征向量要平滑得多。草稿器是挂在目标模型上的一个极轻量自回归头(通常一两个 Transformer 层),输入是目标模型的隐藏状态加错位的 token 嵌入。
三代演进逐步抬高接受率:
- EAGLE-1(ICML 2024):固定草稿链,在 LLaMA2-Chat 70B 上实现 2.7 到 3.5 倍加速,α 约 0.7 到 0.8。
- EAGLE-2(EMNLP 2024):引入动态草稿树。不再猜一条链,而是根据置信度决定树的分支结构——高置信位置多分叉,低置信位置保持单路径。一次验证整棵树,α 超过 0.85,加速 3.05 到 4.26 倍。
- EAGLE-3(NeurIPS 2025):去掉"逼近目标模型隐藏状态"的训练约束,改为直接以 token 预测为目标;用低、中、高层语义特征融合替代单一顶层特征;训练时引入 training-time test(TTT),把推理时的自回归输入方式搬进训练过程,消除训练-推理分布漂移。报告最高约 5 到 6.5 倍加速,比 EAGLE-2 再快 20% 到 40%。SGLang 官方基准中,单张 H100 上 EAGLE-3 达到 373 tokens/s,对比原生解码的 158 tokens/s。
来源:EAGLE(arXiv:2401.15077)、EAGLE-2(arXiv:2406.16858)、EAGLE-3(arXiv:2503.01840)、SGLang EAGLE 文档
EAGLE-3 如今已成为开源推理栈的事实默认:vLLM、SGLang、TensorRT-LLM 都提供一等支持。其代价是草稿头必须针对目标模型单独训练,一个草稿头只适配一个底座,这成为部署时最大的摩擦点。
同一思路的另一面:MTP 与原生多 token 预测
EAGLE 是从外部"补"一个草稿器,DeepSeek-V3 则把草稿能力直接做进了预训练目标。它的多 token 预测(MTP)模块在主模型之外挂 D 个顺序预测模块,每个模块含一个 Transformer 块和投影矩阵,训练时让每个位置同时预测未来 1 到 D 个 token。
MTP 在训练阶段通过稠密监督让模型"学会规划更远的未来";推理时这些模块不丢弃,而是直接充当草稿器。DeepSeek-V3 技术报告显示第一个 MTP 头接受率超过 80%,端到端生成提速约 1.8 倍。这是"原生草稿"路线最有分量的验证——草稿能力不再是外挂,而是架构设计的一部分。
来源:DeepSeek-V3 Technical Report(arXiv:2412.19437)
树形草稿:从链到树的一次前向
EAGLE-2 的动态草稿树值得单独说明,因为它是接受率跃升的关键机制。
链式草稿的痛点在于:第 k 个位置猜错,后面全错,一次验证只收获 k-1 个 token。树形草稿让草稿器在每个位置输出 top-k 候选,形成一棵宽度可控的候选树;目标模型用带树形因果掩码的注意力,在一次前向中验证整棵树,然后沿着最高概率路径接受。即使某条分支在第 3 个位置被拒绝,其他分叉仍然有效,单次验证的"含金量"大幅提升。
代价是工程复杂:树形注意力需要自定义掩码、验证后要回滚 KV Cache 中错误位置的缓存(vLLM 用 scratch buffer 提交制,或物理缓存加逻辑长度截断)。这些成本相对前向计算可以忽略,但实现细节决定成败。
MoE 时代的反直觉:越猜越贵
投机解码在稠密模型上顺风顺水,到了混合专家(MoE)模型却出现一个反直觉问题:候选 token 可能被路由到完全不同的专家。验证的 token 越多,需要从高带宽内存搬运的专家权重越多——草稿猜得不错,GPU 却忙着来回搬参数,加速收益被访存吃掉了。京东 AI Infra 与清华、北理工等机构的论文把这种现象称为 expert scattering(专家散射),并给出具体数字:DeepSeek-V3.1 以 FP8 格式加载一个专家约需 44.04 MB 的 HBM 读取量,一次推测验证多引入几个专家,数据搬运很快累积到 GB 级。
他们提出的 ECOSPEC 框架不改变草稿生成、也不改变目标模型的接受规则,只在两者之间加一道"成本感知的候选选择":用轻量专家预测器预估每个候选 token 会激活哪些专家,用全局专家缓冲区记录已覆盖的专家集合,再按"累计草稿概率 − 新增专家成本"重新排序候选。在 Qwen3-235B-A22B 的 MT-Bench 上,ECOSPEC 相对自回归解码达到 1.62 倍加速,高于同设置下 EAGLE-3 的 1.46 倍。
这个案例说明:当模型架构变化后,"快"的定义也在变化。对 MoE 而言,草稿不仅要"猜得准",还要"猜得省"——尽量让候选 token 落在相同的专家集合里。
来源:Qwen3-235B 访存开销直降 11.3%:京东 AI Infra 团队提出 MoE 推测解码新范式(2026-08-11)
2026 年的新方向:把"因果性"找回来
并行草稿(一次前向生成整块候选)吞吐高,但各位置独立预测、缺少 token 间依赖,导致候选后段接受率快速衰减。2026 年的一系列工作都在补这个短板:
- DSpark(DeepSeek 与北京大学,arXiv:2607.05147):半自回归架构——并行主干保持高吞吐,末端加一个轻量串行头注入前缀依赖;再用置信度调度器按实时引擎吞吐动态决定验证长度。
- JetSpec(阶跃星辰与 UCSD,arXiv:2606.18394):因果并行树——用树形因果注意力掩码让每个树节点只看前缀和本分支祖先,在一次前向中同时获得并行吞吐和分支内自回归依赖。
- Saguaro / SSD(Stanford、Princeton 与 Together AI,ICLR 2026,arXiv:2603.03251):嵌套投机——目标模型验证草稿时,草稿模型不闲着,而是预测验证结果并提前准备下一轮草稿,消除起草延迟。
这三条路线方向一致:"并行草稿 + 因果性注入"正在成为下一代投机解码的主流范式。
来源:大模型推理加速:2026 年 6-8 月重要论文与进展(综述,调研截止 2026-08-06)
工程落地的现实
从论文到生产,投机解码的落地速度在加速:
- EAGLE-3 成为默认基线:vLLM、SGLang、TensorRT-LLM 均提供一等支持;SGLang 的 SpecForge 流水线可以在单节点几小时内为任意目标模型训练一个 EAGLE-3 草稿头。
- EAGLE 3.1 修复长上下文退化:2026 年 5 月发布,诊断出长上下文下草稿器"注意力漂移"问题(高层隐藏状态主导、草稿器越来越关注自己生成的 token),通过归一化修复后,长上下文场景接受长度最高提升约 2 倍。
- 收益场景要选对:投机解码在低并发、延迟敏感场景收益最大;高并发时批处理本身已缓解内存带宽瓶颈,草稿模型反而占用显存,收益可能趋近于零甚至为负。
- 草稿头与模型强耦合:EAGLE-3 草稿头按目标模型单独训练,换底座就要重新训练,这是当前最大的部署摩擦。
趋势:从"找草稿"到"管系统"
投机解码四年演进的脉络很清楚:先解决"草稿从哪来"(独立小模型 → 附加头 → 特征自回归 → 原生 MTP),再解决"草稿怎么组织"(链 → 动态树),现在进入"草稿怎么和系统协同"的阶段——负载感知调度(DSpark)、嵌套投机(Saguaro)、训练-推理一体化(Aurora)、MoE 成本感知(ECOSPEC)都在把焦点从算法单点挪向端到端系统。
一个值得留意的变量是扩散语言模型:如果扩散范式在质量上追平自回归,整套自回归优化栈的意义都会被重估。就当下而言,投机解码仍是单次前向产出 token 数最高的实用技术,而它的每一次演进,都在把"猜"这件事做得更聪明、更便宜。
(内容由AI生成,仅供参考)