Speculative Decoding(推测解码)
3 秒看懂
用一个”小参谋”先猜多个 token,再让”大将军”一次性验货——猜对的直接放行,猜错的当场修正。 本质是把逐 token 串行生成变成”批量猜测 + 并行验证”,在不改变输出分布的前提下加速 LLM 推理解码阶段。
3 分钟产业解释
为什么需要它?
大语言模型推理(Inference)分两个阶段:
| 阶段 | 计算特征 | 瓶颈 |
|---|---|---|
| Prefill(预填充) | 一次处理全部 prompt,矩阵运算密集,计算密集型(compute-bound) | 算力 |
| Decode(自回归解码) | 每步只生成 1 个 token,需要反复加载整个模型权重,访存密集型(memory-bandwidth-bound) | 显存带宽 |
Decode 阶段的硬件利用率极低——数十 GB 的权重只为了产出 1 个 token。Speculative Decoding 的核心洞见是:如果你能让大模型一次验证多个 token 而不只是生成 1 个,就能把 memory-bound 变成 compute-bound,大幅提升吞吐。
它怎么赚钱?
- 降低单请求延迟(Latency):用户体验响应更快,Chat 类产品留存提升。
- 降低单位推理成本(Cost/Token):同等算力可服务更多请求。
- 无需改模型权重:不重新训练大模型,只在推理侧加一层调度逻辑,工程改造成本可控。
- 据 [Google Research, Leviathan et al., 2023, arXiv:2211.17192] 及 [DeepMind, Chen et al., 2023, arXiv:2302.01318] 的原始论文,理论上可实现 2-3 倍 解码加速(具体取决于 draft 质量与任务)。
15 分钟专家深入
1. 工作流程拆解
┌───────────────────────────────────────────────────────────┐
│ 一个完整的推测解码轮次 │
│ │
│ Step 1: Draft(猜测) │
│ ┌─────────┐ │
│ │ 小模型 M_q│──→ x₁, x₂, x₃, ..., x_K (K 个候选 token) │
│ └─────────┘ │
│ ↓ 将 [已有序列 + x₁...x_K] 一起送入 │
│ Step 2: Verify(验证) │
│ ┌─────────┐ │
│ │ 大模型 M_p│──→ 对每个位置给出完整词表分布 │
│ └─────────┘ p(x₁|...), p(x₂|...), ..., p(x_K|...) │
│ ↓ │
│ Step 3: Accept/Reject(验收) │
│ - 从左到右逐位置比对: │
│ 若 draft token xᵢ 被 target 接受 → 保留 │
│ 若在位置 j 首次被拒绝 → 从 target 分布 p(xⱼ|...) 重采样 │
│ 本轮共输出 (被接受数 + 1) 个有效 token │
└───────────────────────────────────────────────────────────┘
2. 保真性证明(为什么输出分布不变?)
这是 Speculative Decoding 最精妙之处。验收采用修正拒绝采样(Modified Rejection Sampling):
对于 draft 模型 $q(x|context)$ 和 target 模型 $p(x|context)$,对候选 token $x$:
$$ text(Accept with probability ) \min!\left(1,\ frac(p(x)){q(x)}\right) $$
若被拒绝,则从修正分布重新采样:
$$ p’(x) = \frac{\max(0,\ p(x) - q(x))}{\sum_{x’} \max(0,\ p(x’) - q(x’))} $$
数学上可证明:由此过程采样得到的 token 序列与直接从 target 模型自回归采样完全一致。 这意味着 Speculative Decoding 是无损的——不牺牲任何生成质量。
3. 加速比分析
设:
\alpha= 每位置平均接受率(draft 与 target 的”一致度”)- $K$ = 每轮推测的 draft token 数
c_d= draft 模型单次前传成本c_t= target 模型验证 $K$ 个 token 的成本
每轮期望有效输出 token 数:
$$ E[tokens/round] = (1 - alpha^K) / (1 - alpha) $$
每轮总成本 \approx c_d \cdot K + c_t
对比标准自回归(每轮 1 token、成本 c_t),加速比:
$$ Speedup ~= (1 - alpha^K) / ((1 - alpha) * (1 + K * c_d / c_t)) $$
接受率 \alpha | 推测数 $K$ | 理论最大加速比(c_d \approx 0) |
|---|---|---|
| 0.6 | 5 | ≈ 2.31× |
| 0.7 | 5 | ≈ 2.77× |
| 0.8 | 5 | ≈ 3.36× |
| 0.9 | 5 | ≈ 4.10× |
| 0.9 | 10 | ≈ 6.51× |
⚠ 以上假设 draft 模型推理成本可忽略。实际中
c_d不为零,且 batch 场景下验证成本结构更复杂,实际加速比通常 1.5-3× [行业经验估算]。
技术原理(最深一层)
核心机制:并行验证 vs 串行生成
标准自回归解码的时间复杂度为 $O(n)$ 次 target 模型前传($n$ = 生成长度),每次前传的关键瓶颈是 KV-Cache 加载 + 权重加载。
Speculative Decoding 将其中 $n$ 次 target 前传替换为:
标准解码: T → T → T → T → T → T → T → T (8 次 target 前传, 8 tokens)
推测解码 (K=3):
D → D → D → T(验证3个) → [假设接受2个]
D → D → D → T(验证3个) → [假设接受3个]
D → D → T(验证1个)
共 3+3+3+3+3+1 = 16 次 draft 前传 + 3 次 target 前传
若 c_d << c_t,总时间 ≈ 3 次 target 前传 → 产出 8 tokens → ~2.7× 加速
验证的计算图
验证阶段的本质是 一次 Prefill 式前传:
输入: [token_0, token_1, ..., token_n, draft_x1, draft_x2, ..., draft_xK]
↑ 已有 KV-Cache ↑ 需计算注意力
Target Model 一次性为所有 K 个位置计算隐藏状态 → 词表 logits
关键: K 个 draft token 的计算是并行的 (受 GPU compute-bound 启发)
这比 K 次串行 decode (每次 memory-bound) 高效得多
在实现中:
- KV-Cache 管理:target 模型需要为验证位置预先分配 KV-Cache 空间。接受后释放未用部分,拒绝后回退。对推理框架(vLLM、TensorRT-LLM)的调度器提出要求。
- Attention Mask:验证时 K 个 token 之间需要 causal mask,但与 draft 阶段的 mask 不同。
Draft 模型的选取策略
| 策略 | 描述 | 代表工作 |
|---|---|---|
| 独立小模型 | 与 target 同系列但参数量小(如用 LLaMA-7B draft for LLaMA-70B target) | Leviathan et al., 2023 |
| 同模型量化版 | 用 target 模型的 4-bit 量化版做 draft(天然与 target 分布接近) | [行业实践,未充分披露归属] |
| 浅层 Early Exit | 用 target 模型的前几层输出直接预测 token(Self-Speculative) | [推测实现方向,待具体论文确认] |
| 检索增强 Draft | 从语料库中检索 n-gram 作为 draft token(零额外参数) | REST [He et al., 2023] |
| 多头预测 | 在 target 模型最后层加多个预测头,每头预测不同未来位置 | Medusa [Cai et al., 2024] |
| 特征外推 | 用 target 模型中间特征线性外推下一层输出 | EAGLE [Li et al., 2024] |
技术演进史
2022.11 Leviathan et al. (Google) 发表 "Fast Inference from Transformers via
Speculative Decoding" [arXiv:2211.17192] —— 首次正式提出框架
2023.02 Chen et al. (DeepMind) 发表 "Accelerating Large Language Model Decoding
with Speculative Sampling" [arXiv:2302.01318] —— 独立提出类似方法
(Speculative Sampling / SpecSam)
2023.04 两篇论文同期被 ICML 2023 接收,该方向获得学术界广泛认可
2023 H2 工程集成阶段:各大推理框架 (vLLM, TensorRT-LLM, llama.cpp)
陆续实现 Speculative Decoding 支持
2023-24 变体爆发:
- Medusa:免 draft 模型,多头并行预测
- REST:基于检索的 draft,零额外参数
- EAGLE:基于特征外推,高接受率
- Lookahead Decoding:Jacobi 迭代式并行解码
- Self-Speculative:用自身浅层做 draft (如 draft & verify 用同一模型)
2024+ 与硬件协同:推测解码改变了 decode 阶段的计算特征
(从 memory-bound 转向 compute-bound),影响 GPU 选型与集群调度策略
技术路线对比
| 维度 | 经典 Speculative Decoding | Medusa | EAGLE | Self-Speculative | REST (检索) |
|---|---|---|---|---|---|
| 是否需要额外 draft 模型 | 是 | 否(额外 head) | 否(额外外推模块) | 否(同模型浅层) | 否(检索库) |
| 额外参数量 | 完整小模型 | 少量 head 参数 | 少量外推网络 | 无 | 无 |
| 分布保真性 | ✅ 严格保真 | ⚠ 需修正采样 | ✅ 严格保真 | ✅ 严格保真 | ✅ 严格保真 |
| 典型加速比 | 2-3× | 2-3× | 2.5-3.5× [作者报告] | 1.5-2× [估算] | 1.5-2.5× [估算] |
| 工程复杂度 | 中(两模型调度) | 低(单模型加 head) | 中(特征缓存) | 低 | 低 |
| 训练需求 | 无(draft 现成) | 需训练 head | 需训练外推模块 | 无 | 无 |
| 适用场景 | draft 与 target 分布匹配时 | 通用,尤其大模型 | 通用,接受率高 | 受限于浅层质量 | 文本分布有规律时 |
上下游
上游(依赖什么)
| 层级 | 要素 | 说明 |
|---|---|---|
| 模型层 | Target 大模型 + Draft 小模型(或等价替代) | Draft 与 target 的分布一致性决定接受率 |
| 算法层 | 修正拒绝采样数学框架 | 保证输出分布严格不变 |
| 框架层 | 推理引擎的调度器支持 | 需要处理 KV-Cache 回退、动态批处理中不同请求的推测长度差异 |
| 硬件层 | GPU/加速器的并行计算能力 | 验证步骤变为 compute-bound,对算力(而非仅带宽)的需求上升 |
下游(影响什么)
| 受影响领域 | 影响方式 |
|---|---|
| LLM 推理服务 | 直接降低每 token 成本,提高吞吐 |
| 用户体感延迟 | TTFT 不变,但 TPS(tokens/sec)提升 |
| GPU 选型逻辑 | 推测解码使 decode 阶段更偏 compute-bound,高算力卡(如 H100 SXM)vs 高带宽卡的权衡发生变化 |
| Batching 策略 | 推测长度动态变化,对 continuous batching 的调度提出新挑战 |
| 端侧推理 | 在手机/边缘设备上,draft 模型可用极小模型实现,可行性高 |
关键指标
| 指标 | 含义 | 典型范围 |
|---|---|---|
Acceptance Rate (\alpha) | 每个 draft token 被 target 接受的概率 | 0.5 - 0.9+ |
| Speculation Length ($K$) | 每轮推测的 draft token 数 | 3 - 8(常见),理论上可更高 |
| Speedup Factor | 相对于标准解码的加速比 | 1.5× - 3×(实践),理论更高 |
Overhead Ratio (c_d/c_t) | draft 模型单次前传成本 / target 模型验证成本 | 目标 < 0.1(越小越好) |
| Wall-clock Latency | 端到端生成延迟 | 降低 30%-70%(视场景) |
| Throughput (tokens/sec/GPU) | 单卡吞吐量 | 可提升 1.5-3× |
供需与市场数据
供给侧
- 开源框架支持:vLLM(从 v0.4+ 开始支持推测解码)、TensorRT-LLM(NVIDIA 官方支持)、llama.cpp(支持 draft model 推测解码)、SGLang 等。据 [开源社区观察,非精确统计],主流推理框架均已将推测解码作为标准特性。
- 闭源 API:各主要 API 提供商(OpenAI、Anthropic、Google 等)是否在服务端使用推测解码 [未充分披露],但技术上完全可行且有强烈动机。
需求侧
- LLM 推理的全球算力需求据 [多家行业报告综合估算] 在 2024 年约占 AI 算力总支出的 50% 以上,且推理占比持续上升。
- 推测解码作为一种纯推理侧优化,不需要额外训练成本,部署门槛低,需求侧采纳意愿强。
市场影响估算
如果推测解码在行业中位数实现 2× 加速,相当于在不增加 GPU 的情况下将推理吞吐翻倍。对于年推理支出数十亿美元级别的公司(如 [估算] OpenAI、Google、字节跳动等),即使仅覆盖部分场景,节省的算力成本可达数亿美元量级 [粗略估算]。
代表公司与资本映射
| 公司/团队 | 角色 | 关联标的/逻辑 |
|---|---|---|
| Google (DeepMind) | Speculative Decoding 两大原始论文之一出自 Google Research | Alphabet (GOOGL) |
| DeepMind | SpecSam 论文作者团队 | Alphabet (GOOGL) |
| NVIDIA | TensorRT-LLM 原生支持推测解码;推测解码使推理更 compute-bound,可能提升高端 GPU 需求 | NVDA |
| vLLM 团队 (UC Berkeley) | 开源推理引擎,率先集成推测解码 | 未上市 / 开源生态 |
| Meta | LLaMA 系列是推测解码最常见的 target/draft 组合 | META |
| SambaNova / Groq / Cerebras | 定制推理芯片/架构;推测解码改变计算特征,影响架构设计方向 | 各有融资/上市路径 |
| 各大云厂商 | 推测解码直接降低推理服务成本,提升单位算力营收 | AMZN (AWS), MSFT (Azure), GOOGL (GCP) |
资本影响逻辑
推测解码本身是算法层优化,不直接对应独立商业模式,但:
- 利好高端 GPU:验证阶段变为 compute-bound,高算力卡(H100/B200)的优势更明显。
- 利好推理框架生态:支持推测解码成为框架竞争力分水岭。
- 利好小模型生态:高质量小模型作为 draft 的需求上升。
投资逻辑
看多理由
- 免费午餐:不改模型、不牺牲质量、纯推理侧优化——落地阻力小。
- 复合效应:与量化(Quantization)、KV-Cache 压缩、Flash Attention 等技术正交,可叠加使用,进一步放大加速。
- 小模型复用价值:各厂商已训练的中等规模模型(7B/13B)天然可做 draft,资产利用率提升。
- 边际成本递减:一旦推理框架适配完成,全行业可共享优化红利。
需关注的风险
- Draft 模型质量问题:如果 draft 与 target 分布差距大,接受率低,加速比趋近于 1,甚至因 overhead 而变慢。
- Batch 场景复杂化:大 batch 下推测解码的收益可能被调度开销稀释(不同请求推测成功长度不同,导致 GPU 空泡)。
- MoE 模型的挑战:对于 Mixture-of-Experts 模型,推测解码的验证阶段需要频繁的 All-to-All 通信,实现更复杂。
- 架构迭代风险:如果未来出现非自回归架构(如扩散语言模型、SSM 变体),推测解码的基础假设(逐 token 自回归)可能被绕过。
常见误读纠偏
❌ 误读 1:“推测解码会降低生成质量”
纠正:不会。 修正拒绝采样的数学保证了输出分布严格等价于直接从 target 模型采样。这不是近似,是精确等价。输出质量完全取决于 target 模型本身,draft 模型只影响速度、不影响质量。
❌ 误读 2:“推测解码需要重新训练大模型”
纠正:不需要。 Target 模型完全不改动。Draft 模型通常是已有的小模型(或用量化版本、浅层截取等方法获得),不需要针对推测解码进行专门训练。部分变体(如 Medusa、EAGLE)需要训练额外的小模块,但主模型权重冻结。
❌ 误读 3:“推测解码就是投机取巧地多猜几个 token,和 beam search 类似”
纠正:完全不同。 Beam Search 是改变解码搜索策略(搜索更宽的候选空间),可能改变输出分布;Speculative Decoding 不改变搜索策略(仍按原采样方式),只是改变了计算的组织方式(猜测+验证),且数学保证输出分布不变。
❌ 误读 4:“Draft 模型越小越好,因为推理更快”
纠正:有取舍。 Draft 模型越小,c_d 越低,但与 target 的分布差距越大 → 接受率 \alpha 越低 → 每轮有效 token 数减少。最优 draft 模型大小是使 \alpha 足够高的最小模型,而不是绝对最小的模型。经验值:draft 模型参数量约为 target 的 1/5 到 1/10 可能是较好的平衡点 [基于公开实验报告的估算,非普适结论]。
学习路径
入门(1-2 小时)
- 先理解 LLM 自回归解码的基本原理(为什么是 memory-bound)
- 阅读 [Leviathan et al., 2023] 的 Introduction 和 Figure 1(直觉图解)
- 看一篇英文博客(如 Lilian Weng 或 HuggingFace Blog 对 Speculative Decoding 的介绍)
进阶(3-5 小时)
- 精读 [Leviathan et al., 2023] 的 Section 3(修正拒绝采样的数学推导)
- 精读 [Chen et al., 2023] 的 Speculative Sampling 算法伪代码
- 对比 Medusa 和 EAGLE 论文的方案差异
动手(1-2 天)
- 用 llama.cpp 或 vLLM 跑一个 Speculative Decoding demo,对比有/无推测解码的延迟
- 调节 $K$(推测长度)和 draft 模型大小,观察接受率和加速比变化
- 在 TensorRT-LLM 中尝试量化版 draft(如 4-bit draft + 16-bit target)
深入研究
- 研究推测解码在 batch 场景下的调度策略(连续批处理 + 推测长度动态变化)
- 关注推测解码与 KV-Cache 压缩、PagedAttention 的交互
- 探索推测解码在非 Transformer 架构(如 SSM/Mamba)中的适用性
一句话总结
Speculative Decoding 用一个廉价的小模型快速猜测多个 token、再用昂贵的大模型一次性并行验证,以修正拒绝采样数学保证输出分布严格不变,实现 2-3× 的推理加速——本质上是把 memory-bound 的逐 token 解码变成 compute-bound 的批量验证,是当前最具工程落地价值的 LLM 推理加速技术之一。
延伸阅读与来源
| 来源 | 说明 |
|---|---|
| [Leviathan et al., 2023] “Fast Inference from Transformers via Speculative Decoding”, ICML 2023, arXiv:2211.17192 | 原始论文之一(Google Research) |
| [Chen et al., 2023] “Accelerating Large Language Model Decoding with Speculative Sampling”, ICML 2023, arXiv:2302.01318 | 原始论文之二(DeepMind) |
| [Cai et al., 2024] “Medusa: Simple LLM Inference Acceleration Framework with Multiple Decoding Heads”, arXiv:2401.10774 | Medusa 变体 |
| [Li et al., 2024] “EAGLE: Speculative Sampling Requires Rethinking Feature Uncertainty”, arXiv:2401.15077 | EAGLE 变体 |
| [He et al., 2023] “REST: Retrieval-Based Speculative Decoding”, arXiv:2311.08252 | 检索增强 draft 方案 |
| vLLM 官方文档 — Speculative Decoding | 工程实现参考 |
| NVIDIA TensorRT-LLM 文档 — Speculative Decoding | 工程实现参考 |
| Lilian Weng Blog, “Prompt Engineering” / “Large Transformer Model Inference Optimization” | 综合性技术博客 |
免责与准确度说明:本文中的数学公式基于 [Leviathan et al., 2023] 和 [Chen et al., 2023] 公开论文。加速比数值、市场估算等基于公开论文报告值与行业经验推断,已做标注。具体加速效果因模型、硬件、任务、batch size 等因素差异显著,请以实际测量为准。