# 投机解码详解：如何让任意 LLM 推理快 3 倍

- 原标题：Speculative Decoding Explained: How to Get 3× Faster Inference from Any LLM
- 类型：博客
- 来源：machinelearningmastery.com
- 发布时间：2026-10-23
- 首次精选：2026-10-29 23:09
- 分级：值得看
- 学习层级：进阶
- 主题：[decoding-acceleration](<https://oplearnx.com/md/topics/decoding-acceleration.md>)（第 14 位）
- 原文链接：[https://machinelearningmastery.com/speculative-decoding-explained-how-to-get-3x-faster-inference-from-any-llm](<https://machinelearningmastery.com/speculative-decoding-explained-how-to-get-3x-faster-inference-from-any-llm>)
- 本站页面：[https://oplearnx.com/resources/pk\_ab41831e6ef7](<https://oplearnx.com/resources/pk_ab41831e6ef7>)

## 摘要

MachineLearningMastery 的文章，作者 Vinod Chugani，2026 年 10 月 23 日发布。内容解释标准自回归逐 token 生成受内存带宽瓶颈限制的原因、草稿—验证循环如何工作且保持目标模型输出分布不变、Medusa、Eagle、Prompt Lookup Decoding 等现代变体，以及在生产环境启用该技术的实际权衡。适合关注 LLM 推理性能优化的开发者阅读。

## 中文精读

### 1. 引言

- 用户给聊天机器人发消息后，模型是一个 token 一个 token 地生成回复的，这一约束是 LLM 大规模部署的主要障碍之一。
- 模型越大、能力越强，单个 token 的生成耗时就越明显，对代码助手、客服机器人、实时智能体等需要即时反馈的应用尤其成问题。
- 投机解码（speculative decoding）不改模型、不用新数据重训、不牺牲输出质量，仅靠更聪明的生成策略实现 2 到 3 倍的推理加速。
- 文章要讲清它的工作机制、在硬件层面为何更快，以及现代实现的实际形态。

### 2. 核心问题：LLM 一次只生成一个 token

- 大语言模型自回归生成文本：读取全部已有 token，在数十亿参数上做完整计算，只产出一个新 token，然后为下一个 token 重复整个过程。
- 瓶颈不在算力。NVIDIA H100 这类现代 AI 硬件做矩阵运算极快；问题在于数十亿参数存在 GPU 显存中，每生成一个 token 前都要把全部权重从内存搬到处理器。
- 真正的约束是数据传输而非计算本身。逐 token 生成意味着 GPU 反复等待内存搬运，计算单元大部分时间闲置，工程上称为受内存带宽限制（memory-bandwidth bound）。
- 给服务器加更多原始算力并不能有效提速，因为限制因素是数据搬运速度，而不是处理速度。

### 3. 投机解码的不同之处

- 核心思路很直接：不再一次生成一个 token，而是一次生成一批候选 token 并并行验证。
- 系统由两个模型组成。小的轻量模型称为草稿模型（draft model），快速生成一串候选 token；因其参数远少于主模型，猜测既快又便宜。它本身仍自回归生成，只是规模小得多而快得多。
- 大的高质量模型称为目标模型（target model），在单次前向传播中评估全部候选 token。现代 GPU 为并行计算设计，处理一批 token 只比处理一个略慢。
- 目标模型逐个检查候选，基于与自身预测的概率比较决定接受或拒绝。该方法有数学保证：最终输出的概率分布与目标模型自己逐 token 生成完全一致，不是近似，而是可证明的相同。

### 4. 走一遍投机循环

- 草稿模型很快地生成一小段序列，通常是 4 到 8 个候选 token，代表它对目标模型接下来会说内容的最佳猜测。
- 目标模型一次批量地对整段序列打分：数十亿参数只加载一次，而不是每个 token 加载一次，然后一起评估全部候选。
- 从第一个候选开始比较：若目标模型对该 token 的置信度不低于草稿模型，则自动接受；若草稿模型更自信，则以随差距增大而下降的概率接受。
- 候选被拒时，从考虑两模型预测差异的调整后分布中采样一个修正 token；这一调整正是最终输出精确匹配目标模型分布的原因，循环从此处重新开始。
- 最好情况下所有候选都被接受，目标模型还在末尾多产出一个 token，相当于用约一次目标模型前向的成本生成 5 到 9 个 token。
- 最坏情况下第一个草稿 token 就被拒并替换，由于草稿生成时间照付，反而比标准解码略慢；模型对搭配不佳的下限是轻微变慢，而非中性结果。

### 5. 为何这能带来真实的加速

- 标准生成中，从内存加载目标模型权重占据主要时间预算，每个 token 都触发一次昂贵的内存读取，计算单元一直在等。
- 投机解码下，目标模型权重每个投机步只加载一次，然后作用于多个被接受的 token；GPU 的并行算力得以整批做有意义的计算，而不是在逐 token 读取之间闲置。
- 实际加速主要取决于接受率（acceptance rate），即草稿候选通过目标模型验证的频率。
- 搭配良好的模型对在常见任务上接受率约为 70% 到 80%，对应实际加速在 2 到 3 倍之间；文本可预测或重复性强的任务接受率更高、收益更大。

### 6. 现代方法：超越双模型方案

- 原始方案需要为目标模型另配并维护一个草稿模型，带来显存与工程开销；若干新技术保留核心思路，但去掉了独立草稿模型的必要性。
- 需要注意：其中一些方法用原方法严格的分布保证换取了更简单的实现或更高的吞吐，不过对输出质量的实际影响通常可忽略。
- Medusa 直接改目标模型本身，在其最后一层挂接多个额外预测头；每个头独立预测不同未来位置的 token，目标模型由此自己起草候选序列，无需外部模型。
- Eagle（Extrapolation Algorithm for Greater Language-model Efficiency）基于目标模型的内部隐藏状态而非最终输出 token 预测未来 token；隐藏状态携带更丰富的上下文信息，在复杂或领域特定文本上往往有更高的接受率。
- Prompt Lookup Decoding 完全不需要辅助模型：它在已有提示和对话历史中查找可能在回复中复现的片段，直接用作草稿候选；对代码编辑和文档摘要特别有效，因为输出常回显输入的词汇与结构。

### 7. 对实践者的意义

- 投机解码已作为内置选项出现在 Hugging Face text-generation-inference、vLLM 和 llama.cpp 等推理框架中；对多数实践者而言，启用它是改配置而不是做研究项目。
- 最能受益的场景：生成较长输出、模型一次只服务一个请求而非大批量、提示与回复共享词汇或结构。问答、文档摘要和代码补全通常收益最大。
- 高吞吐批量服务则相反：在重度批处理场景下，投机解码可能反而降低吞吐，因为草稿 token 占用了本可用于服务更多请求的显存和算力。
- 决定是否在生产环境启用时要考虑这一权衡。

### 8. 结论

- 投机解码重新定义了长期被视为语言模型推理不可避免的约束：一次一个 token 并非硬性要求，而是标准生成方式的后果。
- 它通过快速起草阶段与保持目标模型输出完全一致的并行验证阶段配对，打破了这一约束。
- 结果是更快的推理，同时不改变模型权重、不降低输出质量、不修改提示工作流。
- 随着该技术更紧密地集成进标准推理工具，它正迅速成为大语言模型部署的默认组成部分。

## 原文涉及

- [Medusa: Simple LLM Inference Acceleration Framework with Multiple Decoding Heads](<https://arxiv.org/abs/2401.10774>)
- [EAGLE: Speculative Sampling Requires Rethinking Feature Uncertainty](<https://arxiv.org/abs/2401.15077>)

---
来源：LearnMap · 学径（https://oplearnx.com）
