深度解读 📅 2026-10-06 ✍️ MagicNetWorld 编辑部

投机解码到底能加速多少:把接受率、草稿成本与墙钟收益算清楚

投机解码用一个又快又便宜的草稿模型先猜几个 token,再让大模型一次并行验证,据称能把手感延迟压掉一半以上。但它到底快多少,并不是「猜得准就快」这么简单:本文从单条解码的带宽瓶颈出发,把接受率 α、草稿长度 γ 与草稿成本系数 c 三者如何共同决定墙钟加速比一步步推出来,并用原论文的实测数字逐项校验;结论是同一份加速比公式里,草稿模型「猜得准」(α 高)与「跑得贵」(c 大)会互相抵消——在该论文的 TPU 实验条件下(EnDe 翻译、温度 0),11B 目标模型配 800M 草稿的实测加速(约 1.7 倍)反而低于配 77M 草稿(约 3.4 倍),主因就是成本系数从 0.02 抬到了 0.11(加速比公式据此可解释 3.2→2.5),其余落差来自实现细节与 i.i.d. 假设失效。

投机解码推理加速LLM 推理系统数学推导

线上跑过推理的人都见过这个场面:同一台卡、同一个模型,批次一大就快、批次一小就慢得让人着急。更反直觉的是,当你把并发压到 1 的时候,GPU 的利用率会掉到个位数——算力明明闲着,出字却比挤牙膏还慢。投机解码(speculative decoding)就是冲着这个场面去的:它用一个又快又便宜的草稿模型,先把接下来的几个 token 一次猜出来,再让真正的大模型一次并行把这几猜都验一遍,猜对的照单全收。论文里报出的数字很诱人——Leviathan 等在 T5-XXL(单 TPU-v4、batch=1)上实测 2 到 3 倍(arXiv:2211.17192);Chen 等在 Chinchilla 70B 的分布式设置下 2 到 2.5 倍(arXiv:2302.01318);EAGLE 在 LLaMA2-Chat 70B 上 2.7 到 3.5 倍(arXiv:2401.15077)。这三组的硬件、批次与采样口径各不相同,不能直接互相比较,只是用来标出量级。

但「能加速」和「加速多少」是两个问题。很多人对投机解码的直觉是「只要草稿模型猜得准,就能一直快下去」,而这个直觉只对了一半。本文想把它算清楚:加速比不是接受率的单调函数。有一篇论文(arXiv:2211.17192)里有一个几乎是反例的实测结果——草稿模型从 T5-small(7700 万参数)换成 T5-large(8 亿参数)后,接受率从 0.75 升到了 0.82,实测加速却从 3.4 倍掉到了 1.7 倍。注意这里要把落差分成两段(相关符号见第二节):加速比公式本身只能解释 3.2→2.5 这一段(分母里的成本系数被抬高),剩下的 2.5→1.7 落差来自实现细节与「各位置接受率独立同分布」假设的失效——本文第五、六、十节会分别交代这两段。

本文按「先给直觉 → 约定符号 → 形式化 → 推导 → 工程含义 → 边界与未解」的顺序展开。凡是引用他人结论处,一律标注出处(论文名 + 章节/表格);凡是本文自己算出来的数字,在文末「本文自行推导」一节单列,与官方数字分列,不作官方口径引用。

一、直觉:单条解码是被显存带宽掐住的

要理解投机解码为什么有用,先理解朴素解码为什么慢。

大模型在**预填充(prefill)阶段一次吃进整段提示词,矩阵乘法是稠密的、算术强度高,算力被用满,所以那一阶段相对快、且对批次大小不那么敏感(为什么「稠密」就快,见下文的算术强度分析)。真正慢的是后面的逐 token 解码(decode)**阶段:每生成一个 token,都要把整个模型的权重从显存(HBM)搬进计算单元过一遍。搬一次权重、算一次乘加——其中「算」的量小得可怜。Hugging Face 的官方博客把这条链路讲得很直白:前向传播由矩阵乘法主导,而矩阵乘法在这里受限于内存带宽(把权重从显存搬到计算核心),不是受限于算力(Hugging Face Blog,2023-05-11)。

用算术强度(arithmetic intensity,单位是 FLOP/字节)来量化这件事。对一个参数量为 NN 的模型,单个 token 的解码大约需要

FLOPs≈2N(每个权重参与一次乘加),\text{FLOPs} \approx 2N \quad(\text{每个权重参与一次乘加}),

同时要把这 NN 个权重都读一遍,若用 fp16 存储,则

访存字节数≈2N.\text{访存字节数} \approx 2N.

两者相除,得到算术强度

I=FLOPs访存字节数≈2N2N=1 FLOP / 字节.I = \frac{\text{FLOPs}}{\text{访存字节数}} \approx \frac{2N}{2N} = 1 \ \text{FLOP / 字节}.

一块主流加速器的「脊点」(ridge point,即算力峰值 ÷ 带宽,是从「算力受限」翻转为「带宽受限」的那个拐点)通常在10² 到 10³ FLOP/字节的量级。把两者摆在一起看:

I脊点I单条解码≈102∼1031,\frac{I_{\text{脊点}}}{I_{\text{单条解码}}} \approx \frac{10^2 \sim 10^3}{1},

也就是说,单条解码离脊点差了两三个数量级,它是彻头彻尾的带宽受限:GPU 的时间都花在等权重从显存搬过来,计算单元大部分时候在空转。这也正是 Leviathan 等在论文里点明的动机——「大模型的推理往往不是被算术运算卡住,而是被内存带宽和通信卡住」(arXiv:2211.17192,§1)。顺着这个判断,作者还补了一句关键前提:这类负载下「额外的计算资源往往是可用的」。

把这两个数换成看得见的时间:一个 70B 参数的模型用 fp16 存权重约需 140 GB;若显存带宽取 2 TB/s 一档,光把权重搬一遍就要约 70 ms,对应单条吞吐上限约 14 token/秒——而这期间 GPU 的计算单元大部分时间在等数据;带宽换成 3 TB/s 则升到约 21 token/秒,降到 1 TB/s 则跌到约 7 token/秒。单条解码的吞吐几乎与带宽成正比,与算力峰值关系很小——这正是投机解码能插进来的缝。(以上为本文按公式估算,只计权重搬运,见文末 D2。)

既然是带宽受限,一个自然的想法就冒出来了:既然权重反正要搬一遍,为什么要只算一个 token? 同一次搬权重,如果能让计算单元同时为好几个候选 token 打分,那么「多验几个」的边际成本接近于零——反正权重已经在寄存器里了。投机解码正是把这个「并行验证」的空档利用起来:

  • 草稿:让一个小模型(或某种廉价启发式)串行地猜出后面若干 token;
  • 验证:把「前缀 + 这些候选 token」拼成一条序列,让大模型一次前向,给每个位置算出它真正的概率分布;
  • 接受:从前往后逐位比对,接受那些「大模型也会这么选」的候选,遇到第一个不接受的为止,然后从这个位置按修正后的分布再补一个 token。

下面的图说明了一次投机迭代里,草稿与验证两条流水线是如何接在一起的——关键在右侧:草稿的 γ 步是串行的,而验证只有 1 步,且那一步把 γ 个位置一起算了。

flowchart TD
    A["前缀 x0..xt(已确定)"] --> B["草稿模型 M_q 自回归采样 γ 个候选"]
    B --> C["候选 x1..xγ,各自带草稿概率 q"]
    A --> D["目标模型 M_p 一次并行前向"]
    C --> D
    D --> E["得到目标概率 p(xi) 与第 γ+1 位的分布"]
    E --> F{"逐位比较 min(1, p/q) 是否接受"}
    F -->|"接受第 i 位"| G["保留 xi,继续看下一位"]
    F -->|"遇到第一个拒绝"| H["从残差分布 max(0, p-q) 归一化后重采样 1 个"]
    G --> I["本轮产出 = 接受数 + 1 个 token"]
    H --> I
    I --> A

这张图说明了什么:一次投机迭代里,目标模型只跑 1 次前向(图中 D→E),却可能一次性吐出多个 token(图中 I)。草稿模型付出的串行代价(B)能不能被这笔收益覆盖,取决于两个量——草稿猜得准不准(决定「接受数」),以及草稿本身跑得贵不贵(决定 B 的代价)。这两者就是下文的 α\alpha 与 cc,而它们分别在加速比公式的分子与分母里,方向正好相反。

二、符号约定与术语表

把讨论对齐到一套记号,后面所有推导都用它。本文的记号尽量与 Leviathan 等(arXiv:2211.17192)一致。

记号含义说明
MpM_p目标模型要加速的那个大而准的模型
MqM_q草稿模型 / 近似模型小而快,负责猜
p(x)p(x)目标模型给出的下一个 token 分布经过采样参数(温度、top-k 等)调整后的分布
q(x)q(x)草稿模型给出的分布同上
γ\gamma每轮草稿的 token 个数即草稿长度 / look-ahead 步数
AA一轮里被接受的草稿 token 数上限为 γ\gamma 的截断几何变量,见第四节
α\alpha接受率单个草稿 token 被接受的概率,0≤α≤10 \le \alpha \le 1
cc成本系数草稿单次前向耗时 ÷ 目标模型单次前向耗时,c≥0c \ge 0
TT(大写)一轮产出的 token 数T=A+1T=A+1,随机变量,见第四节
rr算术量比草稿每 token 的算术量 ÷ 目标模型每 token 的算术量
TV(p,q)\mathrm{TV}(p,q)全变差距离12∑x∣p(x)−q(x)∣\tfrac{1}{2}\sum_x \lvert p(x)-q(x)\rvert
β\beta松弛因子把草稿分布缩小到 β\beta 倍以放宽判据,见第八节
术语一句话解释
投机解码(speculative decoding)草稿 + 并行验证的整体框架
投机采样(speculative sampling)保证输出分布不变的那套接受/拒绝采样规则
草稿模型(draft model)独立的小模型;也可换成 n-gram、MLP 投机头等
树注意力(tree attention)一次并行验证多条候选路径的注意力掩码技巧
无损(lossless)输出分布与不用投机时逐位相同(在硬件数值精度内)
接受率(acceptance rate)被接受草稿 token 占全部草稿 token 的比例

三、为什么它是无损的:接受概率与残差分布

投机解码最容易让人半信半疑的一点是:用一个可能猜错的小模型来加速,凭什么保证大模型的输出分布不变? 这不是工程上的「大致差不多」,而是有严格证明的。这一步的推导是整个方法的地基,值得完整走一遍。

先看单个 token。我们要从目标分布 pp 采样,但为了省算力,我们改从草稿分布 qq 采一个候选 xx,再决定要不要:

  • 以概率 min⁡ ⁣(1,p(x)q(x))\min\!\left(1, \dfrac{p(x)}{q(x)}\right) 接受 xx;
  • 否则拒绝,并从残差分布
p′(x)=max⁡ ⁣(0, p(x)−q(x))∑ymax⁡ ⁣(0, p(y)−q(y))p'(x) = \frac{\max\!\bigl(0,\ p(x)-q(x)\bigr)}{\displaystyle\sum_{y} \max\!\bigl(0,\ p(y)-q(y)\bigr)}

里重新采一个。

这个「拒了就按残差重采」的规则,是它与普通拒绝采样的关键差别。普通拒绝采样拒了会退回从 pp 原样重采(等价于多跑几次大模型),而这里从残差重采,保证了「被草稿高估的那部分」会被修正回来。

证明的核心是一条恒等式。把接受与拒绝两条路径对最终分布的贡献分开写,则输出为 xx 的总概率是两者之和:

min⁡ ⁣(p(x), q(x))⏟接受路径  +  (1−α)⋅p′(x)⏟拒绝路径.\underbrace{\min\!\bigl(p(x),\,q(x)\bigr)}_{\text{接受路径}} \;+\; \underbrace{\bigl(1-\alpha\bigr)\cdot p'(x)}_{\text{拒绝路径}} .

先算拒绝的总概率。由 ∑z(p(z)−q(z))=0\sum_z (p(z)-q(z))=0,正差之和等于负差之和,于是残差分布的分母满足

∑zmax⁡ ⁣(0, p(z)−q(z))=1−∑zmin⁡ ⁣(p(z), q(z))=1−α,\sum_{z} \max\!\bigl(0,\ p(z)-q(z)\bigr) = 1 - \sum_{z} \min\!\bigl(p(z),\,q(z)\bigr) = 1 - \alpha,

把它代回拒绝路径,1−α1-\alpha 恰好被约掉:

(1−α)⋅p′(x)=(1−α)⋅max⁡(0, p(x)−q(x))1−α=max⁡ ⁣(0, p(x)−q(x)).(1-\alpha)\cdot p'(x) = (1-\alpha)\cdot \frac{\max(0,\,p(x)-q(x))}{1-\alpha} = \max\!\bigl(0,\,p(x)-q(x)\bigr).

于是两条路径相加:

min⁡(p,q)+max⁡(0, p−q)=p(x).\min(p,q) + \max(0,\,p-q) = p(x).

证毕:不论草稿模型多差,复合采样的边际分布都是 pp。论文把完整证明放在附录 A.1(arXiv:2211.17192,§A.1)。这也解释了为什么 EAGLE、Medusa 系列都反复强调自己「保持分布不变」——那是这套采样规则的直接结论,不是经验观察。

顺带得到一个非常有用的副产品:接受率本身有闭式表达。若按上面的规则采,单个草稿 token 被接受的概率恰好是两个分布的重叠部分:

α=∑xmin⁡ ⁣(p(x), q(x))=1−TV(p,q)=1−12∑x∣p(x)−q(x)∣.\alpha = \sum_x \min\!\bigl(p(x),\ q(x)\bigr) = 1 - \mathrm{TV}(p, q) = 1 - \frac{1}{2}\sum_x \lvert p(x)-q(x)\rvert.

这条式子(Leviathan 等定义为「自然散度」并在 Corollary 3.6 里给出,arXiv:2211.17192,§3.2)把「草稿猜得准不准」翻译成了一个纯几何量:草稿分布与目标分布的重叠面积越大,α\alpha 越高。两极也自洽——若 q=pq=p,则 α=1\alpha=1,草稿猜什么都被接受;若两者完全错开,则 α=0\alpha=0,一个都留不下。这也解释了为什么采样参数会影响加速:温度越低、分布越「尖」,pp 和 qq 越容易在同一个峰上重叠,α\alpha 就越高。原论文在多种模型组合上都观察到「调整后的分布越尖,α\alpha 越高」,且同组合下贪心解码(温度 0)的接受率普遍高于标准采样(温度 1)——T5-small 做草稿时是 0.75 对 0.62(arXiv:2211.17192,§4.2)。

四、一轮到底能产出多少 token:截断几何分布

有了 α\alpha,就能回答第一个关键问题:一次投机迭代平均产出几个 token?

做两个简化假设(原论文同样采用,arXiv:2211.17192,§3.1):把每个草稿 token 的接受看成独立同分布、接受率都为 α\alpha。

先数「被接受的草稿 token 数」,记作 AA。它是一个上限为 γ\gamma 的截断几何变量:

P(A=k)=α k(1−α)(k=0,1,…,γ−1),P(A=γ)=α γ.P(A=k)=\alpha^{\,k}(1-\alpha)\quad (k=0,1,\dots,\gamma-1), \qquad P(A=\gamma)=\alpha^{\,\gamma}.

而一轮产出的 token 数 TT 等于被接受的草稿数,再加上目标模型补的那 1 个校正 token,即 T=A+1T=A+1——所以一轮至少产出 1 个 token。在目标模型串行次数这个意义上,它与普通解码相比永不更慢:每次并行前向至少产出一个新 token,串行次数不会比朴素自回归更多(arXiv:2211.17192,§2.1)。把 TT 的分布写出来:

P(T=k)=α k−1(1−α)(k=1,2,…,γ),P(T=γ+1)=α γ.P(T=k)=\alpha^{\,k-1}(1-\alpha)\quad (k=1,2,\dots,\gamma), \qquad P(T=\gamma+1)=\alpha^{\,\gamma}.

可以自行验证各项相加为 1:∑k=1γαk−1(1−α)+αγ=(1−αγ)+αγ=1\sum_{k=1}^{\gamma}\alpha^{k-1}(1-\alpha)+\alpha^{\gamma}=(1-\alpha^{\gamma})+\alpha^{\gamma}=1。

用期望的尾和公式来算最省力:一轮产出至少 ii 个 token,等价于前 i−1i-1 个草稿都被接受,在 i.i.d. 假设下概率为 α i−1\alpha^{\,i-1},于是

E[T]=∑i=1γ+1P(T≥i)=∑j=0γα j=1−α γ+11−α.E[T] = \sum_{i=1}^{\gamma+1} P(T \ge i) = \sum_{j=0}^{\gamma} \alpha^{\,j} = \frac{1-\alpha^{\,\gamma+1}}{1-\alpha}.

这正是原论文的式 (1)(arXiv:2211.17192,Eq. 1):它把一轮产出刻画成一个「上限为 γ\gamma、成功率为 α\alpha 的截断几何变量再加 1」,期望产出就是这个有限等比级数。几个可自检的极限:

  • α→0\alpha \to 0:E[T]→1E[T] \to 1,退化成朴素解码(每次只多一个 token),符合预期;
  • α→1\alpha \to 1:E[T]→γ+1E[T] \to \gamma+1,一轮吃满 γ\gamma 个草稿再加 1 个校正 token;
  • γ=0\gamma=0:E[T]=1E[T]=1,不再投机。

把 E[T]=(1−αγ+1)/(1−α)E[T]=(1-\alpha^{\gamma+1})/(1-\alpha) 摊成一张速查表(每格是该 (α,γ)(\alpha,\gamma) 组合下每轮平均产出的 token 数):

γ \ α0.40.60.80.9
11.401.601.801.90
21.561.962.442.71
41.652.313.364.10
61.662.433.955.22
81.672.474.336.13
101.672.494.576.86

(表内数值由本文按公式计算,仅作量级参考。)两个规律一眼可见:α\alpha 越低,加 γ\gamma 越没用;α\alpha 越高,加 γ\gamma 的收益越大。几个读法:

  • α=0.4, γ=10\alpha=0.4,\ \gamma=10:E[T]=1.67E[T]=1.67,比 γ=1\gamma=1(1.40)只多 0.27——低接受率下加大 γ\gamma 几乎白费;
  • α=0.8, γ=10\alpha=0.8,\ \gamma=10:E[T]=4.57E[T]=4.57,比 γ=1\gamma=1(1.80)多 2.77——高接受率下加大 γ\gamma 很值;
  • α=0.9, γ=10\alpha=0.9,\ \gamma=10:E[T]=6.86E[T]=6.86,正逼近理论上界 1/(1−α)=101/(1-\alpha)=10——接受率越高,越接近「一轮吃满 γ+1 个」。
  • 对照这张表与第五节的墙钟公式可以看出:α\alpha 决定 E[T]E[T] 的天花板,而成本系数 cc 决定这个天花板能不能兑现。

举两个具体数:若 α=0.8, γ=4\alpha=0.8,\ \gamma=4,则 E[T]=(1−0.85)/(1−0.8)≈3.36E[T]=(1-0.8^5)/(1-0.8)\approx 3.36;若 α=0.8, γ=5\alpha=0.8,\ \gamma=5,则 E[T]≈3.69E[T]\approx 3.69——即每次跑一次大模型,平均能拿到约 3.7 个 token,而不是 1 个。原论文在引言里给过一个更醒目的例子:一句 38 个 token 的话,只用了 9 次目标模型(9700 万参数)的前向就生成完了,靠的是一个 600 万参数的近似模型(arXiv:2211.17192,§1)——平均每次前向产出约 4.2 个 token。这里要提醒三个量不要混:38 是「整句」的 token 总数(9 轮合计),4.2 才是与 E[T]E[T] 同量纲的「单轮平均产出」(本文由 38÷9 算出,见文末 D6),而 3.36/3.69 是另两个参数组合下的单轮平均产出。

五、墙钟加速比:把草稿成本算进来

第四节只数了「产出多少 token」,还没算「代价多少」。这是投机解码最常被讲漏、也是最能解释那个反例的一步。

一轮迭代的时间分成两笔:

  1. 草稿模型跑 γ\gamma 次(串行),每次耗时约为目标模型单次前向的 cc 倍,合计约 γc\gamma c(以「一次目标前向」为单位);
  2. 目标模型跑 1 次(并行验证 γ 个位置)。

所以一轮的代价 ≈ γc+1\gamma c + 1(单位:一次目标前向)。而朴素解码产出一个 token 的代价恰好是 1 次目标前向。两者相除,得到墙钟加速比:

Speedup=E[T]γc+1=1−α γ+1(1−α) (γc+1).\text{Speedup} = \frac{E[T]}{\gamma c + 1} = \frac{1-\alpha^{\,\gamma+1}}{(1-\alpha)\,(\gamma c + 1)}.

这就是原论文的 Theorem 3.8(arXiv:2211.17192,§3.3)。它把整件事说透了:加速比 = 每轮多产的 token 数 ÷ 每轮多付的代价。分母里那个 γc\gamma c 就是「草稿的过路费」,cc 是成本系数(论文 Definition 3.7 定义为草稿单次前向耗时与目标单次前向耗时之比)。论文还提醒:与 α\alpha 不同,cc 不是模型固有属性,它取决于硬件配置与实现细节(§3.3)。

一个立刻能用的判据。 取最简单的 γ=1\gamma=1 代入:E[T]=1+αE[T]=1+\alpha,分母 =1+c=1+c,于是

Speedupγ=1=1+α1+c.\text{Speedup}_{\gamma=1} = \frac{1+\alpha}{1+c}.

要让这个值大于 1,只需

α>c.\alpha > c .

这条判据不是本文首创:论文在 Corollary 3.9 里给出了同一结论——「若 α>c\alpha>c,则存在 γ\gamma 使加速成立,且加速比至少为 (1+α)/(1+c)(1+\alpha)/(1+c)」(arXiv:2211.17192,§3.3)。本文做的只是把 γ=1\gamma=1 代进 Theorem 3.8,验证它正好复现该下界。也就是说:只要接受率高于成本系数,就有正收益;反之若 α≤c\alpha \le c,草稿比它省下的时间还贵,投机只会拖慢。

现在回头看开头那个反例。论文实测(arXiv:2211.17192,Table 2 与 Table 4):

  • T5-XXL(11B)配 T5-small(77M):α=0.75, γ=7, c≈0.02\alpha=0.75,\ \gamma=7,\ c\approx 0.02;
  • T5-XXL(11B)配 T5-large(800M):α=0.82, γ=7, c≈0.11\alpha=0.82,\ \gamma=7,\ c\approx 0.11。

代进公式(本文复算,见文末):

  • T5-small:1−0.7580.25×(7×0.02+1)=0.89990.25×1.14≈3.16\dfrac{1-0.75^{8}}{0.25\times(7\times 0.02+1)} = \dfrac{0.8999}{0.25\times 1.14} \approx 3.16,论文给出理论 3.2、实测 3.4;
  • T5-large:1−0.8280.18×(7×0.11+1)=0.79560.18×1.77≈2.50\dfrac{1-0.82^{8}}{0.18\times(7\times 0.11+1)} = \dfrac{0.7956}{0.18\times 1.77} \approx 2.50,论文给出理论 2.5、实测仅 1.7。

T5-large 的接受率更高(0.82 > 0.75),理论加速却更低(2.5 < 3.2)。原因全在分母:800M 的草稿比 77M 的草稿贵了约 5 倍,γc\gamma c 从 0.14 抬到 0.77,把多出来的那点接受率吃了个干净。这就是「猜得更准 ≠ 跑得更快」的算术证据——公式能解释到 2.5,剩下 2.5→1.7 的落差来自实现细节与 i.i.d. 假设的失效(见第十节第 1、2 条),本文不把这两段混为一谈。

关于最优 γ。 公式里还有第三个可以调的旋钮。对固定的 α,c\alpha, c,把 γ\gamma 从 0 往上扫,加速比先升后降——因为 E[T]E[T] 随 γ\gamma 单调增但增幅递减(收敛到 1/(1−α)1/(1-\alpha)),而分母 γc+1\gamma c+1 是线性增的。论文指出最优 γ\gamma 就是最大化 Theorem 3.8 的那个整数,可以用数值方法直接扫出来(§3.5)。把它写成一个连续优化问题,就是让「多产一个 token 的边际收益」等于「多跑一步草稿的边际成本」:

γ⋆=arg⁡max⁡γ∈Z≥0 1−α γ+1(1−α) (γc+1).\gamma^\star = \arg\max_{\gamma \in \mathbb{Z}_{\ge 0}} \ \frac{1-\alpha^{\,\gamma+1}}{(1-\alpha)\,(\gamma c+1)} .

由于 E[T]E[T] 是 γ\gamma 的凹函数、分母是 γ\gamma 的线性函数,目标函数先增后减(单峰),直接从小到大扫到首次下降即可,无需解析解。有一个特例很常用:若 c→0c\to 0(草稿几乎免费),最优 γ\gamma 尽量大,加速比的上限就是

Speedup→c→01−αγ+11−α≤11−α.\text{Speedup} \xrightarrow{c\to 0} \frac{1-\alpha^{\gamma+1}}{1-\alpha} \le \frac{1}{1-\alpha}.

这给了一个漂亮的「理论天花板」:α=0.5\alpha=0.5 的草稿,无论 γ\gamma 多大,加速比都不会超过 2;要摸到 4 倍,α\alpha 至少要 0.75。

六、用论文数字校验公式(对照表)

光有一个公式不足信,用原论文的实验数据把它逐项对一遍。下表左半是论文 Table 2 与 Table 4 的原始记录,右两列是本文按上式独立复算的结果;两列吻合即说明「接受率 → 产出 token 数 → 墙钟加速比」这条链是自洽的。

任务草稿模型温度γαc论文理论加速本文复算论文实测加速
EnDe 翻译T5-small (77M)070.750.023.23.163.4
EnDe 翻译T5-base (250M)070.800.043.33.252.8
EnDe 翻译T5-large (800M)070.820.112.52.501.7
EnDe 翻译T5-small (77M)170.620.022.32.262.6
新闻摘要T5-small (77M)050.650.022.42.403.1
EnDe 翻译二元模型 (bigram)030.20≈01.251.25—

数据来源:arXiv:2211.17192 的 Table 2(实测)、Table 4(理论预期 + 成本系数)与 §3.6/§4.2(bigram 一行给出 γ=3、1.25×);「本文复算」一列由 (1−αγ+1)/((1−α)(γc+1))(1-\alpha^{\gamma+1})/((1-\alpha)(\gamma c+1)) 代入得出。

这张表里有三个值得单独拎出来的观察:

  1. 实测普遍高于理论或略有偏差,因为 i.i.d. 假设只是近似,且实现优化程度与基线不同(论文自己在 §A.3 说明)。数量级一致即可,不必苛求逐位相等。
  2. T5-base 是「又好又不贵」的甜点区吗? 不是——它的理论加速(3.25)几乎追平 T5-small(3.16),但实测(2.8)反而低于 T5-small(3.4)。理论没算进「实际草稿前向的固定开销」,这正是纸上公式与线上墙钟的落差。
  3. 零成本草稿也能有一点加速。bigram 模型的接受率只有 0.20,但由于 c≈0c\approx 0(查表即可,几乎不耗时),加速比仍有约 1.25 倍。这条事实很关键:当草稿的过路费接近零时,哪怕猜得很烂也不会亏——这也解释了后文 n-gram / 后缀解码这类「无草稿模型」路线为什么在特定负载下值得一用。

下面另看一组「换一个任务、换一批模型」的接受率 α(论文 §4.2 / Table 3 的实测汇总)。要提醒的是:这张表的一列是「接受率」,与上一张表的「加速比」是两回事——高接受率不等于高加速,上一张表里的 T5-large 就是活例子。

目标模型草稿温度α
GPT-like 97Munigram00.03
GPT-like 97Mbigram00.05
GPT-like 97MGPT-like 6M00.88
GPT-like 97MGPT-like 6M10.89
T5-XXL (EnDe)unigram00.08
T5-XXL (EnDe)bigram00.20
T5-XXL (EnDe)T5-small00.75
T5-XXL (EnDe)T5-base00.80
T5-XXL (EnDe)T5-large00.82
T5-XXL (EnDe)T5-small10.62

两个规律:其一,同架构、同任务的真·小模型(GPT-like 6M 对 97M)能拿到惊人的高接受率(0.88–0.89),远高于 n-gram;其二,无参数的 n-gram 接受率只有个位数到两成(本文所引这段里为 0.03–0.20),但胜在成本为零。α\alpha 与 cc 的这种「此高彼低」关系,就是选型时要拿捏的。

七、草稿从哪来:五种来源的取舍

公式里的 α\alpha 与 cc 不是天上掉下来的,它们由「草稿从哪来」决定。把主流的几种草稿来源按 α\alpha 与 cc 的权衡排一下,就是选型地图。

flowchart LR
    Q["一个推理请求"] --> R{"prompt 与历史里重复多吗"}
    R -->|"很多:代码编辑 / agent 循环"| S["n-gram / 后缀解码:零草稿模型"]
    R -->|"不多:彼此独立的请求"| T{"能否加载或训练草稿模型"}
    T -->|"能,可接受额外显存"| U["独立草稿模型 / EAGLE / Medusa / MLP 投机头"]
    T -->|"不能,只要轻量"| V["n-gram / MLP 投机头"]

这张图说明了什么:选哪条路线,本质上是在回答「这活里 α\alpha 与 cc 哪个更值钱」——只有当你既有高重复度、又不想加载第二个模型时,n-gram 才划算;当请求彼此独立、又没有廉价草稿可用时,才轮到「训练一个专门的投机头」。

  • 独立草稿模型:最经典的做法,直接拿一个同架构的小模型(如 T5-small 配 T5-XXL)。优点是简单、无需训练、无损;缺点是要额外加载一个模型、占一份显存,cc 完全由两模型尺寸比决定。原论文观察到「草稿比目标小约两个数量级」时通常最划算(arXiv:2211.17192,§3.6)。
  • Medusa(多头解码头):不再需要第二个模型,直接在目标模型上加若干个解码头并行预测后续 token,用树注意力一次验证多条候选路径。它在冻结主干时叫 Medusa-1,可做到「无损加速 2.2 倍以上」;连主干一起微调的 Medusa-2 把加速提到 2.3–3.6 倍(arXiv:2401.10774 摘要)。代价是需要训练解码头。
  • EAGLE(特征层自回归):观察是「在第二顶层特征上做自回归比在 token 层更直接」,但特征层本身的不确定性会拖累它;EAGLE 用「把 token 序列提前一个时间步」的方式消除这个不确定性,在 LLaMA2-Chat 70B 上做到 2.7–3.5 倍延迟加速、吞吐翻倍(arXiv:2401.15077 摘要)。
  • EAGLE-2(动态草稿树):发现草稿 token 的接受率不只取决于位置、还与上下文有关,于是用「上下文感知的动态草稿树」自适应调整,把加速推到 3.05–4.26 倍,比 EAGLE-1 快 20%–40%(arXiv:2406.16858 摘要)。
  • MLP 投机头 / 组合投机器:在 Medusa 的多头 MLP 基础上,让每个头同时条件于「基座状态向量」与「上一步真正采到的 token」,并配论文所述的两阶段训练(先对齐基座输入行为、再对齐输出行为);IBM 报告在生产环境把四款模型加速 2–3 倍(arXiv:2404.19124;「四款」这一表述见其配套的官方 PyTorch 博客)。
  • n-gram 与后缀解码:完全不用神经网络草稿,直接从 prompt 与历史输出里做模式匹配。n-gram 用最近若干 token 去 prompt 里找相同片段来续猜;后缀解码(Suffix Decoding)进一步用后缀树缓存长序列,并在接受可能性高时多投机、低时少投机,在 SWE-Bench、Text-to-SQL 等 agentic 基准上做到最高 5.3 倍加速(arXiv:2411.04975 摘要)。这类方法的 α\alpha 通常不高,但 c≈0c\approx 0,所以「猜错也不亏」。

把上面六种来源放到同一张表里对照,差异一目了然:

来源典型 α成本系数 c是否需训练额外显存备注
独立草稿模型高(0.6–0.9)中(由尺寸比定)否一份小模型最经典、无损
Medusa(多头 MLP)中高低是几个解码头Medusa-1 冻结主干
EAGLE / EAGLE-2高低–中是一个轻量草稿动态草稿树
MLP 投机头中高低是若干投机器生产环境 2–3 倍
n-gram低(0.03–0.20)≈0否无峰值流量不增负担
后缀解码低–中(自适应)≈0否一个后缀树高重复负载最高 5.3 倍

树注意力是怎么一次验完多条路径的? Medusa、EAGLE 这类方法会一次性给出多条候选路径(一棵「草稿树」),要把它们塞进一次前向里验证,靠的是一个专门的注意力掩码:它的作用是让每条候选路径只能「看见」自己的祖先节点、看不见兄弟分支,从而在同一次前向里为每条路径算出互不串扰的概率。下图是这棵树的形状(节点名里的 A1/A2a/A2b 等是为了区分同一父路径下的不同分支):

flowchart TD
    Z["位置 t 的隐藏状态 z"] --> A1["路径 A 第 1 步"]
    Z --> B1["路径 B 第 1 步"]
    A1 --> A2a["路径 A 第 2 步 · 分支 1"]
    A1 --> A2b["路径 A 第 2 步 · 分支 2"]
    B1 --> B2["路径 B 第 2 步"]
    A2a --> VA["树注意力:一次并行验证全部路径"]
    A2b --> VA
    B2 --> VA

这张图说明了什么:草稿不再是一条线,而是一棵树;树注意力让多个候选共享同一次前向的算力,从而在不增加串行步数的前提下把「多猜几条」的命中概率抬高。EAGLE-2 的贡献正是把这棵树从「静态」改成「随上下文动态调整」(见上文 bullet)。

值得单独说一句 n-gram / 后缀解码为什么在 agent 负载里翻身:这类工作流的输入往往高度重复(多 agent 流水线在跑相似子任务、自反思循环反复改写同一段输出),于是「从历史里找相同片段」的命中率飙升。第六节里那个「接受率只有 0.20 的 bigram 也能有 1.25 倍加速」的观察,在这里被放大成了一个可用的工程手段——代价是它对低重复度负载几乎无用。

八、松弛:允许一点点失真,能多换多少加速

前七节都在「无损」这个约束下讨论。但如果愿意接受一点点、且有界可言的失真,加速比还能再抬一截。这属于原论文附录 A.5 的「lenience」(松弛)一节。

做法是给比较加一个松弛因子 β\beta:把草稿分布缩小到原来的 β\beta 倍(等价于把接受判据放宽 1/β1/\beta 倍)后再与目标比较。用公式写出来,松弛就是把接受判据从 min⁡(1,p/q)\min(1, p/q) 放宽成带 β\beta 的形式:

Accept(x)=min⁡ ⁣(1, 1β⋅p(x)q(x)),0<β≤1,\text{Accept}(x) = \min\!\Bigl(1,\ \frac{1}{\beta}\cdot\frac{p(x)}{q(x)}\Bigr), \qquad 0 < \beta \le 1 ,

β=1\beta=1 即退回到无损的原式。它保留了一个很有用的保证——任何 token 被采到的概率都不会超过它真实概率的 1/β1/\beta 倍;换句话说,极其稀有的 token 仍会保持稀有。但代价是:这种松弛只约束上界、不约束下界,因此可能损害输出的多样性。下表是论文的实测(T5-XXL 配 T5-small,即 α=0.62\alpha=0.62 那组,γ\gamma 固定):

松弛因子 β允许的最大放大(论文取整)加速比
1(无损)1×2.5
0.52×3.1
0.33×(1/β≈3.33)3.6
0.110×5.0

数据来源:arXiv:2211.17192,§A.5 与 Table 5(论文把 1/β 的放大倍数表述为 1X / 2X / 3X / 10X)。⚠️ 这张表与第六节那张对照表的同配置行(T5-XXL + T5-small、温度 1)数值不完全相等(此处 β=1 行给 2.5,第六节理论 2.3 / 实测 2.6),原因是两处的成本系数取值不同(§A.5 该处取 c=0.015c=0.015,第六节表取 c=0.02c=0.02)——同量不同源,不要相互代入。

可以看到,把允许的失真从「零」放宽到「不改超过 10 倍」,加速比从 2.5 抬到了 5.0——几乎翻倍。这条曲线也再次印证了第五节的主线:加速比其实是在「产出量」和「代价」之间讨价还价,而「无损」只是把 α\alpha 钉死了的其中一个极端。实际系统里是否用松弛,取决于你是否允许输出分布偏离目标——对绝大多数要复现官方行为的场景,答案是不用。

九、工程含义:从公式到线上参数

公式落到工程上有几条直接可用的判断:

第一,加速比有上限,且那个上限由 α\alpha 与 γ\gamma 共同决定。 当草稿几乎免费(c→0c\to 0)时,加速比趋近 E[T]=(1−αγ+1)/(1−α)E[T]=(1-\alpha^{\gamma+1})/(1-\alpha),上限为 1/(1−α)1/(1-\alpha)。把 γ\gamma 调大能抬高上限,但收益递减——α\alpha 越高,多加一步草稿越值;α\alpha 若只有 0.2,把 γ\gamma 从 5 加到 10,E[T]E[T] 几乎不动(约 1.25)。

第二,算力不是免费的,只是被藏起来了。 投机解码并不是「凭空多出 token」:它用额外的并行算力换墙钟时间。原论文 Table 1 给出了一组 (α, γ) 下的「算术量增幅 / 理想加速比」对照(理想加速比一列为 c=0c=0 的上界):

αγ算术量增幅理想加速比
0.621.53×1.96×
0.731.58×2.53×
0.821.23×2.44×
0.851.63×3.69×
0.921.11×2.71×
0.9101.60×6.86×

数据来源:arXiv:2211.17192,Table 1。含义很清楚:当显存带宽是瓶颈、算力有余量时,投机解码是净赚;一旦机器已经算力打满(大 batch、高并发),它只会白烧算力。论文也据此指出,投机解码「假设计算资源足以支撑提高的并发度」(§3.4)。

第三,接受率随负载漂移,γ\gamma 最好动态调。 论文指出,既然各位置 α\alpha 不完全相同,就能通过「预测当前 α\alpha 并相应改变 γ\gamma」拿到额外收益;在无算力上限的乐观假设下,这个提升的上界约为固定 γ\gamma 的 60%(论文原文为 up to ~60% higher,arXiv:2211.17192,§3.5)。工程上的对应实现就是「动态草稿树 / 自适应投机步数」。

第四,它在服务框架里已经是标配选项。 vLLM 官方文档把投机方法列成一排:模型类方法(EAGLE、MTP、独立草稿模型、PARD、MLP)延迟收益最好,而 n-gram 与后缀解码这类轻量路线「在峰值流量下不额外增加负载」,适合低到中等增益的场景。文档也把已知边界写清楚了:投机解码目前不能与流水线并行组合(vllm<=0.15.0),且早期版本(vllm<=0.10.0)不支持独立草稿模型。vLLM 还专门声明了「无损保证」的三个层次——理论无损(到硬件数值精度)、算法无损(有拒绝采样收敛性与贪心一致性测试兜底)、以及 logprob 稳定性不保证(同一请求跨运行的输出可能不同)(vLLM 官方文档,Speculative Decoding)。

第五,草稿「准」受物理限制,「贵」能靠工程压下去。 把第五节的公式对着第一性原理再读一遍:α\alpha 是受物理限制的——它被 TV(p,q)\mathrm{TV}(p,q) 卡住,一个小模型对一个大模型的分布重叠有天花板;而 cc 是可以被工程压下去的(更小的草稿头、量化、缓存、甚至零成本的 n-gram)。所以真实的优化方向往往是「在不显著抬高 cc 的前提下尽量抬高 α\alpha」,而不是单纯追求一个更大的草稿模型。IBM 的实测也印证了这一点:草稿头数不是越多越好——语言模型 3–4 个头、代码模型 6–8 个头最划算,头数再多,多出来的算力消耗会抵消收益(PyTorch 官方博客)。

第六,批大小会吃掉收益。 官方 PyTorch 博客在头数/批大小的效率说明里,原文记下了这条经验边界:「We begin to observe throughput reduction beyond a batch size of 64」。这与第一节的「带宽受限才有空档」一致——batch 一大,算力被打满,投机赖以生存的「闲置算力」就没了。这也解释了为什么投机解码的收益通常只在低到中等 QPS下显现。

十、边界、未解与小结

按惯例,把这篇能证明的、不能证明的、以及仍未解决的问题逐条列清楚。

  1. 公式是模型,不是真值。 第四、五节的加速比建立在「各位置接受率独立同分布」的假设上(arXiv:2211.17192,§3.1)。真实文本的位置相关性强,所以理论值与实测值会有偏差——本文对照表里最大的一处(T5-large:理论 2.5、实测 1.7)就是这个假设失效的体现,不宜把理论值当承诺。
  2. 成本系数 c 依赖硬件与实现,不是模型的固有属性。论文明确:与 α 不同,c 取决于硬件配置与软件实现细节(§3.3)。所以「同一对模型在同一卡上」才可比,跨硬件引用具体加速比要格外小心。
  3. 本文复算的数字只作量级一致性检查。 表里「本文复算」一列是把论文的参数代入公开公式得到的结果,用于验证公式链自洽,不得作为官方数值引用;论文实测列才是原作者的测量值。
  4. 接受率高的模型组合未必更快,这是本文最想纠正的直觉:T5-small(α=0.75)实测 3.4 倍 > T5-large(α=0.82)实测 1.7 倍。选草稿时,「目标模型/草稿模型尺寸比」与「草稿的实际墙钟开销」要和 α 一起看。
  5. 「无损」不是一个开关,而是有层次的。 理论无损(实数概率)、算法无损(实现层面有测试保证)、数值无损(硬件浮点)是三层;vLLM 明确说明它不保证跨运行的 logprob 完全稳定(vLLM 文档)。逐字节可复现的场景要把这层差异算进去。
  6. 松弛(第八节)以失真换加速,而且只约束概率上界、不约束下界,可能损害输出多样性。用它就要接受「输出分布不再严格等于目标分布」。
  7. 不同论文的加速比口径不完全可比。 有的报延迟加速、有的报吞吐,有的在不同温度、不同 batch、不同硬件上测。本文表格里每一行都标了任务/温度/参数,正是为了不把不同口径的数字并置。
  8. 仍未解决的问题:γ\gamma 的最优值随 α\alpha 漂移,而 α\alpha 又逐位置变化,「预测 α 并实时调 γ」目前只在理论上有上界估计(§3.5),工业界的动态方案仍在演进;「跨词表草稿模型」(草稿与目标用不同 tokenizer)在 vLLM 中目前也只支持贪心草稿采样,带温度的接受还未开放;此外,本刊未独立复现任一加速比,「哪个组合在你的硬件上最划算」仍要在你自己的负载上实测。

小结:投机解码的加速比可以写成一个干净的式子——Speedup=(1−αγ+1)/((1−α)(γc+1))\text{Speedup}=(1-\alpha^{\gamma+1})/((1-\alpha)(\gamma c+1))。分子衡量「猜得多准」,分母衡量「猜得多贵」。它之所以有效,是因为单条解码本就困在显存带宽里、算力大量闲置;它之所以常常不如预期,是因为草稿的过路费(γc\gamma c)与接受率之间有一场此消彼长的拉锯。把这两个量分别看清楚,比记一个「能加速 2–4 倍」的结论有用得多。

📋 来源与核验记录

一手论文与官方材料(均于 2026-10-06 实访 arXiv/官网当日页面;论文版本与修订日期以各自 arXiv 页面的 Submission history 为准,对 arXiv 未列修订历史者——如 arXiv:2406.16858、arXiv:2404.19124——以当日页面为准):

  1. Yaniv Leviathan, Matan Kalman, Yossi Matias, Fast Inference from Transformers via Speculative Decoding, ICML 2023(arXiv 页面标注 Oral),arXiv:2211.17192,v2 修订于 2023-05-18(v1 2022-11-30)。含 §1、§2.1、§3.1、Eq. 1、§3.2 Corollary 3.6、§3.3 Theorem 3.8 与 Corollary 3.9、§3.4、§3.5(动态 γ 的理论上界约 +60%)、§3.6、§4.1–4.2、Table 1/2/3/4/5、§A.1、§A.3、§A.5 松弛。https://arxiv.org/abs/2211.17192
  2. Charlie Chen, Sebastian Borgeaud, Geoffrey Irving, Jean-Baptiste Lespiau, Laurent Sifre, John Jumper, Accelerating Large Language Model Decoding with Speculative Sampling, arXiv:2302.01318,v1 2023-02-02(Chinchilla 70B,2–2.5 倍分布式解码加速,无损)。https://arxiv.org/abs/2302.01318
  3. Tianle Cai et al., Medusa: Simple LLM Inference Acceleration Framework with Multiple Decoding Heads, arXiv:2401.10774,v3 修订于 2024-06-14(v1 2024-01-19)。Medusa-1 无损 >2.2 倍、Medusa-2 2.3–3.6 倍;Tri Dao 为共同作者。https://arxiv.org/abs/2401.10774
  4. Yuhui Li, Fangyun Wei, Chao Zhang, Hongyang Zhang, EAGLE: Speculative Sampling Requires Rethinking Feature Uncertainty, arXiv:2401.15077,v3 修订于 2025-03-04(v1 2024-01-26)。LLaMA2-Chat 70B 延迟加速 2.7–3.5 倍、吞吐翻倍。https://arxiv.org/abs/2401.15077
  5. Yuhui Li et al., EAGLE-2: Faster Inference of Language Models with Dynamic Draft Trees, EMNLP 2024 主会(本文所引 3.05–4.26 倍 / 比 EAGLE-1 快 20%–40% 取自其 arXiv 摘要,arXiv:2406.16858)。https://arxiv.org/abs/2406.16858
  6. Gabriele Oliaro et al., SuffixDecoding: Extreme Speculative Decoding for Emerging AI Applications, NeurIPS 2025 Spotlight,arXiv:2411.04975,v3 修订于 2025-10-07(v1 2024-11-07;agentic 基准最高 5.3 倍)。https://arxiv.org/abs/2411.04975
  7. Davis Wertheimer et al.(IBM Research), Accelerating Production LLMs with Combined Token/Embedding Speculators, arXiv:2404.19124(生产环境 2–3 倍;两阶段训练方案;语言模型 3–4 头、代码模型 6–8 头)。https://arxiv.org/abs/2404.19124
  8. vLLM 官方文档,Speculative Decoding(方法清单、无损保证三层、与流水线并行/早期版本的兼容限制;2026-10-06 实访)。https://docs.vllm.ai/en/latest/features/speculative_decoding/
  9. Hugging Face Blog(João Gante),Assisted Generation: a new direction toward low-latency text generation,2023-05-11(从显存带宽角度解释延迟瓶颈)。https://huggingface.co/blog/assisted-generation

第三方分析与工程博客:

  1. 官方 PyTorch Blog,A Hitchhiker’s Guide to Speculative Decoding(IBM 生产部署 2 倍/代码模型 3 倍;头数与 batch 的经验边界,原文「We begin to observe throughput reduction beyond a batch size of 64」;2026-10-06 实访)。https://pytorch.org/blog/hitchhikers-guide-speculative-decoding/

本文自行推导(仅作量级一致性检查,不得作为官方数值引用):

  • D1|单条解码算术强度 I≈1I\approx 1 FLOP/字节:由 2N2N FLOP 与 2N2N 字节(fp16 权重)相除得到;脊点量级(10²–10³ FLOP/字节)为行业常识量级,本文未绑定具体型号(第一节)。
  • D2|70B 模型 fp16 权重约 140 GB140\ \text{GB}、单条解码吞吐估算:以约 1.0 / 2.0 / 3.0 TB/s 三档显存带宽代入「权重字节数 ÷ 带宽」,得约 7 / 14 / 21 token/秒。此估算只计权重搬运、不计 KV Cache 与 kernel 效率,仅示数量级(第一节)。
  • D3|加速比公式的逐项复算:(1−0.758)/(0.25×1.14)≈3.16(1-0.75^8)/(0.25\times1.14)\approx3.16、(1−0.808)/(0.20×1.28)≈3.25(1-0.80^8)/(0.20\times1.28)\approx3.25、(1−0.828)/(0.18×1.77)≈2.50(1-0.82^8)/(0.18\times1.77)\approx2.50、(1−0.628)/(0.38×1.14)≈2.26(1-0.62^8)/(0.38\times1.14)\approx2.26、(1−0.656)/(0.35×1.10)≈2.40(1-0.65^6)/(0.35\times1.10)\approx2.40、bigram(α=0.20, γ=3, c≈0\alpha=0.20,\ \gamma=3,\ c\approx0)≈1.25,六格与论文 Table 2/Table 4/§3.6 逐项吻合(第六节)。
  • D4|Table 1 的算术量增幅复现:以「每轮算术量 ≈ γr+1\gamma r+1、除以 E[T]E[T]」在 r=1r=1 下得到 1.53 / 1.58 / 1.23 / 1.63 / 1.11 / 1.60;其「理想加速比」一列为 c=0c=0 时由加速比公式得到的上界(1.96 / 2.53 / 2.44 / 3.69 / 2.71 / 6.86)。两者均与论文 Table 1 逐项一致(第九节)。此处的 r=1r=1 假设系本文为复现而试出,非论文原文声明。
  • D5|无成本草稿的加速上限 1/(1−α)1/(1-\alpha):由 E[T]=(1−αγ+1)/(1−α)E[T]=(1-\alpha^{\gamma+1})/(1-\alpha) 令 γ→∞\gamma\to\infty 得(第五节)。
  • D6|38÷9≈4.2:把论文 §1 的「38 个 token / 9 次前向」换算成平均每次前向产出(第四节)。
  • 另:第五节的判据 α>c\alpha>c 与下界 (1+α)/(1+c)(1+\alpha)/(1+c) 出自论文 Corollary 3.9(arXiv:2211.17192,§3.3);本文做的只是以 γ=1\gamma=1 代入 Theorem 3.8 复现该下界,不计入本文自行推导。

数据截至 2026-10-06。文中各项加速比均为对应论文/官方文档在其各自硬件、批次与采样设置下的报告值,本刊未做独立复现;理论值与实测值的落差已在第六、十节标明。本文由 AI 辅助整理,一手来源与推导步骤已如实标注,供读者自行核验。