什么是 推测解码(Speculative Decoding)?
更新于
推测解码(Speculative Decoding)是一种自回归推理方法:低成本机制先提出多个未来 Token,目标模型并行评分,再按照明确验证规则接受前缀或执行修正。
快速了解
| 创建时间 | 2022 至 2023 年由 Google Research 与 DeepMind 的独立工作提出 |
|---|---|
| 规范文档 | 官方规范 |
工作原理
保持目标分布
Greedy Decode 只有在候选 Token 与目标选择一致时才保留前缀。对随机生成,标准 Speculative Sampling 以 min(1, p(x)/q(x)) 接受候选,其中 p 与 q 分别是同一 Prefix 下目标与草稿概率;拒绝后再从归一化残差 max(0, p-q) 采样。Prefix、Probability 与 RNG Contract 必须对齐;简单比较 Token 是否相等,不能替代随机解码中的分布保真算法。
计算真实收益
Acceptance Rate 不是充分指标,真实收益由 Expected Accepted Length、Proposer Latency、Target Verification Latency、KV Memory、Sampling Overhead 和每轮 Commit Token 共同决定。短输出没有足够 Decode Step 摊薄启动成本。
高 Concurrency 下,Continuous Batching 可能已经占满目标模型的空闲算力,更宽的 Verification 反而降低 Throughput。当前 [vLLM 文档](https://docs.vllm.ai/en/latest/features/speculative_decoding/)也主要把该技术定位于中低 QPS、Memory-bound 负载,并要求按真实负载测试。
上线前验证
固定 Target、Draft、Tokenizer、Runtime、Precision、Sampling Parameter 与 Draft Length,在相同 Prompt、Output Limit、Arrival Distribution 和 Concurrency 下对比普通解码。记录每轮及各草稿位置的 Accepted Token、Proposer/Verifier 时间、TTFT、TPOT、端到端延迟、Throughput、Memory 与失败。适用时执行 Greedy Equality Test,并补充随机分布、任务质量、Structured Output 门禁;兼容性或实测加速不成立时自动回退。
主要特点
- 由低成本模型、辅助头或检索机制提出未来 Token
- 通过一次目标模型调用并行评分多个候选位置
- 只提交被接受前缀以及目标模型产生的修正或奖励 Token
- 仅在正确实现指定 Rejection Sampler 时保持目标分布
- 用更少串行目标调用换取提案、验证、显存与调度开销
- 收益依赖工作负载,在短输出或高并发下可能消失
常见用途
- 降低中低 QPS 交互式生成的 TPOT
- 使用匹配良好的草稿机制加速长 Decode 负载
- 为重复文本与代码采用 n-gram 或 Suffix Proposal
- 评估原生 Multi-Token Prediction 或学习型 Draft Head
- 在不更换公开目标模型的情况下 Canary 验证 Decode 优化
示例
Loading code...常见问题
推测解码会返回完全相同的输出吗?
标准验证会在数值精度范围内保持目标概率分布。Greedy Equality 可以直接测试,但随机生成不保证逐 Token 相同,因为 RNG 消费、Floating-point Kernel 与 Batch 组成可能不同。
Acceptance Rate 与 Acceptance Length 有什么区别?
Acceptance Rate 是已接受草稿 Token 除以候选 Token;Acceptance Length 表示一轮在拒绝前提交多少草稿 Token。端到端速度更直接取决于 Commit 进度相对提案与验证成本,因此两者都要报告。
推测解码能降低 TTFT 吗?
它通常直接优化首 Token 之后的 Decode Latency。独立 Draft Prefill 或初始化可能让 TTFT 不变甚至更差,短回答尤其如此,不能根据 TPOT 变快推断 TTFT 改善。
为什么推测解码可能损害高并发吞吐?
宽 Verification 会占用 Continuous Batching 原本可服务真实请求的算力与显存。Concurrency 上升、Target 进入 Compute-bound 后,额外提案与验证成本可能超过减少串行 Decode Round 的收益。
如何选择草稿机制?
在真实领域测量 Proposer Cost 与 Accepted Length,并检查词表、Runtime、Memory、Draft Length、Sampling 行为和部署复杂度。参数更少不等于 Draft 必然便宜或与 Target 足够匹配。