SpecReason:哪些推理步骤可以放心交给小模型?

笔记日期: 2026-10-21
论文: SpecReason: Fast and Accurate Inference-Time Compute via Speculative Reasoning
论文作者: Rui Pan、Yinwei Dai、Zhihao Zhang、Gabriele Oliaro、Zhihao Jia、Ravi Netravali
版本与日期: arXiv:2504.07891v2,2025-05-16 修订;首次提交 2025-04-10
资料入口: 论文页面、原文 PDF、官方代码入口

1. 我最关心的问题:一道难题的每一步都难吗?

一篇很长的推理过程里,真正决定方向的可能只有几个步骤:怎样理解题意,应该引入什么变量,采用哪一种分解,发现矛盾以后要不要换路线。方向一旦确定,后面往往夹着大量代入、整理、枚举和解释。让一个大模型从头到尾承担全部工作,确实简单,但未必划算。

SpecReason 的切入点就是这种不均匀性。它让小模型先写出下一步,再请大模型判断这一步是否值得留下。评分足够高就接受,评分不足则丢掉候选,让大模型从之前已经确认的上下文重新生成。这里的“先试一下”发生在完整推理步骤上,而不只是几个 token 上。

我认为这篇论文最有价值的地方,是把两个经常混在一起的问题分开:大模型是否有必要亲自生成这一段,以及大模型是否需要参与把关。如果判断一段已有内容只需要很短的一次前向计算,而生成同一段内容需要几十次串行解码,那么“参与判断”可能比“亲自写完”便宜得多。

当然,这笔账能成立有条件。小模型必须经常写出可用的步骤,大模型也必须能够识别那些会破坏后续推理的候选。更重要的是,失败的草稿同样花钱:它先占用了生成时间,然后被验证,最后还要由大模型重写。不能只看成功接受的那部分,就把整套方法说成免费提速。

原文在所测试配置上报告了相对大模型直接推理的 1.4-3.0 倍加速,并观察到 pass@1 的提高。我把它理解为特定任务、模型和预算下的经验结果。它并没有证明整个混合系统仍然采样自原大模型的同一个输出分布。恰恰相反,推理长度、表达方式和最终正确率都会改变,说明系统确实采用了不同的生成策略。

本笔记以 v2 的 12 页全文和附录 A.1-A.2 为依据。下面的成本推导、风险界和假设数字是我为理解方法做的分析,不是论文新增实验。九张图中,两张来自论文原图裁剪,三张按正文明确给出的数字重绘,其余为教学示意或解析曲线。所有实验结果都注明来源;本文没有新增模型实验或复现声明。

1.1 先用一个单位错误把问题讲具体

论文的例子是一个步行题:九公里路程,加上喝咖啡的时间,以速度 ss 行走总共花四小时,以速度 s+2s+2 行走总共花 2.4 小时。咖啡时间是 tt 分钟。正确建模首先要统一单位:

9s+t60=4,9s+2+t60=2.4.(1)\frac{9}{s}+\frac{t}{60}=4,\qquad \frac{9}{s+2}+\frac{t}{60}=2.4. \tag{1}

两式相减,咖啡时间消失,得到 18/[s(s+2)]=1.618/[s(s+2)]=1.6,于是 s(s+2)=11.25s(s+2)=11.25。取正根得到速度 s=2.5s=2.5 公里每小时,再代回求出 t=24t=24 分钟。题目要求的新速度为 s+0.5=3s+0.5=3,因此总时间是 9/3×60+24=2049/3\times60+24=204 分钟。

这个过程里,决定小时和分钟如何换算、列出正确方程,是关键步骤。列式之后的求根和代入,相对容易交给小模型。但如果候选写成 240−t=9/s240-t=9/s,左边是分钟,右边是小时,问题就不是措辞不同,而是数学关系错了。一个流畅的句子也可能把整个后续过程带偏。

反过来,如果先定义 u=t/60u=t/60,再写 9/s+u=49/s+u=4,虽然 token 和原式不同,意义仍然正确。前提是变量定义保留在上下文中。这个例子提醒我:验证不能只看候选这一行长得像不像答案,还必须看符号在当前上下文里到底代表什么。

图 1:推理步骤之间的不同关系。

图 1:依据原文图 1-2 改写的教学示意。相同 token、等价含义、有用的后续安排以及单位错误,是不同层面的关系。大模型给出的高分只能说明它认可这个候选,不能替代数学证明。

2. 前置知识:为什么生成昂贵,判断可能便宜?

2.1 长思维链的时间花在哪里

自回归模型生成一个新 token,通常要先拿到上一个 token。长链推理会把这种依赖重复成千上万次。粗略地说,若一条思维链有 NN 个 token,大模型平均每个 token 的解码时间是 cBc_B,那么主要生成开销约为 NcBNc_B,再加上前缀处理等成本。

这个近似不是完整性能模型。上下文越长,注意力读取越多;批量大小、模型结构、硬件和张量并行方式也都会影响单 token 时间。不过,它足以说明一个事实:即使每一步不慢,串行重复足够多次,总等待时间也会很长。

已有文本的 prefill 与逐 token decode 不同。prefill 可以一次处理一段已知 token,而生成必须不断等待新 token。因此,“读完候选并输出一个分数”和“从零写出完整候选”不一定花同样的时间。SpecReason 正是利用这个差别,用大模型的一次短判断替代它的一段长生成。

这里还要加上 KV cache。模型会缓存前缀的键和值,避免每次都从头计算已经见过的内容。如果验证提示能够复用原推理前缀,只在尾部加少量新 token,判断成本就可能较低。如果缓存不命中,或者每次评分都重新拼出一个不同的长前缀,那么原本预期的节省可能消失。

2.2 普通推测解码保留的是什么

理解 SpecReason 前,我觉得必须先把传统推测采样的保证说准确。设同一个前缀下,目标模型分布为 p(x)p(x),草稿模型分布为 q(x)q(x)。从草稿模型采到 token xx 后,标准接受概率可以写成:

α(x)=min⁡ ⁣(1,p(x)q(x)).(2)\alpha(x)=\min\!\left(1,\frac{p(x)}{q(x)}\right). \tag{2}

这样,直接接受所贡献的概率质量是 q(x)α(x)=min⁡(p(x),q(x))q(x)\alpha(x)=\min(p(x),q(x))。一旦拒绝,再按正残差 [p(x)−q(x)]+[p(x)-q(x)]_+ 的归一化分布补采样,就能补上目标分布里缺少的那部分概率。两部分合起来才恢复为 p(x)p(x)。这就是“无损”背后真正重要的概率结构。

有采样时,无损不意味着两次独立运行必须生成同一串文字,而是输出分布保持一致。贪心解码可以使用确定性的匹配条件,但不能把它和随机采样的分布保证混为一谈。原文常用 token-level equivalence 概括传统方法,阅读时需要保留这一层区别。

SpecReason 则没有用这个概率修正。它依据大模型的语义效用评分,保留或替换整个候选步骤。因此最终混合出来的推理轨迹,并不要求回到原目标模型的分布。它追求的是在实际预算内保持或提高任务正确率,同时缩短等待时间。这是另一种质量要求。

2.3 七分并不等于百分之七十正确

论文采用一个很简洁的评分接口:让大模型输出一个效用分数,例如零到九的整数。这个分数可以作为排序和筛选依据,但如果没有额外校准,七分就不是“正确概率 0.7”。模型可能把熟悉程度、表达流畅度、局部正确性和推进作用揉进同一个数字。

提高阈值,意味着减少那些被当前评分提示判断为较弱的候选。它并不能直接把错误率限制在某个数字以内,也不能在阈值足够高时自动变成逐 token 精确匹配。语义评分和 token 相等是两个不同条件,不能仅靠把整数阈值从七提高到九,就认为二者已经等价。

这个区别不是文字游戏。上线时如果把七分当成经过校准的概率,就可能用它直接计算风险预算;如果实际分数只是偏好强弱,那么这些后续计算没有可靠依据。论文证明的是这个简洁接口在实验里有用,尚未证明其分数具有统一的概率含义。

3. 主算法:先提议,后判断,必要时重写

设 hth_t 是第 tt 步之前已经确认的上下文,包含题目与已保留的推理。小模型根据它生成候选 dtd_t,大模型给出效用 uB(ht,dt)u_B(h_t,d_t)。阈值为 τ\tau 时,可以把核心决策写为:

at=1{uB(ht,dt)≥τ},zt={dt,at=1,bt∼B(⋅∣ht),at=0.(3)a_t=\mathbf{1}\{u_B(h_t,d_t)\geq\tau\},\qquad z_t=\begin{cases}d_t,&a_t=1,\\b_t\sim B(\cdot\mid h_t),&a_t=0.\end{cases} \tag{3}

下一步上下文为 ht+1=ht∥zth_{t+1}=h_t\mathbin{\|}z_t。这里有一个容易忽略的细节:如果候选被拒绝,大模型应当从原先已确认的 hth_t 重新写,而不是接着错误候选继续写。后者更像纠错续写,会让被拒绝内容继续影响生成,不再是这里描述的回退过程。

图 2:逐步接受与回退。

图 2:根据原文第 4.1-4.2 节绘制。两模型在逻辑上共享已确认文本,不共享内部隐藏状态或 KV 张量。临时评分提示、拒绝的候选以及真正保留的推理前缀,必须区分清楚。

算法 1:逐步推测推理

输入:题目 q,小模型 S,大模型 B,阈值 tau,推理预算 K
01  h <- 题目和初始推理上下文
02  当推理尚未结束且仍有预算时:
03      记录当前已经确认的前缀 h
04      d <- 小模型生成一个完整候选步骤
05      u <- 大模型结合 h 对候选 d 评分
06      如果 u >= tau:
07          z <- d
08      否则:
09          丢弃被拒绝候选对应的临时状态
10          z <- 大模型从原前缀 h 重新生成一步
11      把 z 加入 h,更新剩余预算
12      让两模型的逻辑上下文与已确认的 h 对齐
13  按既定终止规则完成最终答案
输出:最终答案与已保留的推理轨迹

这段伪代码是对论文机制的解释,没有声称复刻某个仓库函数。它特意把上下文维护写出来,是因为这件事直接关系到算法的含义。评分时,模型看到的是一个临时的“请评价这个候选”的视角。评分指令和输出分数不能误混进下一轮正常推理里,否则模型后续生成的任务已经变了。

另外,保留一段文本和同步模型状态不是同一个动作。某一步由小模型生成,大模型没有按同样路径逐 token 生成它,但下一轮仍要知道当前前缀是什么。反之亦然。这里不需要共享两模型的内部状态,却需要让各自的缓存都对应同一个已确认文本序列。

3.1 为什么评分开销可能足够低

原文第 4.1 节指出,验证提示复用大部分已有思维链前缀,每次只需要 prefill 大约 70 个新增 token。在测试配置里,其成本接近大模型生成一到两个 token 的成本。如果一个完整步骤需要几十个 token,那么这种不对称就值得利用。

我不会把“70 个”和“一到两个 token”当成跨场景常数。候选长度、提示模板、分词器、前缀命中情况和当前批量都可能改变它们。更长上下文下,短 prefill 也需要访问历史注意力状态。真正迁移到新环境时,应当重新测量验证时间,而不是只把论文里的数字代入。

主实验把两个模型部署在同一组 GPU 资源上,静态划分 KV cache 空间,并让它们顺序交替运行。这避免了两个模型同时运行时的内核干扰,也让实验结构比较清楚。论文同时提到,未来可以探索流水重叠,但这不能算成当前已经验证的收益。

主配置是两张 A6000,每个模型的张量并行度都是二。因此论文中的模型共置,不应误读为整个 32B 模型必须单独装进一张显卡。这里强调的是二者使用同一组资源并轮流执行,而不是内部状态共享或不受内存约束。

3.2 先让大模型负责开头几步

除了分数阈值,论文还研究了另一个控制项:前 nn 个步骤强制交给大模型。直觉是,开头往往承担理解题目、列式和规划,后续步骤则更容易沿着既定路线执行。对于走错第一步后很难恢复的问题,这个安排有吸引力。

但步骤位置只是难度的近似指标。后面遇到一个新的条件分支,也可能比开头难;有些模型开头会写很多重复的题意复述,前十步未必已经触及真正的规划。因此我把它视为一个便宜、可解释的启发式,而不是“重要推理总在开头”的规律。

4. 把提速条件一步步算出来

论文的结果说明这套方法能够有效,但理解失败条件还需要一笔更细的账。本节公式是我为阅读而建立的简化模型。它假设每步只提出一个候选、执行顺序与论文一致,并且能够找到一个可比较的大模型基准步骤。不同长度、不同语义的步骤之间未必能严格对应,后面会单独讨论。

4.1 一步推理的总成本

用 DtD_t 表示草稿成本,VtV_t 表示评分成本,FtF_t 表示拒绝后重新生成的成本,HtH_t 表示其他上下文维护开销,则:

E[Ct]=E[Dt+Vt+Ht]+Pr⁡(at=0) E[Ft∣at=0].(4)\mathbb{E}[C_t]=\mathbb{E}[D_t+V_t+H_t] +\Pr(a_t=0)\,\mathbb{E}[F_t\mid a_t=0]. \tag{4}

这个写法里的条件期望值得保留。被拒绝的步骤可能更难、更长,本来就需要大模型花更多时间。如果直接拿所有步骤的平均长度来估计回退,就可能低估成本。相应地,高接受率也不一定代表大量时间被节省:被接受的也许主要是非常短的简单句。

为了得到直观结论,暂时假设每个基准步骤成本都是 BB,草稿成本为 DD,评分成本为 VV,接受概率为 aa,回退重新生成也花 BB,并忽略其他开销。定义相对成本 r=D/Br=D/B 和 v=V/Bv=V/B,得到:

CB=r+v+1−a,S=BC=1r+v+1−a.(5)\frac{C}{B}=r+v+1-a,\qquad S=\frac{B}{C}=\frac{1}{r+v+1-a}. \tag{5}

要有加速,分母必须小于一。因此:

a>r+v.(6)a>r+v. \tag{6}

这个条件非常朴素,却能排除很多过度乐观的判断。小模型更小,只能说明 rr 可能较低;如果评分很贵,或者候选经常被拒绝,最终仍然会比直接让大模型写更慢。每次失败尝试都先付了草稿和评分费用,这笔沉没成本不会因为候选最终被丢弃而消失。

图 3:接受率与验证成本共同决定提速。

图 3:根据式(5)计算的解析示例。草稿成本固定为基准步骤的 0.20,分别画出三种验证成本。这里的数字是教学假设,不是论文测量。水平虚线表示刚好不快也不慢。

4.2 一个具体算例

假设大模型写一步需要 200 毫秒,小模型需要 40 毫秒,评分需要 10 毫秒。如果接受率是 60%,平均成本为 40+10+0.4×200=13040+10+0.4\times200=130 毫秒,约有 1.54 倍加速。如果接受率降到 20%,成本就变成 210 毫秒,反而比直接生成慢。

这两个例子除了接受率之外完全相同,说明只报“草稿模型很快”没有多少意义。同样,接受率越高也不是无条件越好。把阈值降得很低,当然容易接受更多候选,但也可能引入错误,迫使后面花更多步骤反思,甚至直接得到错误答案。

所以实际目标应是:在独立评估的答案质量不低于要求时,寻找最低延迟。不能把“模型愿意给高分”直接当成最终优化目标,否则系统只是在适应自己的评分器,而不一定更会解题。

4.3 思维链变短也是收益的一部分

上面的计算把步骤数视为不变,但 SpecReason 会改变文字长度和推理路线。如果混合系统需要的可比步骤数是原来的 kk 倍,而基准总时间中有比例 ff 的部分无法被本方法加速,可以写一个教学近似:

Stotal≈1f+(1−f)k(r+v+1−a).(7)S_{\mathrm{total}}\approx \frac{1}{f+(1-f)k(r+v+1-a)}. \tag{7}

这个式子把两种收益分开:同样一段工作由更便宜的模型完成,以及整个过程需要的工作减少。k<1k<1 时,简洁表达会帮忙;k>1k>1 时,如果错误候选引发更多绕路和纠正,局部提速可能被拉长的轨迹吃掉。实际数据里,各步骤长度并不相同,因此不能不加检查就用它反拟合性能。

这里还引出预算问题。最终保留的思维链只有五千个 token,不意味着系统总共只生成了五千个 token。被拒绝的草稿、评分提示、评分输出、缓存同步,都消耗时间和资源。等输出 token 预算,和等算力预算不是一回事。

如果只统计最后留下的文字,就会低估方法的总工作量;如果只报总生成量,又看不出哪些工作真正推动了答案。两者应该分开报告,最好再加上大模型、小模型和验证分别花了多少时间。

4.4 一步应该有多长?

设一个候选步骤有 mm 个 token,小模型与大模型每个 token 的成本分别是 cSc_S、cBc_B,评分成本含固定部分 v0v_0 和随长度增加的部分 v1mv_1m。那么每个保留 token 的平均成本可近似为:

C(m)m=cS+v1+v0m+[1−a(m)]cB.(8)\frac{C(m)}{m}=c_S+v_1+\frac{v_0}{m} +[1-a(m)]c_B. \tag{8}

步骤变长,v0/mv_0/m 下降,固定评分成本被摊薄;但是更长的候选包含更多逻辑依赖,也可能更容易出现一次致命错误,从而降低 a(m)a(m)。例如用纯教学模型 a(m)=(1−e)ma(m)=(1-e)^m 表示长度增加后的接受率,求导会出现一个负的摊销项 −v0/m2-v_0/m^2,以及一个正的拒绝成本项 −cB(1−e)mlog⁡(1−e)-c_B(1-e)^m\log(1-e)。

真实语义错误不独立,也不是逐 token 发生的,所以这个模型不能用来预测某道数学题。它只是清楚地展示相反的两个趋势:步骤太短,评分太频繁;步骤太长,错误发现太晚,重做也更贵。最合适的单位需要同时考虑语义完整性与系统成本。

在变量定义中间截断,可能让本来正确的式子看起来没有依据;把多个推导合并成一大段,又会让一个分数掩盖内部不同子步骤的质量。原文采用完整句子或逻辑单元的思路有道理,但还没有解决所有任务上的最佳分段问题。

5. 两层推测:回退时还能再快一点吗?

可以。外层语义验证拒绝一个候选后,大模型需要重写该步骤。重写过程本身仍然是 token 生成,因此可以在这个阶段使用传统推测解码。外层选择“谁写的推理步骤能够留下”,内层负责“怎样更快地从大模型分布生成替代文本”。

图 4:语义推测与 token 推测的组合位置。

图 4:根据原文第 4.2 节绘制。内层推测加速的是大模型回退生成分支;外层草稿与判断仍有成本。内层无损不意味着外层语义接受也变成无损。

算法 2:带 token 推测的回退

输入:已确认前缀 h、候选步骤 d、接受阈值 tau
01  u <- 大模型结合 h 对 d 做语义效用判断
02  如果 u >= tau:
03      保留 d 并返回
04  恢复到候选 d 之前的已确认前缀
05  为大模型重写启动精确 token 推测
06  当替代步骤尚未结束时:
07      根据当前前缀起草一个短 token 块
08      目标模型并行计算该块的条件分布
09      执行对应的精确接受与残差修正程序
10      只加入已接受或已修正的有效 token
11      丢弃失效的推测后缀状态
12  保留替代步骤,并对齐两模型的逻辑前缀

若内层推测将回退生成加速 ss 倍,则式(5)变为:

ChierB=r+v+1−as.(9)\frac{C_{\mathrm{hier}}}{B}=r+v+\frac{1-a}{s}. \tag{9}

相比只做语义推测,额外加速是:

CChier=r+v+1−ar+v+(1−a)/s.(10)\frac{C}{C_{\mathrm{hier}}} =\frac{r+v+1-a}{r+v+(1-a)/s}. \tag{10}

它一般小于 ss,因为并不是全部工作都被内层优化了。当接受率接近一时,几乎没有回退步骤,内层可发挥的空间就很小;当语义阈值更严格,更多工作回到大模型,内层的价值才会增加。这也解释了为什么不能把两种方法单独测到的加速倍数直接相乘。

资源共享也限制了组合收益。同一个小模型可能在不同阶段承担不同角色,它仍要占显存、缓存和执行时间。在多请求服务中,加入草稿模型可能减少可用 KV 空间,降低并发容量。因此,单请求变快与服务器吞吐提高,需要分别验证,不能自动互相推出。

6. 实验究竟比较了什么?

6.1 四组模型,三类任务

主实验用两个 32B 大模型:QwQ-32B 和 Skywork-OR1-Preview-32B;小模型则是 DeepSeek-R1-Distill-Qwen-1.5B 与 Zyphra ZR1-1.5B。两两组合,得到四组配置。数据集包括 MATH500、AIME 和 GPQA Diamond,分别覆盖数学题与研究生水平的科学问答。

系统环境是两张 NVIDIA A6000-48GB,使用 vLLM 0.8.2,并启用前缀缓存。两模型都采用张量并行度二。这些细节会影响草稿、大模型生成和短验证之间的成本比例,因此是解释结果的一部分,不能把它们当成无关的附注。

主实验每个问题采样 16 次,温度为 0.6,输出预算为 8192 token。论文用这些样本估计 pass@1。设第 ii 道题的 16 个答案中有 cic_i 个正确,问题总数为 MM,则统计量是:

pass@1^=1M∑i=1Mci16.(11)\widehat{\mathrm{pass@1}}=\frac{1}{M}\sum_{i=1}^{M}\frac{c_i}{16}. \tag{11}

这不是“十六次里面至少对一次”。后者是另一个指标,通常明显更高。这里重复采样是为了估计一次采样的平均成功率,而不是把多次尝试汇总成一个更强的最终解答器。

还需要注意,同一道题的十六次输出共享题目难度,不能简单当成十六道独立题目。在计算置信区间时,问题层面的聚类很重要。当前版本主要展示各配置的点结果,并没有给每一个很小的准确率差异都提供充分的不确定性分析。

6.2 五个对照让贡献比较清楚

主图包括五种方案:大模型直接生成、小模型直接生成、每次草拟五个 token 的普通推测解码、SpecReason,以及 SpecReason 加普通推测解码。这个设计比只比较原模型和最终组合更有信息量。

小模型单独运行告诉我们,便宜模型本身能到什么水平;大模型单独运行给出质量与时间参考;普通推测解码提供更严格分布约束下的加速基线;另外两个点则展示放宽中间步骤要求之后还能获得多少收益。少了其中任意一项,都可能把不同来源的收益混在一起。

图 5:原论文的主结果。

图 5:SpecReason v2 第 7 页原图 3,保留图例、三个数据集列与四组模型行。每个小图内部越靠左上越好。这里直接保留原始点,不从图片像素反推未经正文明确给出的精确数字。

原图显示,在测试范围内,SpecReason 能把不少工作交给小模型,同时保留较好的最终答案表现。再加入 token 推测后,组合方案进一步缩短时间。这支持了“语义层面的自由度还有额外收益”的判断,但不同小图坐标范围不同,不适合直接通过视觉距离比较各任务的提升大小。

6.3 区间不是误差条,也不是全局平均

正文第 5.2 节给出了下面的范围。它们是不同数据集之间的最小值和最大值,不是统计置信区间,也不是把所有组合平均后得到的一个统一效果。

大模型 / 小模型SpecReason 相对大模型的延迟加速组合相对普通推测的额外延迟下降
QwQ-32B / R1-1.5B1.5-2.5 倍19.4-44.2%
QwQ-32B / ZR1-1.5B1.6-3.0 倍30.8-58.0%
Skywork-Preview-32B / R1-1.5B1.4-2.5 倍8.8-52.2%
Skywork-Preview-32B / ZR1-1.5B1.7-2.4 倍25.1-51.8%

同样按这四组顺序,小模型承担的步骤比例分别为 38.1-80.0%、36.5-71.3%、39.3-70.2% 和 41.4-66.6%。这是步骤比例,不是时间比例,更不是大模型计算量减少的同一个百分比。假设许多短句被接受,而少数很长的关键推导都被拒绝,仍然可能出现“步骤接受很多,但大模型总时间没省那么多”。

另一个容易看错的地方是“延迟下降百分比”和“加速倍数”。如果相对比较对象,延迟减少比例为 δ\delta,那么加速倍数是:

S=11−δ.(12)S=\frac{1}{1-\delta}. \tag{12}

因此,58.0% 的延迟下降对应约 2.38 倍加速,而不是 1.58 倍;8.8% 对应约 1.10 倍。这只是对报告数字的数学换算,没有增加新测量。比较多个优化时,也不能把两次相对不同基线的下降百分比直接相加。

6.4 阈值降低后,代价有多大?

阈值实验使用 QwQ-32B 与 R1-1.5B,并从完整数据中选取有代表性的随机子集。原文讨论了三、五、七、九四个阈值,并在正文给出从三提高到七的具体端点。

MATH 子集的延迟从 35.7 秒提高到 69.2 秒,正确率从 59.4% 提高到 63.7%;AIME 从 109.4 秒到 261.9 秒,正确率从 22.3% 到 39.3%;GPQA 从 72.7 秒到 223.0 秒,正确率从 33.1% 到 50.7%。

图 6:两个阈值端点的变化。

图 6:依据原文第 5.3 节明确给出的数值重绘。连线仅帮助辨认端点变化,不表示中间阈值满足线性规律。这里是子集实验,不能当成主实验完整数据集的最终结果。

我觉得 AIME 和 GPQA 的变化比最高加速倍数更值得看。它们说明,一味接受小模型结果确实能很快,但质量可能下降很多。小模型与大模型之间的能力差距越大,宽松接受越危险。一个在常规数学计算上调好的阈值,没有理由自动适用于更难的竞赛题或科学问答。

这也解释了为什么静态阈值虽然简单,却需要认真校准。分数刻度可能随任务、语言、模型和提示发生变化。同样的“七分以上”,在两个模型眼里未必代表同样严格的要求。论文指出 Skywork 的指令遵循稍弱,需要更严格阈值来避免质量损失,也让其部分加速收益变小。

6.5 保护前几步的效果

另一个 AIME 实验依次强制前零、十、二十、三十、四十步由大模型生成。端点结果是正确率从 33.2% 到 37.3%,延迟从 270.4 秒到 292.6 秒。也就是说,多花 22.2 秒,提升了 4.1 个百分点。

这个控制项有较好的可解释性:给开头规划多一些大模型预算,后面再尝试节省。但它没有单独隔离“规划变好”和“总共多用了大模型计算”两种原因。要知道收益到底来自哪一个,需要比较相同大模型预算放在不同位置的策略。

例如,固定保护前二十步,与把二十个大模型步骤分配给后续低置信位置,是两个不同政策。当前版本主要证明前一种简单政策可以提供额外调节空间,并没有证明它在所有分配方式中最优。

7. 为什么小模型参与后,正确率反而可能更高?

7.1 预算是这个结果的重要条件

乍看之下,让能力较弱的模型写一部分内容却提高正确率,似乎很反常。论文给出的一个解释是,小模型通常更简洁。大模型可能花大量 token 反复描述、检查和绕路,而预算用完时还没给出最终答案。把一部分过程换成较短的小模型步骤,混合系统可能更早完成解答。

在 QwQ-32B 加 ZR1-1.5B 的配置中,正文报告思考 token 数减少 1.2-2.0 倍。附录 A.2 对四组模型分别报告 1.0-1.3、1.2-2.0、1.0-1.8 和 1.1-2.3 倍的范围。这里仍然是最终推理长度的比较,不能直接替代总计算量。

图 7:不同输出预算下的正确率差距。

图 7:QwQ-32B 加 ZR1-1.5B 在 AIME 上,相对大模型的正确率差距。原文第 5.2 节讨论图 4 时报告:4096 token 时差 16.2 个百分点,8192 token 时差 4.7 个百分点。图中不是相对增长率,也不是额外复现实验。

预算越紧,混合系统的优势越大;给大模型更多输出空间后,差距缩小。这支持了“更有效地使用有限输出预算”的解释。它对实际产品有价值,因为用户确实可能受等待时间和输出长度限制。但它不能直接证明小模型提供了更强的基础推理算法。

7.2 简洁、判断与路线改变还没有完全拆开

少写文字只是一个可能因素。每一步增加显式判断,本身也可能筛掉大模型原来会继续接受的坏路线;小模型的不同表达方式还可能改变后续轨迹分布。最终正确率提升,是多个机制共同作用的结果。

看到“token 数更少”和“正确率更高”同时出现,只能说明二者在该方法下相关,不能完全证明前者导致了后者。若要分解原因,可以加入一个对照:仍然只用大模型,但要求它以相同程度的简洁表达推理,再比较最终质量和总计算量。

另一个对照是,大模型自己生成步骤后,也加上同样的显式评分与重写。这样可以检查收益究竟来自“有一个外部评分步骤”,还是来自“小模型提供了不同但有用的草稿”。这些是我认为最有信息量的后续实验,不是当前论文已经完成的结果。

7.3 被截断的问题要单独看

如果一个系统在较小 token 预算下更好,可能是它真正减少了推理错误,也可能只是更少出现“还没给出答案就被截断”。这两种改进都值得,但面向下一步优化时含义不同。前者需要关注推理质量,后者可能更多关联停止策略、表达长度和预算分配。

我希望看到按是否截断分组的结果:在两种系统都完整作答的题目上,正确率差距还有多大?在原模型被截断而混合系统完成的题目上,最终答案是否可靠?这样的拆解能更清楚地说明方法节省的是冗余表达,还是更深层的搜索工作。

8. 大模型当裁判的证据够不够?

8.1 原论文做了一个有价值的相关性检查

第 5.4 节用 Math-Shepherd 过程奖励模型对 R1-1.5B 产生的 AIME 中间步骤评分,然后比较这些分数与 QwQ-32B 给出的效用分数。作者把 PRM 分数分箱,每箱计算大模型效用分数的均值。曲线总体上升,尤其低质量步骤对应较低效用分。

图 8:大模型效用分与 PRM 分数的关系。

图 8:SpecReason v2 第 9 页原图 7。横轴是另一个过程奖励模型的分数区间,纵轴是箱内平均效用分。分箱后的关联可以说明两个评分器有一定一致性,但不能直接给出校准误差、误接受率或最终答案保证。

这张图至少说明,大模型评分并非完全随意。它似乎能区分一些明显较差的候选,符合方法所需要的基础判断能力。尤其当目标是拒绝严重错误、接受明显有用的简单步骤时,这种辨别力很重要。

8.2 但平均趋势会遮住很多细节

首先,PRM 本身也是一个学习得到的评分器,不是真实正确性的自动证明。两个模型可能因为相似的训练分布或表达偏好,同时漏掉同一类错误。其次,箱内均值看起来平滑,不表示每个步骤的判断都稳定。可能有的步骤被严重高估,有的被严重低估,平均以后恰好形成一个漂亮趋势。

第三,图中没有展示各箱样本数量和分散程度。一个只包含很少样本的高分箱,和一个有很多样本的中分箱,不应在证据强度上被同等看待。最后,即使对局部正确性判断不错,也不一定能识别“这一步虽然正确,但对解决当前问题没有帮助”。

因此,我把这张图看作效用评分具有一定区分能力的证据,不把它解释成概率校准已经完成。实际阈值选择仍应回到独立的最终答案表现,并检查被接受的坏步骤是什么样的。

8.3 一步错一点,长链会怎样?

用 EtE_t 表示第 tt 步出现“有害候选被接受”的事件,概率为 utu_t。不需要假设各步独立,就有联合界:

Pr⁡ ⁣(⋃t=1nEt)≤∑t=1nut.(13)\Pr\!\left(\bigcup_{t=1}^{n}E_t\right)\leq\sum_{t=1}^{n}u_t. \tag{13}

它约束的是“至少接受过一个有害步骤”的概率,不是最终答案出错率。模型可能在后面修复错误;即使所有小模型候选都没出问题,大模型自己也可能犯错。不过,这个式子仍说明,长链会积累局部判断风险,不能只说每一步看起来错误率不高,就认为整体很稳。

再把 utu_t 拆开。若 qtq_t 是候选本身有害的概率,βt\beta_t 是在候选有害的条件下仍被接受的概率,那么:

ut=qtβt.(14)u_t=q_t\beta_t. \tag{14}

这区分了草稿质量与裁判质量。更好的草稿可以降低 qtq_t,更可靠的验证可以降低 βt\beta_t;但二者可能共享盲点,所以不是完全独立的改进方向。只统计总接受率看不出这个风险分解,需要专门分析那些真正影响最终答案的错误接受。

这两个式子都是阅读中的分析,不是论文给出的可靠性保证。要把它们用于实际决策,还需要有人能够可靠地识别“有害候选”,并估计相关概率。原始的零到九分数不够完成这件事。

9. 换到 70B 和更强显卡之后发生了什么?

附录 A.1 把大模型换为 R1-70B,并在四张 A100-80GB 上使用四路张量并行。在代表性的 AIME 子集上,报告的加速是 1.5 倍,小于 QwQ-32B 对照的 1.9 倍。单看参数量,可能会以为大模型更大,小模型更值得替代;实际结果提醒我们,硬件和模型判断能力同样重要。

图 9:附录中的跨配置比较。

图 9:按附录 A.1 的明确数字重绘。模型家族、硬件、并行度和阈值同时变化,因此不能把它当成只改变参数量的消融实验。

论文解释了两个因素。第一,更强硬件与更高并行度使 R1-70B 的单 token 时间相对 QwQ-32B 改善约 1.5 倍,而小模型只有约 1.1 倍改善。大模型相对变得更快,小模型替代它的经济优势就缩小。

第二,为了维持答案质量,R1-70B 配置采用更严格的接受阈值,小模型承担的步骤比例从 40.8% 降为 23.2%。也就是说,不仅每次替代节省得少了,而且被允许替代的次数也少了。这两个变化一起削弱总体提速,与前面的成本分析相符。

这组结果让我更愿意用“模型与硬件的配对关系”评价方法,而不是只问草稿参数量是目标模型的几分之一。更好的目标模型可能在生成和判断两个角色上表现不同;更强硬件也未必按相同比例加速大小模型。

10. 设计取舍:还有哪些路可以走?

10.1 使用专门 PRM,还是直接请大模型评分

专门的过程奖励模型可能更小、更快,也更容易针对特定领域做校准。但它增加了一个常驻模型、一份上下文状态和一层部署复杂度,还可能在跨领域时失效。直接使用大模型评分则复用了本来就必须存在的回退模型,也能利用其对任务上下文的理解。

我认为论文的选择适合作为一个简洁起点:只要短前缀验证确实便宜,就不必为了评分再增加一个模型。但这不能推出通用大模型必然比专用 PRM 更好。公平比较应该同时看延迟、显存、错误相关性、独立校准结果和最终任务质量。

10.2 先路由还是先起草

另一个方案是在起草前直接判断这一步该用谁。如果路由器很准,就能省掉那些最终被拒绝的草稿。但在看到具体候选之前预测下一步难度,本身可能很难。SpecReason 先支付草稿成本,换来一个可供实际评价的对象。

因此,后验判断不是毫无代价的方便,而是一种用成本换信息的策略。未来可以把二者结合:明显困难的状态直接用大模型,明显简单的状态尝试小模型,其余再走草稿与评分。这样的混合政策很自然,但需要把路由开销也算进去,不能只比较理想条件下的命中率。

10.3 顺序执行还是流水重叠

当前顺序执行避免两个模型互相争抢计算资源,比较容易分析;流水重叠则可能减少等待,让小模型提前写下一步。不过,如果前一步被拒绝,提前生成的内容会失效,还需要处理取消、回滚和缓存一致性。

把执行重叠起来,并不会自动增加有用工作比例。它可能用更多总计算换更低单请求延迟,也可能因为资源竞争反而拖慢验证。这类优化必须同时报告总工作量和端到端时间。论文把它作为后续方向,我也只把它当作尚待验证的扩展。

10.4 局部正确并不等于值得继续

一个步骤可能完全符合数学规则,却在无用方向上推进;也可能正确地沿用了一个早先就错了的假设。只看这一步自身是否通顺,很容易错过全局问题。效用评分理想上要评估它对后续成功的贡献,这比语法检查或局部计算检查难得多。

自我反思能够修复部分错误,但也消耗预算,可能来得太晚,或者再次犯错。因此“后面还能改”是经验上的容错来源,不是可以无限放松前面验证的理由。平均正确率相近时,还应看错误是否集中在某类难题,以及是否出现更长的尾部延迟。

11. 局限:目前证据能支持到哪里

这篇论文最有力地支持的是:对于测试过的推理任务和模型组合,存在足够多的小模型可处理步骤,而大模型的短验证能够以较低成本筛选它们。这是一个有价值的系统结果,但还不是跨所有推理场景的通用保证。

主实验集中在数学和科学问答,模型组合也有较强的 Qwen 家族背景。附录增加 70B 对照,扩大了范围,但同时改变硬件与并行度。不能把这些实验直接外推到代码修改、多轮工具调用、长文档代理或更复杂的多模态任务。

阈值分析采用子集。如果在观察测试集结果之后挑选最合适阈值,再只展示这个点,容易高估迁移效果。更稳妥的做法是独立校准阈值,锁定配置,再在未参与选择的问题上报告性能。同时应给出不确定性,尤其不要把很小的准确率差异解释为已确立的能力提升。

系统指标也有范围。本文没有给出饱和多租户服务下完整的吞吐、尾延迟与能耗研究。模型共置会占用缓存空间,顺序切换会影响调度。单请求更快并不自动意味着每千次请求的 GPU 成本更低,也不保证高并发下仍有同样加速倍数。

评分接口还可能受候选风格、长度、语言以及其中包含的指令影响。原文没有完整测试恶意候选或外部不可信文本对评分器的干扰。对于良性的数学基准,这未必是主导因素;但把机制扩展到真实代理时,必须重新评估这个边界。这里不是说原实验存在恶意输入,而是指出尚未覆盖的适用条件。

最后,最终正确率和中间推理质量不是同一件事。有些过程可能含错误但最后碰巧得到正确答案,有些过程大体合理却在输出格式上失败。若应用关心推理可解释性、审计性或中间决策可靠性,仅凭最终答案指标可能不够。

12. 批判性分析

12.1 真正改变的是优化目标

我喜欢这篇论文提出的问题:如果用户真正需要的是有限时间内的正确答案,是否有必要精确保留每一个中间 token?在一些任务里,答案是否定的。SpecReason 用一个具体、容易理解的机制,把这种自由度转成了系统收益。

代价在于,质量要求从严格的目标分布保持,变成了组合系统在任务上的经验表现。传统精确采样有一个比较清楚的概率合同;语义接受更灵活,但需要对每种相关任务分布重新证明自己的质量。二者各有价值,最不应该做的是把后一种方法包装成前一种保证。

因此,我会把 SpecReason 看成一个推理策略,而不只是一项底层内核优化。它决定何时采用谁的内容、何时重写、如何使用有限预算。这类改变理应通过任务质量、总成本和失败分布来评价,而不只看单个算子或单 token 的速度。

12.2 评分器不应同时定义胜负

大模型评分决定哪些轨迹能够留下。如果最后评价系统好坏时,还主要使用同一个评分器的偏好,就可能产生自我确认:候选越来越像评分器喜欢的样子,但并不更正确。论文采用独立的最终答案基准,降低了这个问题;PRM 相关性图只是辅助证据。

未来扩展时,我会保留这条边界:在一个集合上校准阈值,在另一个集合上看最终成功,再单独检查有害接受。特别值得分析的是两个评分器都给高分、最后却答错的例子。这类失败能揭示共享盲点,而总体相关性很难揭示它。

同样,错误分析不能只选一两个生动例子。应该按错误类型统计:单位、变量定义、遗漏条件、无效重复、错误计划、局部正确但全局无关等。不同类型可能需要不同验证策略,统一的整数分数未必能覆盖所有风险。

12.3 最有价值的下一步是匹配总预算

固定输出 token 上限下,简洁的混合过程更容易在预算内答完,这是实用收益。但为了理解更深层机制,我希望同时看到固定墙钟时间和固定总 GPU 工作量的比较。草稿被丢弃了,也应该算入成本;验证不出现在最终答案里,也应该算入成本。

可以把一个更明确的决策目标写成:

min⁡τ,n,G  E[T]subject toAccuracy(τ,n,G)≥Amin⁡.(15)\min_{\tau,n,\mathcal{G}}\;\mathbb{E}[T] \quad\text{subject to}\quad \mathrm{Accuracy}(\tau,n,\mathcal{G})\geq A_{\min}. \tag{15}

这里 G\mathcal{G} 代表步骤分段政策,nn 代表强制由大模型承担的开头步骤数。这是我的整理,不是论文已经求解的优化问题。它强调阈值、位置和步骤长度会互相作用,应该联合考虑,而不是各自找到一个漂亮数字之后拼在一起。

如果应用还限制显存、能耗或尾延迟,也可以增加相应约束。关键不是把目标写得复杂,而是让“快”和“准”分别有可检查的含义,并让选定配置在没有参与调参的任务上接受检验。

12.4 什么证据会让我更相信它?

我最想看到四种机制被拆开:小模型提供草稿,大模型自己变得更简洁,显式判断带来的过滤,以及回退时的 token 推测。匹配预算后逐项加入,才能说明每一层到底贡献了多少,而不是把最后的总收益全部归因于小模型。

其次是跨条件稳定性。阈值在不同任务难度、不同上下文长度和不同语言下是否还能维持质量?步骤划分变化时,接受率与有害接受率如何变化?多请求并发时,缓存占用是否会吃掉单请求的延迟收益?这些问题比继续提高一个最高加速数字更能说明实用价值。

反过来,如果取消截断后准确率优势大幅消失,说明方法主要改善预算利用;如果长上下文下错误接受迅速增加,说明判断接口需要加强;如果高负载时吞吐下降,说明共置资源管理成为瓶颈。这些结果都不会让研究失去意义,但会改变我们应该如何使用它。

当前论文并没有给出上述所有答案。我认为它已经清楚展示了一条值得继续研究的路线:把中间推理看成可以按能力需求分配的工作,同时把验证成本和错误传播放在台面上。它最值得保留的思路,是优化每单位总工作量带来的有效推理进展。

13. 结论

SpecReason 用小模型提出完整推理步骤,用大模型做短判断和必要的回退生成。它的收益依赖于几件事同时成立:步骤具有可判断的含义,验证足够便宜,小模型经常给出可用候选,大小模型之间确实存在速度差,而接受的内容不会造成不可接受的质量损失。

普通推测解码可以继续加速大模型重写的分支,但不能消除外层草稿和验证成本,也不能把整个系统自动变成无损采样。输出预算下的质量提升值得重视,同时要区分简洁表达、显式判断和真实推理能力的贡献。

我的实际阅读顺序会是:先看验证成本与接受率能否跨过盈亏平衡点,再看最终答案在实际预算下是否可靠,最后检查错误和延迟分布是否适合应用。论文证明了这条路在所测配置中走得通;更广泛的使用,还需要更细的校准、预算对齐和工作负载验证。

参考资料与图表说明

  1. Rui Pan、Yinwei Dai、Zhihao Zhang、Gabriele Oliaro、Zhihao Jia、Ravi Netravali:SpecReason,arXiv:2504.07891v2,2025-05-16。本文报告的实验数字均来自该版本第 4-5 节及附录 A。
  2. Yaniv Leviathan、Matan Kalman、Yossi Matias:Fast Inference from Transformers via Speculative Decoding。用于理解精确推测采样与概率修正的背景。
  3. Peiyi Wang 等:Math-Shepherd: Verify and Reinforce LLMs Step-by-step without Human Annotations。SpecReason 使用的过程奖励模型;本文讨论的比较结果来自 SpecReason 第 5.4 节。

图 5、图 8 是有明确署名来源的原论文图裁剪;图 6、图 7、图 9 重绘正文明确数字。其余图为解释性构造。式(2)及其概率质量解释属于经典推测采样背景;式(4)至(10)、式(13)至(15)是本笔记的条件模型或分析,不能当成 SpecReason 新增实验或无条件理论保证。