AI 基建
0%
第四部分 · 推理与测试时算力 · 第 30 章

推断时扩展范式

作者Changkun Ou
阅读时长约 16 分钟

第 28 章 里的训练只花一次算力,把推理能力固化进权重。推断时扩展是另一种办法:权重冻结之后,在推断阶段为每个问题花更多算力,让一个固定的模型回答更难的问题。重复采样提高的是覆盖率,而不是答案质量;串行修订与并行搜索同为测试时算力,形式却不同,各自有不同的理想区间;计算最优分配按问题难度调度预算;而当挑答案的选择器并不完美时,整条曲线还会下降。

训练之后只剩一个预算选择

训练好的模型在推断时只剩一个可调项:每个问题投入多少算力。成本最低的答案是一次贪心解码。问题在于,增加推断算力能换来什么:是一千个样本而非一个,还是一条长而审慎的链而非一条短的;这笔开销,又是否比一开始就训练一个更大的模型更划算。

这个问题之所以重要,在于两笔开销可以互换。更大的模型训练更贵,而且此后每个词元都一直更贵。测试时算力不消耗训练预算,只在需要它的问题上才付,而难问题的长尾上恰恰藏着大部分价值,容易的多数问题则不用额外付出。如果一个小模型加上额外推断,能在难问题上追平一个大模型,第 31 章 的服务经济学就会改变:成本便从一笔每次请求都要付的固定资产,挪成了一个只在问题值得时才花的变量。

测试时算力的两种形态

测试时算力有两种形式,这一区分组织起后续分析。并行扩展抽取许多独立样本,再加以组合。串行扩展把算力花在一条生长的链上,每一步都以上一步为条件,对单一思路加以修订或延伸。Snell 等把这两者刻画为串行地修订提议分布,与并行地针对验证器搜索,而核心的经验主张是:两者都不占优,更好的形式取决于问题本身 (Snell et al. 2024)。

串行扩展花预算的方式不同。它不是 kk 个独立的尝试,而是模型在一条轨迹里持续思考,算力得到的是长度与修订,而非宽度。第 28 章 的推理模型本就原生地这样做:一条长思维链就是串行的测试时算力,是那一章的 RL 教会模型产出的。s1 以最直接的形式展示了这个控制手段,即预算强制(budget forcing):一种在解码时介入、控制模型思考多久的方法。当模型试图结束思考时,压制思考结束词元,追加一个 「Wait」 来推动它继续,或强制终止以限制开销 (Muennighoff et al. 2025)。这样拉长链条,能让模型抓住并修正自己的错误,准确率随被强制的预算上升。串行与并行也可以组合:可以抽取若干条长链,再在其中做选择,而 Snell 等研究的正是这个二维预算 (Snell et al. 2024)。图 30.1 展示这两种形式,以及选择器在哪里决定覆盖率是否变成准确率。

P 问题 PAR 并行: k 个独立样本 P->PAR SEQ 串行: 一条生长的链 P->SEQ COV 覆盖率随 k 上升 PAR->COV REV 原地修订或延伸 SEQ->REV SEL 选择器 COV->SEL ACC 覆盖率变成准确率 SEL->ACC 验证器 PLAT 数百个样本后趋于平台 SEL->PLAT 多数投票或奖励模型 BUD 预算强制控制长度 REV->BUD
图 30.1. 测试时算力的两种形式。并行采样提高覆盖率,但由选择器决定这份覆盖率是否变成准确率:验证器直接转化它,而多数投票或奖励模型在数百个样本之后趋于平台。
它从何而来

一次快速前向传播与一条更长、更刻意的链之间的区分,呼应了认知心理学里 System 1 与 System 2 之分,那是一幅组织设计空间的图,而非架构所实现的一个机制。第 3 章 标出这一类比在何处成立、又在何处破裂。

覆盖率不是准确率

并行的故事从最简单的方法说起。抽取 kk 个样本,问其中至少有一个解出的问题占比是多少。Brown 等把这称作覆盖率,它是任何选择规则能从这批样本里取得的上限 (Brown et al. 2024)。覆盖率随 kk 在四个数量级上平滑上升,可用一条指数化幂律很好地拟合(一条平滑趋近上限的曲线,随 kk 增大,每加一个数量级的样本带来的回报以可预测的方式递减),这正是 第 5 章 中训练扩展律的推断时对应物 (Brown et al. 2024)。关键词是覆盖率,不是准确率。集合里存在一个正确样本,跟知道是哪一个并不是一回事。

这道鸿沟正是并行扩展的设计问题。要把覆盖率变成答案,就需要一个选择器,而难处就在选择器上。任务有自动验证器时,即 第 28 章 的单元测试、答案检查器与证明检查器,选择是免费的:对每个样本跑一遍验证器,留下通过的那个。覆盖率直接转化为准确率,这就是重复采样在代码与形式化数学上回报最高的原因。没有自动验证器时,就只能退回到一个启发式选择器,对答案做多数投票,或用一个学习到的奖励模型(一个训练来给答案打分、评估其好坏的模型)给每个样本打分。它们能有效到一定程度,然后趋于平台:Brown 等报告,即便覆盖率仍在上升,多数投票与奖励模型在数百个样本之后就不再扩展,因为选择器分不清那个罕见的正确答案与众多自信的错误答案 (Brown et al. 2024)。后续分析都系于这一道鸿沟:一个正确答案存在,与一个系统能找到它,是两回事。图 30.2 展示这道鸿沟:覆盖率随 kk 平滑上升,验证器几乎把它全部兑现,而启发式选择器早期跟着覆盖率走,随后在远低于它的地方趋于平台。

2026-06-23T21:05:49.735837 image/svg+xml Matplotlib v3.11.0, https://matplotlib.org/ 1 0 0 1 0 1 1 0 2 1 0 3 1 0 4 每提示样本数 k(对数刻度) 0.0 0.2 0.4 0.6 0.8 1.0 被解出的提示比例 选择器差距 覆盖率(任一样本正确) 带验证器的准确率 多数投票 / 奖励模型准确率
图 30.2. 并行测试时扩展中覆盖率不是准确率这道鸿沟的示意图。覆盖率随样本数 平滑上升、趋向一个上限;验证器几乎一对一地把它转化为准确率,而启发式选择器(多数投票或奖励模型)在数百个样本之后趋于平台、远低于上限。理想化曲线,依据 Brown et al. (2024)。

把算力花在核查上

如果选择器是瓶颈,问题就变成了:该投入多少算力去核查,而非生成。这一切之所以划算,靠的是一种不对称:对许多任务而言,判定一个候选是否正确,比把它生成出来成本更低、也更可靠,于是验证器不必与生成器同样强,就能派上用场。生成式验证器把这一想法再推一步。生成式奖励模型(GenRM)不用一个冻结的标量头,而是用与生成器相同的下一词元目标来训练验证器,在核查与生成上联合训练,于是验证器能就一个候选写出一段链式思维,甚至能通过对多次这样的判断投票来使用自己的测试时算力 (Zhang et al. 2024)。选择器于是成了第二个推理者,而非一个固定的分数。

这种不对称带来两种方向相反的部署。一个低成本验证器可以为一个昂贵的生成器把关,在付出更多样本或更长链的代价之前,先把明显错误的候选驳回。而一个强验证器可以把一个较弱的生成器提升到它自己所能选出的水平之上,这正是 第 55 章 中弱到强问题在推断时的那一面。成本最低的验证器,则是模型自身。Self-Refine 用单个模型、无需额外训练,循环地生成、批判、修订 (Madaan et al. 2023)。Reflexion 把一个失败信号转成一段自然语言的反思,存入一段情景记忆并重试,在编程任务上报告了大幅增益 (Shinn et al. 2023)。Self-RAG 训练模型产出反思词元,由它来决定何时检索、以及自己的输出是否被支撑 (Asai et al. 2023)。

要害在于,一次自我核查的好坏,只取决于其背后的信号。Huang 等人发现,内在自我纠错,即在没有任何外部反馈的情况下凭模型自己的判断去修订,在推理上是失败的,还可能降低准确率,因为一个自信到敢断言错误答案的模型,通常也自信到会在再看一眼时把它放行 (Huang et al. 2024)。那些奏效的自我纠错方法,都把一个真实的信号引入回路:一个单元测试、一次检索、一个工具结果、一个对照真值核查的验证器。这是 第 28 章 在推断时的回响,那里可核查的奖励胜过了习得的代理,而这也正是 第 41 章 的智能体回路所投入工程之处。

从方法到一个算力轴

这些方法比这个范式更老。自一致性(self-consistency),即采样若干条链、对最终答案做多数投票,就是带多数选择器的并行扩展,早于推理模型时代 (Wang et al. 2022)。针对奖励模型的 best-of-nn 是带学习选择器的并行扩展。过程奖励模型(PRM)(过程奖励模型)在 "Let's Verify Step by Step" 中训练,并在 第 28 章 中用作稠密验证器,正是它让针对部分链的验证器引导搜索得以奏效:它给步骤而非仅给最终答案打分,使搜索能尽早剪枝 (Lightman et al. 2023)。2024 年改变的是框架:这些不再是孤立的方法,而成了一个自带扩展律的算力轴。

Brown 等确立了并行的律:覆盖率是样本数的一条平滑、可预测的函数,而它的回报尖锐地取决于是否存在验证器 (Brown et al. 2024)。Snell 等提出了分配问题。给定一个固定的测试时预算,又该如何切分它,是更多并行样本、更多串行修订,还是更深的验证器搜索 (Snell et al. 2024)。

按难度调度预算

Snell 等表明答案取决于问题难度。容易的问题受益于对一个已经不错的首猜做串行精修;难的问题受益于更宽的并行搜索。按难度调度预算,即他们的计算最优策略,在效率上以四倍以上胜过 best-of-nn 基线,而在小模型已有立足之地的问题上,一个 FLOPs 对齐、带额外测试时算力的小模型,胜过了一个大约十四倍大的模型 (Snell et al. 2024)。这就是下层约束的定量版本:推断算力替代参数。图 30.3 描出预算如何按难度调度。

B 固定的测试时预算 D 估计的问题难度 B->D SEQ 对不错首猜的串行精修 D->SEQ 容易 PAR 更宽的并行搜索 D->PAR 困难 ZERO 零覆盖率: 怎么花都没用 D->ZERO 够不着 WIN 计算最优以四倍以上胜过 best-of-n SEQ->WIN PAR->WIN UP 只有更强的模型或更好的训练才管用 ZERO->UP SUB 小模型加算力追平十四倍大的模型 WIN->SUB
图 30.3. 计算最优的分配按估计的问题难度调度一个固定的测试时预算。容易的问题把它花在对一个不错首猜的串行精修上,难的问题花在更宽的并行搜索上,而小模型从来解不出的问题无论怎么花都返回零覆盖率。依据 Snell et al., 2024。

Snell 等人在论文里当作建议提出的做法,到 2025 年 8 月已经成为实际的服务架构:GPT-5 由一个快速模型、一个思考模型和一个逐请求的路由器组成,由路由器决定用哪一个,API 里还暴露出推理力度(reasoning effort)档位;Anthropic 与 Google 也让调用方按请求设定思考预算 (OpenAI 2025)。

更少数据,更多推断

s1 与 LIMO 的结果进一步明确了另一条线索。s1 仅在约一千条精心挑选的推理轨迹上做监督微调,再于测试时以预算强制扩展,便达到了强劲的竞赛数学表现 (Muennighoff et al. 2025)。LIMO 用几百个样本把这一少即是多的主张说得更明白:当一个基座模型已在预训练中编码了知识,一小批高质量示范就足以唤出推理,主要成本随之转到推断阶段 (Ye et al. 2025)。两者都指向同一个方向:能力或许早已潜伏在权重里,而测试时算力是把它唤出来的方式。这与 第 28 章 中关于 RL 是教出新推理还是唤出已有之物的争议相连,此处是从推断一侧来看的。

争议所在

测试时算力能持续划算到多远,受限于那个做选择或引导之物的质量,而这个界限不是附带细节。有一个完美验证器时,更多样本永远无害:覆盖率单调上升,选择是免费的,于是曲线只会接近上限。有一个不完美验证器或一个启发式选择器时,曲线可能停止改善,甚至下降。更多样本给了选择器更多自信却错误的候选,于是出现一种针对选择器做优化的效应,它正是 第 19 章奖励欺骗(reward hacking)的推断时对应物:针对一个有缺陷奖励模型的 best-of-nn,会挑出那个满足模型而非解出问题的样本,越过某个 nn 之后,期望质量反而下降。Brown 等看到多数投票与奖励模型选择在数百个样本之后趋于平台,而覆盖率仍在上升,这是同一道鸿沟从另一侧看:答案就在集合里,而选择器找不到它 (Brown et al. 2024)。所以这个主张是有条件的。在验证既低成本又可靠之处,测试时算力扩展得很干净,而验证器越可靠,曲线划算得越久。在并非如此之处,扩展受选择器质量所限,更多算力并不是免费的改善。图 30.4 展示了两种区间:完美验证器单调上升,而不完美验证器先达峰、随后下降,因为更大的 nn 给选择器提供了更多自信却错误的候选。

2026-06-21T23:29:55.034704 image/svg+xml Matplotlib v3.11.0, https://matplotlib.org/ 1 0 0 1 0 1 1 0 2 1 0 3 每提示候选数 n(对数刻度) 0.0 0.2 0.4 0.6 0.8 1.0 所选答案的期望质量 最优 n 之后 质量开始下降 完美验证器 不完美验证器
图 30.4. 针对不同质量验证器的 best-of- 示意图。完美验证器单调上升、趋向覆盖率上限,于是更多样本永不有害;不完美验证器在某个最优 处达峰,随后随搜索针对选择器做优化而下降,这正是奖励欺骗的推断时对应物。理想化曲线,依据 Snell et al. (2024) 与 Brown et al. (2024)。

调大 selector_bias,即被有缺陷的选择器打分高过正确样本的错误样本占比,看不完美选择器的曲线更早达峰、随后下降,而覆盖率与完美验证器永不下降。

import numpy as np
import matplotlib.pyplot as plt
rng = np.random.default_rng(0)
p, selector_bias, noise, trials, ks = 0.3, 0.05, 0.4, 4000, range(1, 65)
cov, heuristic = [], []
for k in ks:
    correct = rng.random((trials, k)) < p                 # 哪些样本是对的
    confident_wrong = (~correct) & (rng.random((trials, k)) < selector_bias)
    base = np.where(confident_wrong, 1.5, np.where(correct, 1.0, 0.0))
    score = base + rng.normal(0, noise, (trials, k))      # 选择器分数,带噪声
    cov.append(np.mean(correct.any(axis=1)))              # 存在一个正确答案
    picked = score.argmax(axis=1)                          # 选择器留下分数最高的
    heuristic.append(np.mean(correct[np.arange(trials), picked]))
plt.plot(list(ks), cov, label="覆盖率 / 完美验证器")
plt.plot(list(ks), heuristic, label=f"不完美选择器(偏置={selector_bias})")
plt.xlabel("样本数 k"); plt.ylabel("准确率"); plt.legend(); plt.show()
print("最佳启发式 k:", list(ks)[int(np.argmax(heuristic))])

一组平衡及其转折点

这个范式是一组平衡,每个都有一个转折点。

  • 并行与串行。 并行采样高度并发,对延迟也友好,可以一次解码 kk 个样本,但它需要一个选择器,并在冗余的近重复样本上浪费算力。串行修订在首猜已接近的问题上更高效地使用算力,但它本质上是串行的,要付全额延迟。Snell 等表明正确的配比依赖难度,而非一个常数 (Snell et al. 2024)。
  • 覆盖率与选择。 更多样本总能提高覆盖率,但实现的准确率被选择器限制。有验证器时,上限是覆盖率上限;没有时,上限是多数投票或奖励模型趋于平台之处。越过那个点再花,就没有收益。
  • 测试时算力与模型规模。 额外推断能在难尾上替代参数,把成本从一笔固定的训练加服务资产,转为一个按问题计的变量。但这种替代有其区间:当小模型已有非零覆盖率时它奏效,而在小模型无论尝试多少次都解不出的问题上它失败,那里只有更强的模型或更好的训练才有效。
  • 数据效率与算力。 s1 与 LIMO 用训练数据换测试时算力,以一个极小的 SFT 集加上推断扩展,唤出潜伏的能力 (Muennighoff et al. 2025; Ye et al. 2025)。这一赌注只在基座模型已编码该领域时成立;面对真正全新的能力,没有什么潜伏之物可唤出。
  • 延迟与成本对准确率。 这里的每种方法都成倍放大每问题的算力,对串行方法还放大延迟。产品上的决策是哪些问题值得这笔开销,而这正是计算最优分配所形式化的东西。
下层约束

这个论证向下触及 第 31 章,又向上回到 第 5 章。测试时扩展只有在服务层能低成本交付许多样本或长链时才说得通,所以 第 32 章第 33 章 的批处理、KV 缓存与解码速度,设定了一个样本的真实价格,而这个价格决定了计算最优分配在哪里停下。它也回应了 第 5 章 中开启的回路:那里的过度训练论证说训练算力替代服务成本,而这里的主张是推理算力替代参数。两者合起来说:模型规模是由训练预算、服务成本,以及打算在推断时投入多少推理算力共同设定的,而非由其中任何单独一个。

过度思考作为生产故障

推理预算还有第二个转折点:过了某处,更多思考会伤害质量,或只是烧掉服务预算。Ghosal 等人报告了推理模型中的非单调模式:额外思考一开始提升准确率,随后又降低它,因此需要并行思考和自适应停止,而不是无上限地延长链条 (Ghosal et al. 2025)。这与推理模型的产品体验相符:困难提示值得一条长轨迹;简单提示若触发同样的轨迹,就是浪费。

这种浪费如今也是攻击面。OverThink 表明,注入到检索内容中的诱饵推理题,可以让推理模型花费多得多的推理词元,同时仍给出上下文上正确的答案,并在闭源与开源推理模型上报告了很大的减速 (Kumar et al. 2025)。Excessive Reasoning Attack 则构造会推迟终止、触发额外推理路径的输入,在保持任务效用的同时,把推理长度提高数倍 (Si et al. 2025)。这些攻击不必让最终答案变错。它们让系统变得太贵或太慢。

2026-06-23T05:39:05.487745 image/svg+xml Matplotlib v3.11.0, https://matplotlib.org/ 1 0 0 1 0 1 1 0 2 1 0 3 推理词元 0.0 0.2 0.4 0.6 0.8 1.0 准确率 有效思考窗口 过度思考区 0.0 0.2 0.4 0.6 0.8 1.0 成本 / 延迟
图 30.5. 有用思考窗口的示意图。准确率随最初一段推理词元上升,随后平台化或下降,而成本与延迟持续上升。过度思考攻击把提示推到窗口右侧。
图 30.6. 自适应测试时算力预算。移动难度滑块,可以看到路由器在简单提示上少花预算,在有用思考窗口里多花预算,并在预期准确率不再抵得过成本与延迟时停止。图中关系为合成示意,非实测。

运维上的回应,是把推理词元当作一项可计量、可路由的工作。按任务类型设默认 effort,这个旋钮如今由各家厂商以推理力度档位与思考预算的形式直接暴露出来。先估计难度,再花完整预算。验证器足够有把握时提前停止。即便模型想继续,也要给串行思考设上限。把可疑检索内容先送过廉价过滤器,再进入慢速推理模型。把隐藏思考成本与输出词元分开记录,让过度思考出现在可观测性里,而不是只出现在云账单上。简洁与自适应思考文献已经把这视为独立设计问题:推理模型需要学会何时少想,而不只是如何想得更久 (Zhu and Li 2025)。

把它建起来

运维内核很小。一个并行扩展器是一个采样循环加一个选择器:在足够高、能保证多样性的温度下抽取 kk 个补全,然后或者跑验证器、留下一个通过的,或者做多数投票,或者用奖励模型打分、取最好的。验证器这条路是能扩展的那条,所以工程精力自然会流向 第 28 章 讨论过的那件事:把检查器做得可靠而覆盖更广。一个串行扩展器是一次受控解码:检测模型何时试图停下,并决定是否让它停,即预算强制的介入,压制停止词元、注入一个续写提示以延伸,或强制给出最终答案以限制开销。

# 并行扩展:覆盖率是免费的,难处在于选择。
def best_of_k(prompt, k, select):
    samples = [model.sample(prompt, temperature=0.8) for _ in range(k)]
    return select(samples)  # 验证器 > 奖励模型 > 多数投票

失效模式由设计推出。用一个不完美验证器做选择是核心问题:更多样本给了一个有缺陷的选择器更多机会去挑一个自信的错误答案,即争议框中点名的推断时奖励欺骗,于是曲线变平或下陷,更多算力成了被浪费的算力。无选择器的覆盖率是相关的陷阱:正确答案可证地就在集合里,系统却仍返回一个错误的,这看起来像模型失败,实则是选择失败。串行的过度思考是第三个:把预算强制推过有用的点,会让模型把一个正确答案二次猜成错的,所以被强制的预算本身也有一个转折点。而在覆盖率为零的问题上,替代会悄无声息地失败,因为无论多少测试时算力都帮不上忙,没有一个样本曾经正确,唯一的修正方法在上游的模型里。

选择器是这些线索交汇的地方。测试时扩展是一种能力手段,它无需重训就把一个冻结的模型在难尾上变得更强。它也是一种效率手段,把成本从固定资产转到那些值得它的问题上,受上面的服务价格所约束。它同时是一项信任风险,因为它的全部回报都取决于选择器,一个不被信任的选择器,会把更多算力转化为更自信的错误答案。在 第 28 章 中约束训练回路的验证器质量,在这里也约束着推断回路:使 RL 安全的那同一个基准真值,正是使测试时扩展划算的东西。

延伸阅读

  • Brown et al., “Large Language Monkeys: Scaling Inference Compute with Repeated Sampling,” 2024. arXiv:2407.21787
    本文证明对大语言模型反复采样可使覆盖率在四个数量级上呈对数线性扩展,使较弱模型在编程和形式化证明基准上超越单次采样的最优水平。
  • Snell et al., “Scaling LLM Test-Time Compute Optimally can be More Effective than Scaling Model Parameters,” 2024. arXiv:2408.03314
    本文表明,依据提示难度自适应分配测试时计算(计算最优策略)可超越参数量大 14 倍的预训练模型,相比 best-of-N 采样效率提升逾 4 倍。
  • Muennighoff et al., “s1: Simple test-time scaling,” 2025. arXiv:2501.19393
    s1 通过在 1,000 条精选推理样本上进行监督微调并引入预算强制技术,使 s1-32B 在竞赛数学上超越 o1-preview,实现测试时扩展。
  • Ye et al., “LIMO: Less is More for Reasoning,” 2025. arXiv:2502.03387
    LIMO 表明,对 Qwen2.5-32B-Instruct 仅用 800 条精选样本进行监督微调即可激发强数学推理能力,在 AIME24 上达到 63.3
  • Wang et al., “Self-Consistency Improves Chain of Thought Reasoning in Language Models,” 2022. arXiv:2203.11171
  • Lightman et al., “Let's Verify Step by Step” (process reward models for verifier-guided search), 2023. arXiv:2305.20050
    本文证明过程奖励模型(PRM)在 MATH 数据集上显著优于结果监督方法,并发布了包含 80 万条步骤级人类反馈标注的 PRM800K 数据集。
  • Kumar et al., “OverThink: Slowdown Attacks on Reasoning LLMs,” 2025. arXiv:2502.02542
    OverThink 表明,检索内容中的诱饵推理题能让推理模型消耗更多思考词元,同时仍给出上下文上正确的答案。
  • Si et al., “Excessive Reasoning Attack on Reasoning LLMs,” 2025. arXiv:2506.14374
    本文构造能触发过度推理与延迟终止的输入,使推理模型在保持任务效用的同时,将推理长度提高数倍。
  • Ghosal et al., “Does Thinking More always Help? Understanding Test-Time Scaling in Reasoning Models,” 2025. arXiv:2506.04210
    本文报告测试时思考长度呈非单调曲线:额外思考先有帮助,随后伤害表现,因而需要并行思考与自适应预算分配。
  • Zhu & Li, “Towards Concise and Adaptive Thinking in Large Reasoning Models: A Survey,” 2025. arXiv:2507.09662
    本文综述推理模型中简洁与自适应思考的方法、基准与开放问题,聚焦不必要长链带来的推断成本。
  • OpenAI, “Introducing GPT-5” (a per-request router between fast and thinking models; reasoning-effort levels in the API), 2025. openai.com

评论

登录后评论