少起草,多检索:面向推测解码的混合树构建方法 Graft Draft Less, Retrieve More: Hybrid Tree Construction for Speculative Decoding
提出 Graft 框架,将动态剪枝释放的候选预算用检索补回,在不增加验证开销下同时提升推测解码的速度与平均接受长度。
前置知识
推测解码(Speculative Decoding)
推测解码是一种无损加速自回归 LLM 推理的范式:先用一个小而快的草稿模型(drafter)连续提出若干候选 token,再让目标大模型在一次并行前向中同时验证这些候选,从而把逐 token 的串行解码改为「多步并行验证」。其加速比公式为 $S(T)=\frac{(M(T)+1)\,T_{ar}}{C(T)}$,其中 $M(T)$ 是平均接受长度(MAT),$C(T)=T_{draft}(T)+T_{verify}(T)$ 是每步总成本。
本文所有讨论都建立在「草稿-验证」流水线上,MAT 与 wall-time speedup 是衡量 Graft 收益的核心指标,不理解这一范式就难以读懂后续对剪枝-检索预算再分配的论述。
树形草稿与树注意力(Tree Drafting / Tree Attention)
为了让一次验证接受更多 token,EAGLE-3 等方法把单一链式草稿扩展成 token 树,树的每条分支是一条候选延续,并通过特殊的树形 attention mask 让目标模型在一次前向中同时评估所有分支。树的形状(最大深度 $D_E$、最大宽度 $W_E$)是静态的。
Graft 的核心就是在不改变这棵静态树的总验证预算 $K_{max}$ 的前提下,重新分配树里「保留的草稿节点」与「嫁接的检索节点」的数量;tree-attention 接口是 Graft 保持推理路径不变的关键。
动态深度剪枝(Dynamic-Depth Pruning)
指在草稿模型置信度低时,把树在某个 checkpoint $d\in D_{prune}$ 处截断,只展开到更浅的深度,从而节省昂贵的草稿端计算。常用做法是比较草稿对数概率的累积路径分数 $S_{d,j}$,并以阈值 $\tau_d$ 决定是否继续展开:$g_d=\mathbb{1}[c_d>\tau_d]$。
Graft 正是利用剪枝「释放出来的候选 slot」来安放检索节点,因此必须理解剪枝如何产生预算、以及为什么纯剪枝无法突破 $M(T_\pi)\le M(T_E)$ 的上限。
平均接受长度(Mean Accepted Length, MAT)
MAT = $M(T)=\mathbb{E}[L(T)]$,即每个验证步实际被目标模型接受的 token 数期望。它直接决定了一次验证能推进多少步,是 wall-time speedup 公式的分子。剪枝会降低 MAT,检索嫁接的目标之一就是把 MAT 拉回甚至超过静态树。
Graft 的核心论点是「同时提升 speedup 和 MAT」——如果只是把树变快但 MAT 下降,不能算真正突破 Pareto 前沿。所有实验都同时报告这两个指标。
基于检索的推测解码(Retrieval-based SD)
不依赖独立草稿模型,而是从 prompt 或生成历史中查找常见 n-gram 复用为候选 token 的方法,代表工作有 PLD、Lookahead、Token Recycling 等。优势是开销极小,缺点是覆盖度有限,且大多需要 CPU 端 trie/哈希查找。
Graft 把检索从「独立 drafter」变成「填充剪枝 slot 的补偿模块」,并用 GPU 邻接矩阵替代 CPU 端查找;理解纯检索方法的不足,才能看懂 Graft 嫁接策略的动机。
研究动机
现代 LLM 的自回归解码天然是逐 token 串行的,每生成一个 token 都要重新跑一次目标模型的前向,这成为延迟的主要瓶颈。推测解码用「草稿-验证」范式缓解这一点,但最近的 EAGLE-3 等方法把单一链式草稿扩展成宽而密的 token 树——例如在 Vicuna-13B 的 HumanEval 上,dense 树能让 MAT 达到 8.42,但树的总节点数往往达到 60~64 个,这直接放大草稿端的搜索开销、显存带宽消耗以及目标端的验证工作量。结果是「树越大,MAT 越高,但端到端 wall-time 加速比不一定变好」,dense EAGLE-3 在短上下文五个基准上的平均加速比反而只有 3.91×。为了解决这一矛盾,DDD、SVIP、ECHO 等动态剪枝方法在草稿置信度低时把树截到更浅的深度来降低 $C(T)$,但作者在第 2.1 节用形式化论证指出,剪枝后的树严格是原 dense 树的子树 $T_\pi\subseteq T_E$,因此 $M(T_\pi)\le M(T_E)$ 恒成立;图 1 也清楚显示 DDD/SVIP/ECHO 都向右(变快)移动,但都掉到 dense EAGLE-3 的 MAT 上界之下。这是一条「快但短」的 Pareto 前沿,无法被单纯剪枝突破。
本文的目标是本文的核心目标是打破「剪枝越深、MAT 越低」这一 Pareto 约束,在不增加目标端验证预算的前提下同时提升 wall-time speedup 和 MAT。具体而言,作者希望保留剪枝带来的草稿成本节省(自由 slot),同时用某种「便宜、覆盖广」的候选源把那些被剪掉的 slot 重新填上,使得最终混合树 $T_G=T_\pi\cup G$ 的节点数仍然 $\le |T_E|$,但节点身份可以落在原静态子树之外,$T_G\not\subseteq T_E$。最终希望 Graft 在短上下文、长上下文、大模型、高并发服务等多种部署场景下建立新的 speed-MAT Pareto 前沿。
与已有工作不同的是,作者找到了一个非常巧妙的切入角度:把剪枝重新理解为「预算释放」而非「候选删除」。传统观点把剪枝看作「为了变快而牺牲 MAT」,作者则反过来问:被释放的 slot 是不是应该被更便宜的检索候选填充?已有的检索型 SD 方法(PLD、TR、Lookahead、SAMD)要么把检索作为独立 drafter,要么把检索质量当路由信号,要么严重依赖 CPU 端的 trie/哈希/同步结构,在高并发大模型服务里反而可能抵消推测收益。Graft 的独特之处在于:(1) 提出「prune-then-graft」耦合框架,让剪枝与检索互相补偿,slot 必须由剪枝释放、由检索填充;(2) 用 GPU 驻留的邻接矩阵 $M\in V^{|V|\times k}$ 把检索做成常数复杂度的行-列查表,避免 CPU 同步;(3) 让 root-centered 检索在草稿阶段并行展开,只在剪枝阶段决定保留哪段模板,保证不增加串行 critical path;(4) 完全 training-free 且 lossless,复用目标模型的标准 tree-attention 验证接口,不动目标权重也不改解码分布。简言之,已有工作要么只剪枝、要么把检索当独立 drafter、要么把检索当路由信号,没人把检索定位成「动态剪枝 slot 的填充材料」并把它深度耦合进 tree-attention 验证路径。
核心方法
Graft 的整体思路可以一句话概括为「draft less, retrieve more」:在草稿模型不确定时不要硬往深处展开,而是把省下来的候选预算拿给检索去生成另一条候选链,再用目标模型一次并行验证这条混合树。技术上,Graft 以 EAGLE-3 风格的 dense token 树为底座,但中间插入三步耦合操作——(1) 预算释放:在少量「校准好的剪枝 checkpoint」$d\in D_{prune}$ 上比较路径置信度 $c_d=\exp\max_j S_{d,j}$ 与阈值 $\tau_d$,一旦 $g_d=0$ 就在该点截断;(2) 检索嫁接:以当前根 token $x_t$ 为根,从 GPU 邻接矩阵 $M$ 里查表并行展开一个 retrieval 模板 $G_{ret}^s$,再按剪枝阶段 $s$ 截取相应前缀补到剪枝释放出的 slot 上;(3) 混合验证与在线更新:把保留的草稿节点和检索节点压平成一棵大小仍为 $K_{max}$ 的混合树送进标准 tree-attention 验证,并用目标模型在验证节点上的真实分布刷新 $M$。这一设计的关键直觉是:剪枝与检索天然互补——剪枝省下的是「草稿端计算预算」,检索补回的是「候选覆盖度」,两者合起来既快又长。
Graft 的核心创新在于把「动态剪枝」与「检索补 slot」设计为一对互锁操作,而不是两个独立模块。形式上,原 dense 树的总验证预算 $K_{max}$ 被分解为 $K_{max}=K_{draft}^s+K_{ret}^s$,其中 $K_{draft}^s$ 取决于剪枝阶段 $s$(论文中 60 节点预算下分别取 8/24/40),$K_{ret}^s$ 是补足差值的检索节点数。这意味着 Graft 的最终验证预算与 EAGLE-3 相同,但候选身份可以落到 $T_E$ 之外,从而绕过 $M(T_\pi)\le M(T_E)$ 的上界约束。技术上的三个本质区别是:(1) 检索被嵌入 tree-attention 路径而不是并行独立 drafter,避免 CPU 同步且不增加目标 forward;(2) 用 GPU 邻接矩阵 + root-centered 模板实现常数成本查表,使检索开销远小于一次草稿 forward;(3) 引入「calibrated pruning checkpoints」和基于目标模型验证信号 $M[\tilde{x}_i]=\arg\text{top-}k(\tilde{p}_{i+1})$ 的在线刷新,让检索字典随上下文动态对齐当前 prompt/历史,而 PLD 那种 prompt-only 缓存只会在长 prompt 上越来越稀薄。
方法步骤详情
Graft 的执行流程可拆成三步:(1) **预算释放(剪枝)**:在草稿树展开到第 $d$ 层时,累计路径分数 $S_{d,j}=S_{d-1,F(j)}+\log q(x_{d,j}\mid h_{d-1,F(j)})$,取 $c_d=\exp\max_j S_{d,j}$,与校准阈值 $\tau_d$ 比较得到 $g_d=\mathbb{1}[c_d>\tau_d]$;若 $g_d=0$ 则在第 $d$ 个 checkpoint 把树截断,跳过更深的草稿展开,浅层 checkpoint 的阈值更严格以减少累积误判。剪枝阶段 $s$ 决定保留的草稿节点数 $K_{draft}^s$(例如 $s\in\{d_0,d_1,d_5\}$ 对应 8/24/40),剩余 $K_{ret}^s=K_{max}-K_{draft}^s$ 个 slot 全部交由检索填充。(2) **检索嫁接**:以当前根 token $x_t$ 为起点,从 GPU 邻接矩阵 $M$ 中按行查找 top-$k$ 后继,即 $x_u=M[x_{F(u)}, r_u]$,并行展开一个 stage-adaptive 模板 $G_{ret}^s$(默认深度/宽度对齐 base tree $D_E/W_E$,但按剪枝阶段取相应子模板)。重要的是,root-centered 的检索在草稿阶段就已经并行开始展开 envelope,只在剪枝结束后截取与 $K_{ret}^s$ 匹配的子模板拼接到 $T_\pi$ 中,因此不会在 critical path 上新增串行阶段。(3) **混合验证与在线更新**:把保留的草稿节点与嫁接的检索节点扁平化成大小为 $K_{max}$ 的 token 列表,重建标准 tree position IDs、ancestor mask 和 candidate path indices 送进目标模型做一次并行验证;接受规则与标准 SD 完全一致,因此保留 lossless 性质。验证后,对每个被验证的 token $\tilde{x}_i$(无论最终是否被接受),都用目标模型在 $i+1$ 位置的 next-token 分布 $\tilde{p}_{i+1}$ 刷新对应行的 top-$k$ 后继,从而让 $M$ 越来越贴合当前上下文。
技术新颖性
技术新颖性主要体现在三点:(1) **预算再分配视角**:把「剪枝」从「被动裁剪候选」重新诠释为「主动释放预算」,并把「检索」从「独立 drafter」重新诠释为「预算补偿源」,这是对动态推测解码设计空间的概念性扩展,论文第 2.1 节给出了 $S(T_\pi)/S(T_E)$ 分解公式与 $1-\prod_d(1-\epsilon_d)$ 的累积误判上界来支撑该视角。(2) **prune-then-graft 耦合设计**:作者通过对比实验(Figure 2)证明,纯 root 嫁接 $G_{ret}^{root}$ 会挤占 root 附近强草稿节点导致平均加速比不如 EAGLE-3,纯 tail 嫁接 $G_{ret}^{tail}$ 又强依赖整条草稿前缀被接受,而 prune-then-graft 把检索精确安放在「剪枝真正创造空间」的位置,并配合 stage-adaptive 模板实现端到端最优。(3) **GPU-resident 在线邻接矩阵 + 树状验证路径复用**:$M\in V^{|V|\times k}$ 直接驻 GPU,检索退化为单次 row gather,没有 CPU 通信也不需要额外目标 forward;50 轮 warm-up 也只占 2.32 MB(Table 4)。同时验证阶段完全复用 EAGLE-3 的 tree-attention 接口,$|T^s|=K_{max}$ 恒定,serving kernel 不用做 ragged-batch 适配,这对工业部署至关重要。
实验结果
作者在短上下文(5 个基准 × 5 个目标模型)、长上下文(5 个基准 × 4 个目标模型)、高并发服务(Qwen3-8B × SGLang)、温度采样($T=1$)和 DFlash block 草稿五个场景下做了系统实验,核心发现如下。**(1) 短上下文 Table 1**:Graft 在所有模型上同时提升 speedup 与 MAT。Vicuna-13B 平均 speedup 从 EAGLE3-2K 的 3.91× 升到 4.20×(+7.4%),相比纯剪枝的 ECHO 4.07× 也提高 3.2%;LLaMA3.1-8B 上 3.73×→3.97×(+5.9%);Qwen3-8B 上 2.10×→2.43×(+15.7%),各任务提升 9.6%~21.5%;Qwen3-32B 上 2.12×→2.49×(+17.5%),平均 MAT 也增加 6.4%;Qwen3-235B 上 1.71×→2.09×(+21.8%),CNN/DM 任务上提升高达 26.2%,单任务最高 5.41×(Vicuna-13B HumanEval)。这说明当大模型平均接受长度较小、推测空间有限时,剪枝释放出的预算最难被填满,而检索嫁接正好提供「不需要强草稿」的高质量候选。(2) **长上下文 Table 2**:Graft 在 LLaMA3.1-8B 长上下文上平均 speedup 3.22×,比 EAGLE3-64K 的 2.92× 高 10.3%,比 TokenSwift 1.67× 高 92.8%、比 TriForce 1.81× 高 77.9%、MagicDec 因为不兼容甚至掉到 0.74×。Qwen3-4B/8B/14B 分别提升 18.7%、20.2%、16.6%。MAT 也同步增长(Qwen3-14B 1.86→2.17)。代码补全类任务收益尤其突出(Qwen3-8B LCC +32.4%,RepoBench-P +38.6%),因为仓库级代码天然包含大量重复模板。(3) **上下文长度缩放 Table 3**:4K→32K 上 Graft 的相对优势单调扩大,四模型平均从 4K 的 10.2% 增到 32K 的 14.0%,Qwen3-14B 单独看从 13.0% 涨到 17.8%。这是因为长 prompt 一方面让草稿端 attention 更贵(剪枝收益放大),另一方面提供了更多 local transition 让 $M$ 更准(检索收益放大)。(4) **温度采样 Table 5**:$T=1$ 下 LLaMA3.1-8B 上 Graft 3.43× 比 EAGLE3 3.17× 高 8.2%,Qwen3-8B 上 2.26× 比 EAGLE3 1.85× 高 22.2%,证明剪枝+检索耦合在目标分布变平时仍然有效。(5) **DFlash block 草稿 Table 6**:把 Graft 嫁接到 DFlash 之上,Qwen3-8B 上把 DFlash 的 3.40× 提升到 3.71×(+9.1%),CNN/DM 和 Alpaca 上分别 +20.2% 和 +13.7%,验证「prune-then-graft」思路可推广到非自回归草稿。(6) **组件消融 Figure 5**:在 LLaMA3.1-8B 上,去掉检索(仅剪枝)平均 3.74×,去掉剪枝(固定预算切分)3.62×,完整 Graft 3.97×;Qwen3-8B 上对应数字 2.20×/1.95×/2.43×,证明两者是互补而非可替代。(7) **检索模板形状 Figure 6**:深度 $d$ 从 2 增到 8 速度从 2.34× 升到 2.86×,再深就衰减;宽度 $w$ 类似,最佳在 $w=8$ 附近,对应 base tree envelope 形状最优。(8) **Warm-up Table 4**:5 轮 warm-up(仅 0.37 MB)就能把 HumanEval 速度从 2.37× 拉到 2.51×,50 轮 2.32 MB 时再涨到 2.68×,但作者默认用 5 轮以保证实时性。(9) **高并发 SGLang Figure 7**:Qwen3-8B 在 BS=1~16 范围内,MAT 与吞吐量(tokens/s)都稳定高于 EAGLE3,+3.1%~+5.5% 区间,说明检索嫁接在固定每请求预算下依然有效。
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| 短上下文平均(HumanEval/GSM8K/CNN/DM/Alpaca/MT-Bench, Vicuna-13B) | Wall-time speedup | 4.20× (Graft) | 3.91× (EAGLE3-2K) | +7.4% |
| 短上下文平均(5 benchmarks, LLaMA3.1-8B) | Wall-time speedup | 3.97× (Graft) | 3.73× (EAGLE3-2K) | +5.9% |
| 短上下文平均(5 benchmarks, Qwen3-8B) | Wall-time speedup | 2.43× (Graft) | 2.10× (EAGLE3) | +15.7% |
| 短上下文平均(5 benchmarks, Qwen3-32B) | Wall-time speedup | 2.49× (Graft) | 2.12× (EAGLE3) | +17.5% |
| 短上下文平均(5 benchmarks, Qwen3-235B) | Wall-time speedup | 2.09× (Graft) | 1.71× (EAGLE3-2K) | +21.8% |
| HumanEval (Vicuna-13B) | Wall-time speedup | 5.41× (Graft) | 4.80× (EAGLE3-2K) | +12.7% |
| 长上下文平均(QMSum/GovReport/MultiNews/LCC/RepoBench-P, LLaMA3.1-8B) | Wall-time speedup | 3.22× (Graft) | 2.92× (EAGLE3-64K) | +10.3% |
| 长上下文平均(5 benchmarks, Qwen3-4B) | Wall-time speedup | 1.99× (Graft) | 1.68× (EAGLE3-64K) | +18.7% |
| 长上下文平均(5 benchmarks, Qwen3-8B) | Wall-time speedup | 1.85× (Graft) | 1.54× (EAGLE3-64K) | +20.2% |
| 长上下文平均(5 benchmarks, Qwen3-14B) | Wall-time speedup | 2.17× (Graft) | 1.86× (EAGLE3-64K) | +16.6% |
| RepoBench-P (Qwen3-8B, 32K) | Wall-time speedup | 1.76× (Graft) | 1.27× (EAGLE3-64K) | +38.6% |
| LCC (Qwen3-8B, 32K) | Wall-time speedup | 1.96× (Graft) | 1.48× (EAGLE3-64K) | +32.4% |
| 32K 上下文 (4 models avg.) | Relative gain over EAGLE3-64K | +14.0% | — | 单调放大(4K +10.2% → 32K +14.0%) |
| 随机采样 $T=1$ (LLaMA3.1-8B avg.) | Wall-time speedup | 3.43× (Graft) | 3.17× (EAGLE3) | +8.2% |
| 随机采样 $T=1$ (Qwen3-8B avg.) | Wall-time speedup | 2.26× (Graft) | 1.85× (EAGLE3) | +22.2% |
| DFlash block 草稿 (Qwen3-8B avg.) | Wall-time speedup | 3.71× (Graft-DFLASH) | 3.40× (DFLASH) | +9.1% |
| 高并发 SGLang BS=1~16 (Qwen3-8B avg.) | Throughput 增益 | +3.1%~+5.5% over EAGLE3 | EAGLE3 (SGLang) | 稳定正增益 |
| Warm-up 5 轮 (Qwen3-32B HumanEval) | Storage / speedup | 0.37 MB / 2.51× | 0 轮: 0 MB / 2.37× | +5.9% 速度, 0.37 MB 内存 |
局限与改进
作者在论文第 4.4 节、5.4 节和 6 节明确承认了几点局限:(1) **检索的局部性依赖**:Graft 的检索最有效的场景是 prompt 或生成历史里有可复用的 local transition(重复短语、文档实体、代码模板),对真正「自由生成」、几乎没有局部重复的内容(如开放 chat、复杂数学),检索 hit 率会下降,剪枝释放的 slot 难以被填满,这时退化为纯剪枝行为。(2) **高并发实现的未优化**:作者坦诚当前 SGLang 实现只做了轻量级修改,没有专门优化 retrieval kernel、调度器放置和 ragged-batch 适配,因此 Figure 7 中的高并发收益(+3.1%~+5.5%)相对短上下文的 +20% 量级要温和得多,未来还有较大优化空间。(3) **DFlash 探索是初步的**:Table 6 的 +9.1% 增益来自 demo 式的实现,block drafter 的拓扑、confidence 校准和检索模板形状都与自回归树不同,目前没有系统化的设计。(4) **检索矩阵的初始化偏差**:warm-up 用的是 ShareGPT 语料,与下游任务分布不完全匹配,Appendix C.4 显示把 HumanEval 上校准的阈值直接迁移到其他任务会有 minor 退化。(5) **$T=1$ 退化为头部用例**:当温度上升、目标分布变平时,检索后继的 top-$k$ 质量会下降,因为上下文 token 的高频后继可能并不符合 target 接受规则。从 Table 5 看 $T=1$ 下 Graft 仍优于基线,但增益幅度(+8.2%~+22.2%)弱于 greedy 设置下的部分基准。(6) **强依赖 base tree drafter 质量**:Graft 在 Vicuna-13B 上增益仅 +7.4%,因为 EAGLE-3 在这个模型上已经很接近 dense-tree MAT 上界,剪枝释放的预算空间本来就不大。(7) **未探索与 KV-cache 优化协同**:长上下文上 TriForce、MagicDec 通过稀疏/部分 KV 草稿降注意力成本,但需要改变验证接口;Graft 没有与这些方法深度集成(作者明确表示其定位是「不修改 tree-attention 路径」)。我自己的额外观察:(8) 邻接矩阵 $M$ 的大小与 $|V|\times k$ 成正比,在 100K+ vocab 上需要谨慎选择 $k$;(9) stage-adaptive 模板目前是手工设计的(附录 A.1),没有学习式自动化方案;(10) 论文未报告在多轮对话/工具调用这种高结构化但跨轮局部重复较少的任务上的表现。
独立分析的弱点
**弱点 1:检索的覆盖度受限于 prompt/历史的局部结构。** 现实中很多任务(创意写作、复杂多跳推理、自由对话)几乎没有可复用的 n-gram 模式,邻接矩阵 $M$ 中的 top-$k$ 后继可能与目标分布严重偏离。这种情况下剪枝释放的 slot 难以被有效填满,方法退化为「仅剪枝的 ECHO 类行为」,MAT 提升有限。**改进方向**:可结合「目标模型在 prompt 上的先验分布」做隐式检索,或引入神经网络式 retrieval encoder 把非局部语义模式也编码进 $M$;另一个思路是设计 fallback 机制——当 $M$ 的 top-$k$ 置信度低时,重新分配更多 slot 给草稿端。**弱点 2:Stage-adaptive 模板是手工设计且依赖 base tree 形状。** 论文承认模板的深度/宽度组合 $d=8, w=8$ 来自 Figure 6 的网格搜索,跨模型、跨任务没有自适应。在 MT-Bench 等长尾任务上,最优 $(d, w)$ 可能差异很大。**改进方向**:可学习式模板生成器(比如用一个轻量 policy network 在每个 checkpoint 预测最优形状),或者用预收集的验证集做 offline 校准 + 在线 adapt。**弱点 3:高并发场景的实现不完整。** SGLang 实验明确说没有优化 retrieval kernel 和调度,这意味着 retrieval 邻接矩阵的查表开销在 BS 较大时可能成为新瓶颈。**改进方向**:把邻接矩阵做 kernel fusion 进 tree-attention;用 per-request 缓存避免重复 gather;在调度器层面把同一个 root token 的请求 batch 起来以摊销查表成本。**弱点 4:DFlash block 嫁接只是 demo。** 当前在 block 内部没有 confidence-guided 位置选择,graft 是在整块层做的粗粒度操作。**改进方向**:从 DFlash 草稿 logits 出发做 token 级 confidence 估计,针对 block 内部每个位置独立决定「剪掉 / 保留 / 嫁接」;探索 block 内部树形 expansion 模板。**弱点 5:未与 KV-cache 优化方法深度集成。** 长上下文下 TriForce 等方法通过 sparse KV 草稿降低 attention 成本,但 Graft 没有与这些方法叠加。**改进方向**:把 Graft 嫁接在 sparse-KV 草稿之上,研究两层 Pareto frontier 能否进一步突破。**弱点 6:warm-up 阈值对任务分布敏感。** 虽然 Appendix C.4 显示迁移性可以接受,但仍有 minor 退化。**改进方向**:online calibration 机制——在每个新任务的前几个 step 用小窗口重新校准 $\{\tau_d\}$。**弱点 7:vocab 大的模型上邻接矩阵存储成本上升。** $M\in V^{|V|\times k}$ 在 100K+ vocab 上即便 $k=8$ 也可能到 MB 级。**改进方向**:稀疏化存储(只为高频 token 维护 top-$k$),或用 hash-based 邻接表压缩。
未来方向
作者在第 4.5 节明确提出了两个延伸方向。**方向 1:Grafting for block drafters (DFlash)**。DFlash 一次并行草稿 16 个 token 显著降低草稿延迟,但块内 token 的接受率并不均匀(MT-Bench 上仍只有 5~7 MAT)。作者已经在 Qwen3-8B 上验证了 Graft-DFLASH 能把 DFlash 的 3.40× 拉到 3.71×(+9.1%),下一步要系统化地设计 block 内 token 级的 confidence 剪枝规则(而非整块级),并设计专门适配 block 拓扑的检索嫁接模板。**方向 2:Hybrid drafting for RL rollouts**。作者观察到大规模 RL rollout(特别是 GRPO 类 group sampling)下,独立的 static draft model 容易因 target policy 漂移而失效;纯检索方法如 Seer 依赖组内 n-gram 重叠,hit 率随温度升高不稳定。作者提议把 MTP(multi-token prediction,挂在 target model 内部)当作「稳定 throughput floor」,把 online n-gram retrieval 当作「高质量 long continuation source」,再用 Graft 风格的 confidence 剪枝决定哪些 MTP 位置让给检索,这对 Agentic RL 中尾请求主导迭代时间的问题尤其有吸引力。除作者提出的方向外,基于本文结果还可以延伸:(3) **与稀疏 KV 草稿叠加**:研究 Graft + TriForce/MagicDec 的两层 Pareto frontier;(4) **跨请求共享邻接矩阵**:同一服务的相似请求共享 $M$ 的一部分 row,进一步降低单请求存储;(5) **任务自适应模板**:用任务 embedding 预测最优 $(d, w)$,实现 zero-shot 部署;(6) **工具调用与结构化输出的检索嫁接**:tool call schema、JSON 模板天然有高重复性,是检索的高价值场景;(7) **Speculative decoding for code agents**:仓库级代码补全(RepoBench-P 已有 +38.6% 增益)可推广到 code agent 的多轮工具调用。
复现评估
复现性整体较好。**开源情况**:作者来自浙大和阿里 Qwen 应用团队,方法在 HuggingFace transformers + SGLang 框架中实现,所有 attention 都用 PyTorch SDPA 标准化以便对比。论文明确指出「All baselines are reproduced using their official configurations」,并把超参放在 Appendix C。**数据**:短上下文用 EAGLE-3 和 Spec-Bench 的标准 5 个 benchmark(HumanEval、GSM8K、CNN/DM、Alpaca、MT-Bench);长上下文用 LongBench 的 5 个子集(QMSum、GovReport、MultiNews、LCC、RepoBench-P),并给出 4K/8K/16K/32K 长度缩放切片。warm-up 使用 ShareGPT,与所有评估集不相交,避免了数据污染。**算力**:所有实验在 8 张 NVIDIA H20 GPU 上运行;高并发实验用 SGLang,batch 1~16。EAGLE-3 在 long context 下使用 YaRN 适配的 64K checkpoint。**复现难度**:低-中。方法本身 training-free 和 lossless,不涉及模型重训;模板形状、warm-up 轮数(默认 5 轮)等关键超参都在主文和附录中给出;可变的只有 base tree drafter 的具体选择(论文默认 EAGLE-3,$K_{max}=60$),需要复用其官方 checkpoint。**潜在难点**:(a) GPU 邻接矩阵的具体实现和 gather kernel 需要根据推理框架(vLLM、SGLang、HuggingFace)适配;(b) YaRN 64K 适配的 EAGLE3 checkpoint 需要从 SpecPV 等仓库获取;(c) 高并发场景的 SGLang 集成还处于早期,需要自己补全调度优化。
论文图表
散点图:横轴是 wall-time speedup,纵轴是 mean accepted length(MAT)。同时绘制了 dense EAGLE3(Dense EAGLE length bound)、Graft、ECHO、SVIP、DDD、EAGLE3 自身。DDD/SVIP/ECHO 都在 EAGLE3 的右侧(更快)但 MAT 显著低于 EAGLE-3 上界;Graft 落在最右上角,同时高 MAT 又高 speedup。
这是论文核心论点的可视化证据——纯剪枝只能在「剪枝 frontier」上向右下移动,引入检索后才能同时向右和向上移动,是理解「为什么需要 prune-then-graft」的关键图。
柱状图比较 TR、PLD、EAGLE3、Graft(ROOT)、Graft(TAIL)、Graft 六个方法在 HumanEval/GSM8K/CNN/DM/Alpaca/MT-Bench 五个短上下文基准上的 speedup。EAGLE3 平均 3.73×,Graft(ROOT) 4.02×,Graft(TAIL) 4.01×,Graft 4.20×。PLD/TR 远低于 2×。
展示「单纯把检索当独立 drafter(Graft(ROOT)/(TAIL))收益有限、纯检索方法(PLD/TR)远不如 tree drafter」,由此推出「检索必须嫁接到剪枝 slot」这一关键设计选择。
示意图展示三种把检索 token 插入固定候选预算的方式:(a) Graft(root) 把检索分支挂在根节点,与原 EAGLE 候选并列竞争 root slot;(b) Graft(tail) 把检索 token 接到已有分支末尾,强依赖整条草稿前缀被接受;(c) Graft(prune then retrieval) 在剪枝节点处直接替换为检索分支。
直观对比三种嫁接策略对应的拓扑差异,是理解「为什么 prune-then-graft 优于 root/tail 嫁接」的必要插图。
Graft 框架总览,分三栏。(a) EAGLE 草稿树在 stage $s$ 触发剪枝 $g_d=\mathbb{1}[c_d>\tau_d]=0$,释放部分 candidate budget。(b) 以当前 token $x_t$ 为根,从 GPU 邻接矩阵 $M$ 用 stage-adaptive template $G_{ret}^s$ 取出 top-$k$ 后继填充释放的 slot。(c) 把保留的 EAGLE 节点和嫁接的检索节点扁平化成 $K_{max}$ 大小的混合树送进 Target LM 一次并行验证;用验证后的目标分布刷新 $M$。
这是论文方法部分的核心总览图,把三步耦合流程(剪枝→嫁接→验证)在一张图里讲清楚,是理解整个 Graft pipeline 必看的图。
柱状+折线图比较 w/o retrieval(保留剪枝、不嫁接)、w/o prune(固定预算切分、不做动态剪枝)、完整 Graft 在五个短上下文基准上的 speedup 与 MAT。LLaMA3.1-8B:w/o retrieval 3.74×、w/o prune 3.62×、Graft 3.97×;Qwen3-8B:2.20×/1.95×/2.43×。
组件消融图,定量证明「剪枝+检索」两者互补、缺一不可,是评估 Graft 设计合理性的关键实验。
两个子图:(a) 改变 retrieval 最大深度 $d\in\{2,4,8,10,12\}$,speedup 在 $d=8$ 达到峰值 2.86×、MAT 3.54;过深反而衰减。(b) 改变最大宽度 $w\in\{2,4,8,10,12\}$,同样在 $w=8$ 达到最佳。
支撑「stage-adaptive 模板的形状应该对齐 base tree envelope」这一设计决策,避免读者手工调参。
柱状图比较 EAGLE3 与 Graft 在 SGLang serving 下 BS=1,2,4,8,16 的吞吐量(tokens/s)和 MAT,涵盖 HumanEval/GSM8K/MT-Bench 三个基准。Graft 吞吐量增益 +3.1%~+5.5%、MAT 提升 +4.1%~+5.5%。
验证 Graft 在高并发工业部署下的有效性,是论文贴近落地场景的关键 sanity check。
大表覆盖 Vicuna-13B、LLaMA3.1-8B、Qwen3-8B/32B/235B 五个目标模型 × 8 个方法(Lookahead/Sps/Medusa/PLD/SAMD/TR/DDD/ECHO/EAGLE3-2K/Graft)× 5 个基准。每个 cell 报告 MAT 和 speedup。Graft 在所有模型上平均 speedup 都最高(4.20×/3.97×/2.43×/2.49×/2.09×),相比 EAGLE3 分别 +7.4%/+5.9%/+15.7%/+17.5%/+21.8%。
主结果表,覆盖短上下文 5 个模型 × 5 个基准 × 8 个方法,是论文最核心的定量证据。
长上下文主结果表,覆盖 LLaMA3.1-8B、Qwen3-4B/8B/14B 四个模型 × EAGLE3-64K、Graft 两个方法 + LLaMA3.1-8B 上还对比 MagicDec/TokenSwift/Triforce。Graft 在 LLaMA3.1-8B 上 3.22×,相比 EAGLE3-64K 2.92× 提升 10.3%;Qwen3-4B/8B/14B 分别 +18.7%/+20.2%/+16.6%。
证明 Graft 在长上下文场景下优势更突出(草稿更贵 + 检索证据更多),是论文第二个核心实验。
把 QMSum 样本按 4K/8K/16K/32K 切片,对比 Graft 与 EAGLE3-64K 的 speedup 和吞吐量(tokens/s)。Graft 相对优势从 4K 的 +10.2% 单调扩大到 32K 的 +14.0%,Qwen3-8B 单独看 10.0%→16.5%,Qwen3-14B 13.0%→17.8%。
证明「上下文越长,Graft 优势越大」——剪枝成本上升与检索证据丰富同时放大,是论文解释机制有效性的关键缩放实验。
小表显示 warm-up 轮数 $K\in\{0,1,3,5,10,25,50\}$ 对应的存储(MB)和 HumanEval/GSM8K/MT-Bench 上的 speedup。5 轮 0.37 MB 时 HumanEval 已从 2.37× 升到 2.51×;50 轮 2.32 MB 时升到 2.68×。
支撑「默认 5 轮 warm-up」的选择,平衡存储与加速。
在 $T=1$ 随机采样下比较 ECHO/EAGLE3/Graft 三个方法在 LLaMA3.1-8B 和 Qwen3-8B 上的 speedup 和 MAT。LLaMA3.1-8B 上 Graft 3.43× 比 EAGLE3 3.17× 高 8.2%;Qwen3-8B 上 2.26× 比 1.85× 高 22.2%。
证明 Graft 不依赖 greedy decoding,在温度采样下同样有效。
在 Qwen3-8B 上比较 EAGLE3(60)、Graft-EAGLE3(60)、DFLASH(16)、Graft-DFLASH(16)。Graft-DFLASH 平均 3.71×,比 DFLASH 3.40× 高 9.1%,CNN/DM 任务上 +20.2%、Alpaca +13.7%。
这是论文延伸工作的关键证据——Graft 思路可推广到 block drafting 范式,验证「prune-then-graft」的普适性。