Skip to content

03. Decoding Strategies | 解码策略 ​

学习问题 ​

从首 token 之后的生成循环开始,观察单条请求每轮如何读取已有 KV 状态、产生输出,再比较生成策略对速度、质量和额外成本的影响。

核心机制 ​

Decode 是一轮一轮的小步生成:每一步读取已有 KV 状态,得到 logits,再选择下一个 token,并把新的 token 和状态追加到序列中。先用贪心解码建立基线;再把投机式生成看成一条策略链:经典 draft / target 验证、多个 token 推进与更一般的多候选验证,目标都是提高每轮有效推进量。本页重点是单条请求的生成决策;多个请求如何组织执行,放到 Task4 的调度正文中。

这里的“加速”不是简单地减少模型调用次数,而是提高每次验证真正提交的 token 数。可以用 effective_output_tokens / decode_step 表示单轮有效推进量;它必须和 acceptance_rate、验证耗时、回退次数以及最终质量一起观察。这样才能区分“候选更多”与“有效生成更多”。

Decode 策略对照

策略主要改变什么需要观察什么
贪心 Decode(基线)每轮选择 logits 最大的一个 token输出长度、TPOT、KV Cache 访问、质量
随机采样按 temperature、top-k / top-p 选择 token质量、重复率、TPOT、输出稳定性
经典投机解码draft 提议、target 验证与修正acceptance rate、验证成本、TPOT
原生 MTPverifier 内部多 Token 预测模块提出候选原生头数、接受长度、backend 命中
EAGLE外置轻量草稿器复用目标模型隐藏表示候选树、draft cost、配对 checkpoint
块级并行草稿(DFlash)block diffusion 一次提出 token blockblock 接受率、draft cost、verify cost
半自回归草稿(DSpark)置信度驱动地决定候选推进与验证预算confidence、proposal budget、负载下 TPOT
Decode Scheduling不同请求的执行顺序,属于 Task4 的请求级调度吞吐、TPOT、P99

单请求的 Decode 可以按“读取状态 → 计算 logits → 选择 token → 检查停止 → 追加状态”理解。策略改变的是其中的候选生成、验证或单轮产出;它不会自动消除 KV Cache 的容量约束,也不能用吞吐提升替代质量检查。比较 speculative decoding 或 multi-token decoding 时,还要记录接受情况和回退成本。

生成环节需要回答的问题证据
读取状态本轮使用了哪些历史 KV?Cache 长度、TPOT、读写量
选择 token是贪心、采样,还是 draft 提议后验证?temperature、top-k/top-p、acceptance rate
停止与回退何时遇到 EOS,何时拒绝候选?generated tokens、停止原因、回退次数
质量与成本更快是否保持了目标质量?质量指标、TPOT、吞吐、额外模型成本

生成策略的比较需要把“可重复性”和“质量门槛”一起固定。贪心 Decode 适合作为确定性基线;采样实验应固定随机种子和采样参数;speculative decoding 还要记录 draft 与 target 的版本、接受率和拒绝后的回退路径。只有在输出质量达到同一门槛后,TPOT 或吞吐的改善才可以作为性能收益。

候选生成的两条扩展路径 ​

经典 speculative decoding 的草稿阶段仍然通常按 token 自回归推进。原生 MTP 将预测模块放在 verifier checkpoint 内部;EAGLE 复用目标模型的隐藏表示,用外置轻量草稿器自回归扩展候选树;DFlash 则将轻量 block diffusion 模型用于并行产生一个候选 block。三者改变的是候选来源与生成拓扑,不改变“验证—接受—回退”的证据要求。EAGLE-3 论文、DFlash 论文和vLLM Speculators 算法指南给出了对应实现背景。

DSpark 进一步采用半自回归候选生成,并用置信度调度候选长度和验证预算。它同时连接了 Task2 的候选生成机制与 Task4 的服务调度:在单请求中观察置信度和有效推进量,在多请求中还要观察队列等待、TPOT 和尾延迟。DSpark 论文 和 vLLM Speculators 中的 DSpark 文档 可用于了解实现入口。

扩展路径候选生成方式Task2 重点Task4 交叉问题
原生 MTPverifier 内部预测层提出连续候选模型能力检查、连续接受与验证成本backend 是否支持原生 MTP
EAGLE多层表示融合后自回归扩展候选树候选树宽深、draft cost、checkpoint 配对树宽与 batch / KV 预算
DFlashblock diffusion 并行提出候选 blockblock 长度、接受前缀、verify 成本batch 中不同请求的 block 预算
DSpark半自回归 + 置信度调度置信度、候选长度、回退语义高负载下的动态 speculation budget
对照条件应固定的内容额外记录
贪心基线模型、Prompt、最大输出长度、停止条件输出 token、TPOT、E2E、质量基线
随机采样seed、temperature、top-k/top-p、Prompt 集重复率、格式成功率、质量分布
经典投机解码draft/target 模型、proposal 长度、验证规则acceptance rate、回退次数、额外显存
多 Token 投机式推进候选来源、单轮候选数量、接受与回退规则有效推进、验证成本、TPOT
EAGLEverifier / speculator 配对、树宽深、隐藏层配置接受长度、draft cost、树验证成本
DFlash / DSparkdraft family、proposal mode、候选预算、置信度规则block 接受率、draft/verify cost、负载下 TPOT

参考入口:论文 Fast Inference from Transformers via Speculative Decoding;开源实现 vLLM Speculative Decoding。DFlash 和 DSpark 作为候选生成与动态预算的扩展,不要求在本页重写真实 draft model。

选择条件与验证证据 ​

本节承接 02 的 Prefill 与 Attention,先用 21 Decoding Strategies建立单步生成口径,再用 23 Speculative Decoding固定精确验证。候选生成分成三条路径:35 原生 MTP、INF-EAGLE和INF-PARALLEL-DRAFTING;INF-PROPOSAL再统一预算与净收益。随后由 68 Benchmark固定真实模型的质量与成本口径,最后通过 36 Decode Scheduling进入多请求组织。

观察到的现象优先判断下一步
每轮生成耗时高Decode 计算、KV Cache 访问或 sampling检查基础 Decode 和 04
循环次数过多生成长度或单轮产出受限检查 speculative / multi-token
acceptance rate 低draft model 或 proposal 不匹配调整 draft、长度或放弃策略
多请求吞吐低、P99 高请求组织或调度问题进入 07 / 06

Released under the MIT License.