推理优化 · 推测解码
先判断它为什么只在合适负载下有效。草稿树、EAGLE / Medusa 细节看全量笔记。
0. 总图
Decode 一步通常只出 1 个 token,大模型前向很贵却常常吃不满算力。推测解码让小模型(或附加头)先猜一串,大模型一次前向并行校验,对上的整段收下。
两个角色:
- Target — 要加速的大模型,最终以它的分布为准。
- Draft — 便宜的草稿(小模型或 Medusa / EAGLE 头),连猜 k 个 token。
不是「字一样就收」。Draft 有概率 p,Target 给同一位置打分 q,用 min(1, q/p) 决定收不收,统计上仍是 Target 自己在采样。
它打的是 Decode 生成太慢(一步一字、Memory-Bound)。不替代 PagedAttention 或 Continuous Batching。
先查什么
- Decode 是不是 Memory-Bound — 算力闲着、batch 不大,草稿那点额外计算才能填闲置算力。
- 接受率 α — 收下的 draft / 总 draft。经验:> 0.6 才像样,< 0.4 先换草稿或缩短
draft_len。 - 开销比 — Draft 耗时 / Target 耗时。草稿必须足够便宜;开销比接近 1,再高的 α 也被吃掉。
- 当前 batch — 车上已经挤满时,再塞草稿计算会和大模型抢算力,加速比掉下来。
何时用、何时关掉
值得开
- 低到中等并发,Decode 明显 Memory-Bound。
- 草稿和 Target 同系列、同 tokenizer,接受率稳。
- 只挂在 Decode。Prefill 已经是大矩阵乘,再猜没有意义。
先别开 / 减步数
- 大 batch、高并发,GPU 已接近 Compute-Bound。面试口条:车没坐满时多拉人划算,满员再塞人不划算。
- 草稿太贵或 α 太低:等于白付一次前向。
- 小流量短请求、TTFT 才是瓶颈:先看 Prefill / 缓存,不是推测。
生产上常对低 batch / 长尾请求开推测,满载时关或减小草稿长度。数字必须按当前模型、版本、硬件压测,不要背论文倍数当自己的结果。
和另外几层怎么叠
口条:分页打底,两边各自持续批,推测只给 Decode,PD 决定它们分家。
- PagedAttention — 两端都要,管 KV 怎么切块。接受留页、拒绝还页。
- Continuous Batching — P 池、D 池各自调度。推测不替代插队。
- 推测解码 — 只开在 Decode。
- PD 分离 — 最外层。拆开后推测挂在 D 池;P 池不用开。
vLLM 前两样默认就有;EAGLE 用投机模型配置接入。Medusa-1 冻主干保无损,Medusa-2 联合训练更快但能动底座。
深入
- 什么是推测解码
- 大 batch 会减弱效果、EAGLE / Medusa 怎么选:见 推理优化 · 技术问答