什么是 Speculative Decoding?LLM 如何加速生成文本
大语言模型(LLM)生成文本时,通常采用自回归方式:先预测一个 Token,将它加入上下文,再预测下一个 Token。即使 GPU 拥有强大的并行计算能力,Token 之间的依赖关系仍然让文本生成具有明显的串行特征。
Speculative Decoding(推测解码)就是针对这一瓶颈设计的 LLM 推理优化技术。它通常让一个计算成本较低的 Draft Model(草稿模型)先快速提出多个候选 Token,再让原本需要运行的 Target Model(目标模型)一次验证这些候选。如果多个 Token 都被接受,Target Model 就能在一次验证过程中推进多个生成位置,而不是每次只能前进一个 Token。
更重要的是,在满足相应采样与验证算法的标准 Speculative Decoding 中,这种方法可以在保持 Target Model 原始输出分布的同时提高生成效率。因此,它并不是简单地“用小模型代替大模型”,而是利用小模型帮助大模型减少串行生成步骤。
什么是 Speculative Decoding(推测解码)?
Speculative Decoding 是一种用于加速自回归 LLM 推理的解码方法。其核心思想是:先低成本猜测未来可能出现的多个 Token,再由目标模型集中验证这些猜测。
普通自回归解码中,如果模型需要生成四个 Token,通常需要连续执行四次生成步骤:
T1 → T2 → T3 → T4
T2 依赖 T1,T3 又依赖 T1 和 T2,因此无法简单地让目标模型一次独立生成所有 Token。
Speculative Decoding 改变了执行方式。一个速度更快或计算成本更低的 Draft Model 先根据当前上下文提出多个候选:
T1 → T2 → T3 → T4
随后 Target Model 对这段候选序列进行并行验证。如果前几个 Token 与 Target Model 的分布足够一致,它们可以被一次接受,从而减少 Target Model 串行执行的次数。
因此,Speculative Decoding 优化的重点不是模型“知道什么”,而是模型以什么方式完成 Decode。
为什么 LLM 生成文本存在速度瓶颈?
LLM 文本生成的核心瓶颈之一来自 Autoregressive Decoding(自回归解码)。
假设 Prompt 是:
AI models can
模型首先需要预测第四个 Token,例如:
generate
只有得到这个 Token 后,模型才能把新的上下文:
AI models can generate
用于预测第五个 Token。随后可能生成“text”,再继续预测后面的内容。
这意味着输出 Token 之间存在天然依赖关系。模型无法在一开始就确定第 20 个 Token,因为它的概率取决于前面已经选择了哪些 Token。
现代 GPU 非常擅长大规模并行矩阵计算,但逐 Token Decode 的串行特征限制了这种并行能力的发挥。尤其是在单请求或较小 Batch 的生成过程中,Decode 往往难以像 Prompt Prefill 那样充分利用 GPU 的计算能力。
Speculative Decoding 的目标,就是减少 Target Model 必须经历的串行 Decode Steps。
Speculative Decoding 是如何工作的?
典型 Speculative Decoding 系统包含两个主要角色:
Draft Model 负责快速生成候选 Token,Target Model 则是用户原本希望运行的大模型,负责验证并决定最终输出。
假设当前上下文是:
Artificial intelligence is
Draft Model 可能快速提出四个候选 Token:
changing → the → way → people
随后 Target Model 不需要像普通解码那样逐个生成这四个 Token,而可以在一次前向计算中评估这段候选序列对应位置的预测分布。
如果候选 Token 被接受,它们就可以直接成为输出的一部分。假设前三个候选被接受,而第四个不符合验证条件,那么系统保留:
changing → the → way
并在出现拒绝的位置按照相应算法重新采样或生成 Token,再开始下一轮推测。
可以把过程简化为:
Current Context → Draft Model proposes several tokens → Target Model verifies them → Accept valid prefix → Correct at rejection point → Repeat
真正产生加速的关键是:一次 Target Model 验证可能让生成序列前进多个 Token。
Draft Model 和 Target Model 分别做什么?
理解两个模型的职责,是理解 Speculative Decoding 的关键。
Target Model 是最终决定输出分布的模型。例如,用户原本要运行某个大型 LLM,那么它就是 Target Model。Speculative Decoding 的目标并不是用另一个较弱模型替换它。
Draft Model 则承担“提前猜测”的任务。它通常计算成本更低,并且需要能够较好地预测 Target Model 接下来可能接受哪些 Token。
| 对比 | Draft Model | Target Model |
|---|---|---|
| 主要任务 | 提出候选 Token | 验证候选并决定最终输出 |
| 计算成本 | 通常较低 | 通常较高 |
| 速度要求 | 尽可能快速 | 保持原模型能力 |
| 输出作用 | 提供推测候选 | 决定最终接受结果 |
| 关键目标 | 提高候选命中率 | 保持目标输出分布 |
因此,Draft Model 并不是越小越好。如果它速度很快,但提出的大多数 Token 都被 Target Model 拒绝,那么系统就无法一次推进多个 Token,实际加速效果会受到限制。
理想的 Draft Model 需要在两个目标之间取得平衡:足够快,同时又足够接近 Target Model 的预测行为。
Target Model 如何验证多个 Token?
这是 Speculative Decoding 最容易被误解的部分。
Target Model 并不是简单判断 Draft Model 的一句话“对不对”,而是计算候选序列各个位置的 Token 概率,并按照特定的接受规则决定哪些 Token 可以保留。
假设 Draft Model 提出:
A → B → C → D
Target Model 可以利用 Transformer 的并行计算特性,对这些位置进行一次前向评估。系统随后从第一个候选开始进行验证。
如果 A、B 和 C 被接受,而 D 被拒绝,那么通常只保留连续通过验证的前缀:
A → B → C
系统不会因为后面的某个 Token 看起来合理,就跳过前面的拒绝位置继续接受。因为一旦某个 Token 改变,后续 Token 所依赖的上下文也发生了变化。
在经典 Speculative Sampling 中,接受与拒绝还需要根据 Draft Model 与 Target Model 的概率分布进行校正,而不是简单比较两个模型的 Top-1 Token 是否相同。正是这种机制,使标准算法能够在加速的同时保持目标模型的采样分布。
Speculative Decoding 为什么能够加速 LLM?
它的核心优势来自两个因素:便宜的推测 + 并行的验证。
普通解码中,如果 Target Model 生成 100 个 Token,通常需要进行大量串行 Decode Steps。即使 KV Cache 可以避免重复计算历史 Token 的 K/V,新的 Token 仍然需要依次生成。
Speculative Decoding 让 Draft Model 先完成一部分低成本工作。如果 Target Model 每次验证能够平均接受多个候选 Token,那么需要执行的高成本串行 Target Model 步骤就会减少。
例如,在一个简化场景中:
普通解码:
Target → 1 TokenTarget → 1 TokenTarget → 1 TokenTarget → 1 Token
推测解码:
Draft → 4 Candidate TokensTarget → Verify Candidates → Accept Multiple Tokens
这并不意味着四个候选一定全部被接受,也不意味着速度一定提升四倍。实际收益取决于候选接受率、Draft Model 成本、Target Model 大小、硬件利用率以及验证开销。
因此,Speculative Decoding 的效果本质上取决于:节省的 Target Model 串行计算是否大于额外增加的 Draft 和 Verification 成本。
Acceptance Rate 为什么非常重要?
Acceptance Rate(接受率)描述 Draft Model 提出的候选 Token 有多大比例能够被 Target Model 接受,是影响 Speculative Decoding 效率的重要因素。
如果 Draft Model 经常准确预测 Target Model 的生成方向,一次验证可能接受多个 Token,系统就能快速推进生成。
反过来,如果 Draft Model 与 Target Model 差异很大,例如不断提出 Target Model 不愿接受的 Token,那么 Target Model 很快就会遇到拒绝位置。此时 Draft Model 做的大量计算没有转化为有效输出,额外推测反而可能增加开销。
候选长度同样存在权衡。一次让 Draft Model 推测更多 Token,理论上可能让 Target Model 一次推进更远;但预测得越远,不确定性通常也越大,后续候选被拒绝的概率可能增加。
因此,实际系统需要在 Draft Speed、Acceptance Rate 和 Speculation Length 之间寻找平衡,而不是单纯让 Draft Model 尽可能多生成 Token。
Speculative Decoding 会降低模型输出质量吗?
对于采用严格验证和概率校正的标准 Speculative Decoding / Speculative Sampling 算法,设计目标是保持 Target Model 的原始输出分布。
这点非常重要。
如果只是让小模型生成内容,然后大模型简单检查一下,这种近似方法可能改变最终输出。但经典 Speculative Decoding 会利用 Target Model 的概率分布进行接受、拒绝和必要的重新采样,使最终采样在理论上与直接从 Target Model 解码保持一致。
因此,标准 Speculative Decoding 的价值在于:改变生成过程的计算方式,而不是用 Draft Model 的质量替代 Target Model。
不过,“Speculative Decoding”在实际工程中也可能泛指多种推测式生成方法,并非所有变体都保证完全相同的输出分布。一些系统可能主动采用近似策略,以进一步换取速度。
所以判断某项实现是否会影响输出质量,需要看具体的验证和采样算法,而不能只看它是否使用了“Speculative”这个名称。
Speculative Decoding 与 KV Cache 有什么区别?
Speculative Decoding 和 KV Cache 都用于优化 LLM 推理,但解决的是两个不同的问题。
KV Cache 解决的是历史 Token 重复计算。它保存 Attention 中已经计算的 Key 和 Value,使新 Token 可以直接复用历史状态。
Speculative Decoding 解决的是自回归生成的串行性。它尝试让 Draft Model 一次预测多个未来 Token,再通过 Target Model 集中验证,从而减少高成本模型需要执行的串行生成步骤。
| 对比 | KV Cache | Speculative Decoding |
|---|---|---|
| 主要问题 | 历史 K/V 重复计算 | Token 逐个生成的串行瓶颈 |
| 核心方式 | 缓存历史 Attention 状态 | 提前推测多个候选 Token |
| 是否需要 Draft Model | 不需要 | 经典方案通常需要 |
| 主要影响 | Decode 计算效率 | Token 生成速度 |
| 主要代价 | KV Cache 显存 | Draft 与验证计算开销 |
两者并不是竞争关系。在实际推理系统中,Speculative Decoding 通常也会与 KV Cache 一起使用。
Speculative Decoding 和普通 Decoding 有什么区别?
普通自回归解码完全依赖 Target Model 逐步生成,每一步只确定下一位置的 Token。无论使用 Greedy、Top-k、Top-p 还是 Temperature Sampling,核心流程仍然具有串行特征。
Speculative Decoding 则在 Target Model 前增加一个“推测阶段”。Draft Model先提出未来多个位置的候选,然后 Target Model集中验证。
因此,两者最大的差异不是最终任务,而是生成过程:
| 对比 | 普通 Decoding | Speculative Decoding |
|---|---|---|
| Token 生成 | Target Model 逐步生成 | Draft 先提出多个候选 |
| Target Model | 每步执行 | 一次可验证多个位置 |
| 并行利用 | Decode 串行性较强 | 提高验证阶段并行性 |
| 额外模型 | 不需要 | 经典方案需要 Draft Model |
| 系统复杂度 | 较低 | 较高 |
| 潜在速度 | 基准 | 在合适条件下更快 |
这也是为什么 Speculative Decoding 更应该被理解为 Inference Optimization(推理优化),而不是一种新的模型训练方法。
Speculative Decoding 一定能让 LLM 更快吗?
不一定。
如果 Target Model 很大,而 Draft Model 足够轻量,同时两者预测结果高度一致,那么 Speculative Decoding 通常更容易获得明显收益。
但如果 Draft Model 本身计算成本较高,或者 Acceptance Rate 很低,那么额外的 Draft 计算和验证可能抵消节省下来的时间。
硬件环境也非常重要。在高 Batch、高吞吐量的推理服务中,GPU 本身可能已经被充分利用,Speculative Decoding 的收益可能与单请求低延迟场景不同。此外,模型大小、内存带宽、上下文长度和推测 Token 数量都会影响最终结果。
因此,“用了 Speculative Decoding”并不能直接转换成固定的加速倍数。实际效果必须结合具体模型、硬件和工作负载测试。
Speculative Decoding 还有哪些实现方式?
经典方法使用一个较小的独立 Draft Model,但“先推测、再验证”的思想已经发展出多种实现。
一种方向是使用 Self-Speculative Decoding。系统不一定运行一个完全独立的小模型,而是利用 Target Model 自身的部分层、提前退出机制或其他轻量路径产生候选。
另一种方向是 Multi-Token Prediction 或额外预测头,让模型能够一次提出多个未来 Token 的候选,再通过主模型进行验证。
还有一些方法会使用树状候选结构,不只推测一条 Token 路径,而是同时构建多个可能的未来分支,让 Target Model 在一次验证过程中寻找可接受路径。
这些方法的具体算法存在明显差异,但共同目标都是:减少昂贵 Target Model 的串行 Decode 次数,让更多计算能够并行完成。
Speculative Decoding 与 LLM 推理优化有什么关系?
Speculative Decoding 只是现代 LLM Inference Optimization 的一个组成部分。
LLM 推理性能受到计算、显存、内存带宽、请求调度和自回归生成等多个瓶颈影响,因此实际系统通常需要组合多种技术。
KV Cache 减少历史 Token 的重复 K/V 计算;Paged Attention 改善 KV Cache 的内存管理;Continuous Batching 提高多个请求共同使用 GPU 的效率;Quantization 降低权重或缓存的存储和计算成本;Speculative Decoding 则重点减少自回归 Decode 的串行瓶颈。
它们解决的问题并不完全相同。
这也说明,现代 LLM 的实际响应速度不仅由模型参数量决定。模型架构、Attention 设计、KV Cache、解码算法、GPU、推理引擎和请求调度策略共同决定了最终的推理性能。
总结
Speculative Decoding(推测解码)是一种针对 LLM 自回归生成瓶颈设计的推理优化技术。经典方案使用计算成本较低的 Draft Model 提前生成多个候选 Token,再由 Target Model 集中验证这些候选,从而尝试在一次目标模型计算中推进多个 Token。
它能够产生加速的关键,在于 Draft Model 的候选足够准确。如果 Acceptance Rate 较高,Target Model 可以一次接受多个 Token,从而减少昂贵的串行 Decode Steps;如果大量候选被拒绝,额外推测带来的成本则可能削弱加速效果。
与 KV Cache 不同,Speculative Decoding 不是为了缓存历史计算,而是试图减少逐 Token 生成带来的串行瓶颈。两者可以同时使用,并与 Continuous Batching、Paged Attention、Quantization 等技术共同组成现代 LLM 推理优化体系。
理解 Speculative Decoding,也有助于理解一个更重要的问题:提升 LLM 速度并不一定需要缩小模型或降低输出质量。通过改变推理和解码过程本身,也可以让已有模型更加高效地生成文本。
FAQ
Speculative Decoding 必须使用两个模型吗?
经典 Speculative Decoding 通常使用 Draft Model 和 Target Model,但 Self-Speculative Decoding、额外预测头等变体可以采用不同的候选生成方式。
Draft Model 越小越好吗?
不一定。Draft Model 需要足够快,同时又要与 Target Model 的预测具有较高一致性;如果模型太弱导致 Acceptance Rate 很低,整体加速效果可能下降。
Speculative Decoding 会改变 Target Model 吗?
不会修改 Target Model 的训练参数。它属于推理和解码阶段的优化技术,而不是模型训练或微调方法。
Speculative Decoding 和 KV Cache 可以一起使用吗?
可以。KV Cache 减少历史 Token 的重复 Attention 计算,而 Speculative Decoding 减少高成本模型的串行 Decode Steps,两者解决不同瓶颈,可以组合使用。
Speculative Decoding 为什么不能保证固定的加速倍数?
实际速度取决于 Draft Model 成本、候选接受率、推测长度、Target Model 大小、GPU 硬件、Batch Size 和工作负载等多个因素,因此不同部署环境中的收益可能明显不同。


