期末考场里,小林同学已经完成了所有复习——他的知识储备固定了,就像大模型的参数已经训练完毕。但考试开始后,决定分数的除了知识本身,还有考场策略:他在草稿纸上反复推演,遇到难题就多试几种解法,做完后逐题检查验算,简单题快速掠过,把省下的时间全砸在压轴题上。同一个学生,同样的知识,仅仅因为“考场上多花了心思”,就拿到更高的分数。这正是测试时扩展(Test-Time Scaling)的本质:模型的参数一动不动,推理阶段多花算力——多生成一些思考步骤、多采样几个候选答案、用验证器反复斟酌——从而显著提升最终输出质量。以 o1/o3 为代表的推理模型,正是把这种“考场发挥”变成了基础设施。它与“考前复习”式的训练时扩展相互补充,构成能力提升的双引擎。
掌握测试时扩展,AI 工程师无需重训模型就能让推理表现上一个台阶,是部署推理模型时提精度、控成本、管延迟的关键杠杆。
目录
可视化演示
展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。
本节配有交互动效(进入视口后自动加载,约 3KB)。
系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T
基本概念:考场加时赛
小林的知识在考前已经定型——他不可能在考场上掏出新课本再学一章。但他可以让监考老师“多给一点时间”,把每道题想得更透、验得更细。测试时扩展(Test-Time Scaling)就是这个思路:模型参数完全冻结,不在训练阶段做任何更新,而是在推理阶段额外投入算力——生成更长的思考内容、尝试更多候选答案、做更深的探索验证——从而提高最终输出的正确率。o1/o3 这类推理模型正是把“考试加时”做成了标准配置:遇到简单问题快速作答,遇到难题自动展开长长的思维链。
为什么“多想想”能提升成绩?关键在于概率的叠加。假设模型解一道题的单次正确率是 p,就像小林一种解法做对的概率是 35%。如果给他 N 次独立尝试的机会,只要有一次成功,这道题就算拿下了。于是“至少一个正确”的概率随 N 快速攀升:
回到考场:小林知识没变,但多试几次、多验几遍,压轴题的命中率就从三成多涨到接近九成。“参数冻结、算力加码”,这就是测试时扩展的第一性原理——不换脑子,靠更刻苦的临场发挥。
- 单次成功率 p模型每采样一次,直接给出正确答案的概率,它由模型本身的能力决定,测试时扩展改变不了这个底数,只能在“次数”上做文章。
- 全部失败的概率每次采样相互独立,所以 N 次全部失败的联合概率等于单次失败率连乘 N 次。
- 至少一次成功总数 1 减去全军覆没的概率,就是 N 次尝试中最少蒙对一次的概率,这正是 best-of-N 策略的核心保证。
工作原理:草稿纸越用越多
小林拿到一道几何证明题,不会只盯着题干发呆。他会画辅助线、列已知条件、写几行思路再推翻重来——这些过程不直接写进最终答案,却是解题必不可少的“额外劳动”。推理模型也一样:真正的答案通常很简短,但模型在输出它之前,会先在内部生成一大段“思维链”,一步步推演、验证、纠错。这些多出来的 token 就像草稿纸上的演算过程,是测试时扩展最直观的算力开销。
这种“额外劳动”可以沿两个方向铺开。第一是纵向:思维链越长,单条路径上的推理就越充分,相当于一道题从头到尾思考得更深。第二是横向:同一道题可以分开多条路径并行探索,每条路径是一个独立的采样,相当于小林同时想了三种解法。把横纵两个方向结合起来,就形成了一棵搜索树——每个节点代表推理中的一个状态,从根节点出发不断分出新的分支:
草稿纸越堆越厚,叶子越来越多。但注意,小林翻来覆去用的都是同一本教材里的知识——模型参数没有任何变化。测试时扩展所做的,只是把同一个参数的模型“多跑几遍”,用算力把候选空间铺开,再从中挑出最好的答卷。
- 分支因子 b推理树上,一个节点能展开出的子节点数量,对应“这一步做法下还有几种可选接法”。
- 搜索深度 d从根节点到叶子的展开步数,对应思维链中“思考了多少轮”。
- 叶子节点数 L深度为 d、分支因子为 b 的搜索树,叶子数是 b 的 d 次方。深度每加 1,候选路径就翻 b 倍——这就是算力投入后候选空间“指数膨胀”的数学模型。
采样策略:一题多解,择优而抄
草稿纸多了,怎么组织解题思路?小林有个习惯:简单题用一种方法做完就交;稍微复杂的题,他会换两三种方法各做一遍,如果几种做法得到同一个答案,他就特别放心。这种“一题多解、答案收敛即可信”的策略,对应着测试时扩展中最常用的采样方法。
要让模型产出“多种解法”,关键是采样温度(temperature):温度越高,模型每一步选词时越不“死板”,思路越发散,输出越多样;温度越低,输出越保守、越接近训练分布中最可能的答案。实践中常把温度设为 0.6 到 1.0 来获得多样候选。拿到 N 个候选后怎么定稿?两条主流路线:其一是 best-of-N,用一个验证器给候选打分挑最高分;其二是自一致性(self-consistency),不需要外部验证器,直接把答案做多数投票——众口一词的那个答案最可信:
小学数学题不同解法必然殊途同归,推理题也一样:多条独立路径收敛到同一答案,比对单一答案更有把握。这就是为什么自一致性在数学、代码等“答案可验证”的任务上效果拔群——多问几个“自己”,答案一致的版本往往就是对的。
- 候选答案集合采样 N 次得到 N 个最终答案,形成集合 Y。注意中间推理路径可以完全不同,只要最终答案一致就算同类。
- 指示函数当第 i 个候选答案 y_i 与某个答案 y 完全一致时计数 1,否则计数 0,用来数“全场有多少份答案支持 y”。
- 取票数最高者遍历所有出现过的答案,把总票数最高的那个作为最终输出,这就是自一致性多数投票的核心。
验证机制:谁来批改草稿
草稿可以写一大堆,但最终交卷前总得有人判断哪个版本是对的。小林是自己当阅卷老师,而模型需要专门的“阅卷老师”——奖励模型或验证器(verifier)。验证器给每个候选答案打分,分数代表“这份答案可信度多高”,然后从中选出最高分。这个打分有粗细两种粒度。结果验证(outcome reward model, ORM)只看最终答案:答案对了给满分,错了给零分,像只批改卷面结果的老师;过程验证(process reward model, PRM)则逐步批改推理过程,每一步都给出得分,像批注“这一步推导有问题”的严格老师。
过程验证在难题上尤其有价值:它能定位到具体哪一步开始出错,从而引导搜索绕开错误分支重来,而不是整条路径推倒。验证器引导的搜索可以形式化为:在所有候选路径中,选择验证器打分最高的那条作为最终输出:
没有阅卷老师的考场,写满草稿也只是废纸;没有验证器的采样,N 份候选就只能盲选。验证器质量直接决定测试时扩展的天花板——这也是为什么 o1 系列花了大量篇幅训练过程奖励模型,让“阅卷标准”本身更可靠。
- 候选池模型针对问题 x 采样生成一批候选答案,这是搜索和择优的原材料。
- 验证器打分验证器 V 接收问题和候选答案,输出一个质量分;得分高意味着答案与正确解更接近、推理过程更扎实。
- 取最高分在候选池里找分数最高的答案作为最终输出——“择优”不是随机的,而是有标准地选。
算力调控:难题多花时间,易题快进快出
考试时间总共就那么多,聪明的考生绝不会每道题都平均用力。小林的原则很简单:一眼会做的题 30 秒拿下,中等题留出验算时间,压轴题不惜耗掉最后 20 分钟。测试时扩展同样面临“考试总时长”约束——推理预算(compute budget)。如果对每个问题都无脑采样 32 份,算力和延迟都会爆表,就像小林对判断题也写满两页草稿一样愚蠢。
工程上的主流做法是难度自适应的预算分配:先让模型快速试答并给出一个置信度信号,如果很简单就直接输出;如果信号显示题目有挑战,就把采样数、搜索深度都调上去。这种“按需分配”让同样的总预算产生更高的平均正确率。另一个必须正视的现象是边际收益递减:你从 1 份加到 2 份采样时,正确率涨得很快;但当你已经采样了 30 份,再加 1 份几乎不带来任何提升:
时间管理大师从不恋战:当边际收益跌破阈值,就该停止本轮采样,把算力省给下一道难题。测试时扩展的工程精髓,就是在这条递减曲线上找到“性价比最优”的停手点。
- 边际收益从 N 份采样增加到 N+1 份时,最终正确率的增量,衡量“多花一份推理钱买了多少正确率”。
- 幂律衰减该增量正比于 N^{-α},N 越大增量越小,说明收益单调递减有上限。
- 收敛上限当 N 趋近无穷时,正确率逼近某个上限 A_max——这个上限由模型本身的单次能力 p 和验证器质量决定,再多采样也突破不了。
训练扩展对比:复习与发挥的双引擎
如果考场发挥这么有用,是不是可以完全不复习?当然不行。小林必须承认:考场上再怎么能想,也解不出他压根没学过的微积分大题。训练时扩展和测试时扩展分别回答了“能力从哪来”和“能力怎么用”两个问题。训练时扩展(training-time scaling)指的是增大训练数据、模型参数、训练算力——这是考前漫长的复习,决定了学生知识的绝对上限;测试时扩展则是考场上把已有知识发挥到极致——它无法创造新知识,但能逼近模型能力的天花板。
两者不是替代关系,而是互补的“双引擎”。一个著名的研究结论是:在总算力预算固定的前提下,小模型配合大量测试时算力,可以在某些任务上追平大模型的中等推理表现——这相当于“复习时间不太够,但临场发挥极其出色”的学生也能考出不错的成绩。能力的大致规律可以看作两类算力的对数线性叠加:
模型太弱,再长的思维链也是空转;模型够强却不给推理时间,潜能就被浪费。真正高效的团队把训练时扩展和测试时扩展当成一个组合拳:前一个学期拼命复习,考试周再制定精细的答题策略,双引擎一起点火。
- 训练算力训练阶段投入的算力总和,包括数据量、参数量、训练步数,它决定模型知识的绝对高度。
- 测试算力推理阶段额外投入的算力,包括采样份数、搜索深度、验证次数,它决定知识被调用得是否充分。
- 对数叠加得分与两类算力的对数近似线性相关。对数意味着收益递减;代价是“两边的钱都得花”,最优策略是在总预算约束下找一个最佳分配比,而不是单押一边。
前沿挑战:三条新跑道
考场规则在升级,小林的好办法也得跟着进化。当前测试时扩展的前沿攻关集中在三条跑道上。第一条是推理效率:思维链越长,token 消耗越大,延迟越高。研究者用思维链蒸馏(把长推理的“思考成果”压进短输出)、令牌预算压缩(允许模型自由决定想多长)、并行采样加速等手段,试图让“想得久”变得更快更便宜。衡量这些手段是否有效的关键指标,是“每多花一份算力换来多少正确率提升”:
第二条跑道是多模态融合:模型不再只“看题做题”,而是要在图文混排、图表推理、视频理解中复用测试时扩展——比如让模型对一张医学影像生成多条诊断思路再投票,验证器同时检查文字与视觉特征。第三条跑道是安全对齐:验证器本身可能被欺骗(所谓 reward hacking),模型可能生成看似高分实则有害的答案;把安全准则织进采样与验证流程,就像考场新增了反作弊系统,防止“发挥”变成“发挥过头”。这三条跑道决定了测试时扩展能否从实验室走向真实世界的每个考场。
- 能力增量采样数从 N1 增加到 N2 后,任务正确率的实际提升,是“收益”。
- 成本增量为此多付出的推理开销,以 token 消耗、GPU 时长或费用来衡量,是“代价”。
- 效率比两者相除得到单位算力的平均收益,前沿工作都在追求把这个比值做大——推理效率提升的本质就是花同样的钱买到更多正确率。
实战选型:不同考场的应考策略
同样是考试,高考、数竞、面试的答法完全不同。测试时扩展上线也要“看考场下菜碟”。精度优先的场景,比如数学定理证明、代码竞赛题、科研文献分析,答案错误代价极高,适合“重策略”:采样 16 到 32 份候选,配上强验证器(如代码题用单元测试自动判分),把单题正确率顶到极限。这类场景不怕慢,怕错。
时延敏感的场景,比如智能客服、实时翻译、语音助手,用户等不了三秒钟,只能走“轻策略”:采样 3 到 5 份做自一致性投票,或只用验证器提前终止低分路径,在 1 秒内给出答案。成本敏感的场景则介于两者之间,关键是先算清账。一次测试时扩展的推理成本可以这样估算:
老师傅进场前会先摸清考情:这份卷子是难是易,批卷标准是松是严,时间够不够。工程选型同理——适配场景的测试时扩展才叫能力增强,盲目堆采样只会把预算烧成烟花。
- 单份成本生成一份候选答案要消耗 t 个 token,乘以每 token 的调用单价 s,就是这份答案的“草稿纸价”。
- 总成本再乘上采样份数 N,就得到整个测试时扩展流程的推理成本——N 每翻一倍,账单就翻一倍。
- 三角权衡精度、时延、成本构成一个不可能三角:采样越多精度越高但越慢越贵;压缩思考链降低成本但可能牺牲难题成绩。选型就是在三角里找平衡点。
AI 应用场景
数学与代码竞赛平台的自动解题
阶段:在线推理优化与效果调优
解决的问题:传统做法是训练完模型直接部署,遇到 LeetCode 困难题或数学竞赛题,模型一次生成的答案往往只有三四成正确率。重新训练模型成本高、周期长,且未必能解决特定难题。
具体案例:某刷题平台接入推理模型后,对困难题采用 best-of-N 策略:一次采样 16 份解题思路,用单元测试作为验证器自动跑分,只提交通过全部用例的那份答案。结果困难题通过率从 32% 提升到 78%,而模型参数从未改动——全靠“多试几份草稿,让编译器当阅卷老师”。这种方式本质上就是测试时扩展在代码场景的落地。
智能客服的高可靠问答
阶段:在线推理部署与延迟控制
解决的问题:客服问答要求低延迟(2 秒内响应),但又不能容忍答非所问。单次采样在复杂业务问题上不稳定,多次采样又怕超时。
具体案例:某银行智能客服对高频简单问题直接单次输出;对涉及多条件判断的复杂查询,采样 5 份答案做自一致性多数投票,并设定 token 预算上限,超预算立刻降级为单次输出。上线后复杂问题准确率提升 21%,平均响应时间只增加 0.6 秒——这正是“按难度分配考试时间”的实战版本。
内容安全审核的防线加固
阶段:安全对齐与生成后校验
解决的问题:大模型可能在长思维链中被诱导输出有害内容,单一验证器也可能被对抗样本绕过,传统关键词过滤防不住语义级别的违规。
具体案例:某社交平台在内容生成管线中引入双层验证:先采样多条回复,再用专门训练的安全奖励模型逐条打分,只有分数达标且通过敏感话题规则校验的回复才会发出;同时随机抽查“高分回复”做人工复核,防止奖励黑客。测试时扩展在这里的价值不是提高正确率,而是用多次采样+验证器把“擦边答案”拦截在发布之前。
Python 演示
import mathimport random def best_of_n_theory(p, n): """best-of-N 理论成功率:至少一个样本正确。""" return 1 - (1 - p) ** n def majority_vote_theory(p, n): """多数投票理论成功率:超过半数样本正确。""" if n % 2 == 0: n = n + 1 half = n // 2 + 1 return sum( math.comb(n, k) * (p ** k) * ((1 - p) ** (n - k)) for k in range(half, n + 1) ) def simulate_best_of_n(p, n, trials=3000): """模拟采样:n 个候选里至少一个正确则成功。""" hit = 0 for _ in range(trials): if any(random.random() < p for _ in range(n)): hit += 1 return hit / trials def simulate_majority_vote(p, n, trials=3000): """模拟多数投票:正确候选占多数才算成功。""" if n % 2 == 0: n = n + 1 hit = 0 for _ in range(trials): votes = sum((random.random() < p) for _ in range(n)) if votes * 2 > n: hit += 1 return hit / trials def main(): p = 0.35 print("单次采样正确率 p =", p) print("--- best-of-N ---") for n in (1, 2, 4, 8, 16): sim = simulate_best_of_n(p, n) theory = best_of_n_theory(p, n) print(f"n={n:2d} 模拟={sim:.3f} 理论={theory:.3f}") print("--- 多数投票 ---") for n in (9, 15): sim = simulate_majority_vote(p, n) theory = majority_vote_theory(p, n) print(f"n={n:2d} 模拟={sim:.3f} 理论={theory:.3f}") if __name__ == "__main__": main()
return 1 - (1 - p) ** n对应正文核心公式:至少一个样本正确的概率。math.comb(n, k) * (p ** k) * ((1 - p) ** (n - k))二项分布公式,计算 n 份采样中恰好 k 份正确的概率,是多数投票理论值的基石。if any(random.random() < p for _ in range(n))模拟一次 best-of-N:n 份候选里只要有一份正确答案就算成功。if votes * 2 > n严格过半数才判定多数投票成功,对应“众口一词才可信”的策略。p = 0.35单次正确率故意设得偏低,因为测试时扩展在“模型本身不太行”时收益最明显。
常见误区
误区测试时扩展不就是把同一个问题丢给模型多生成几遍,然后随便选一个答案吗?反正生成多了总有好答案。
正解多采样只是把草稿纸写满了,真正提分的是“择优机制”——要么用验证器逐份打分选最高分,要么用自一致性做多数投票。如果没有择优标准,随机挑一份的期望正确率依然是 p,采样再多也只是把正确候选混在一堆错误答案里。没有阅卷老师的考场,再多的草稿也只是废纸。
为何常见:人们看到 o1“想得更久更准”的表面现象,误以为“想得久”本身就能提分,忽略了背后验证与选择这一决定性环节。
误区测试时扩展不需要更新参数,省下了训练费,应该很便宜,可以放心大胆地用。
正解训练成本省了,但推理成本会暴涨:采样 N 份候选,token 消耗就是原来的 N 倍以上,搜索式推理甚至是指数级;延迟也随之上升。对高并发线上服务,算力账单和响应时间往往比训练费更敏感。加时赛虽然不用重新备课,但教室租金、监考费一分不少。
为何常见:'不用训练'被下意识理解成'不用花钱',忽略了推理阶段每一次前向计算都是真金白银的电费和 API 调用费。
误区既然成功率公式显示 N 越大成功率越高,那就把采样数拉满,反正多采样总没坏处。
正解成功率确实随 N 上升,但边际收益递减——从 30 份加到 31 份的提升微乎其微,而成本是线性增长的。更糟的是,过多的低质量候选可能干扰多数投票的结果。工程上的正确姿势是自适应预算:简单题少采样,难题多采样,边际收益跌破阈值就果断停止。
为何常见:论文里展示的“更多思考=更强”让人形成多多益善的直觉,忽略了那是理想化曲线,真实部署还要叠加成本与延迟的刚性约束。
误区有小模型配合大量测试时算力追平大模型的案例,那以后干脆不用重训模型了,全靠推理时使劲想。
正解两者互补而非替代。训练定的是能力上限,测试时扩展只是逼近这个上限。模型如果压根没学过相关知识,给再多思维链也答不出来——零基础考生在考场上再会'使劲想'也解不出微积分。小模型追平大模型的结论都有前提:模型在该任务上已有充分训练,测试时扩展只是把剩余潜能榨出来。
为何常见:只记住了“测试时算力能救场”的结论,忽略了实验设置中的训练充分性前提,误把应急手段当成万能药。
面试题
Q1. 测试时扩展最核心的特征是什么?
- A.更新模型参数提升能力
- B.不更新参数只增推理算力← 正确答案
- C.增加训练数据集的规模
- D.更换更大的基础模型
答案:B。测试时扩展的鲜明特征是“参数冻结”,只在推理阶段增加算力投入;A、C 都属于训练时扩展,D 属于换用更强模型,与测试时扩展无关。就像考场加时赛,学生知识没变,只是多花时间想题。
Q2. 某模型单次采样的正确率为 p=0.5,采用 best-of-2 策略后成功概率约为多少?
- A.0.50
- B.0.65
- C.0.75← 正确答案
- D.1.00
答案:C。代入公式 P=1-(1-p)^N=1-(0.5)^2=0.75。两次尝试中至少一次正确的概率是 75%,而不是 50% 或 100%——多试一次就把成功率从一半提到四分之三,这正是测试时扩展的威力。
Q3. 自一致性(self-consistency)方法的核心思想是什么?
- A.对答案做语法一致性检查
- B.多条推理路径最终答案多数投票← 正确答案
- C.多次调用模型但只取第一份输出
- D.用强化学习微调模型的生成策略
答案:B。自一致性是采样多条推理路径,对最终答案做多数投票,答案收敛一致的版本最可信,对应“一题多解、答案相同才放心”。A 是语法层面检查,C 没有投票聚合,D 属于训练阶段操作,都不符合定义。
Q4. 过程奖励模型(PRM)与结果奖励模型(ORM)相比,主要优势是什么?
- A.训练成本几乎为零
- B.只评估最终答案是否匹配
- C.能定位出错的具体推理步骤← 正确答案
- D.不需要使用预训练语言模型
答案:C。PRM 对推理过程的每一步打分,能定位错误发生在哪一步,从而引导搜索绕开错误分支;ORM 只看最终答案对错,像只批改卷面结果的老师。A、D 与事实不符,B 描述的正是 ORM 而非 PRM 的优势。
Q5. 当采样数 N 持续增大时,best-of-N 的成功率提升趋势是怎样的?
- A.线性无上限持续增长
- B.指数加速不断攀升
- C.边际收益递减并逼近上限← 正确答案
- D.先下降后回升再稳定
答案:C。由公式 1-(1-p)^N 可知,成功率单调上升但斜率递减,最终趋近于 1(若验证器完美)或由验证器质量决定的上限。新增样本的边际收益越来越小,所以工程上要设置预算、及时止损,而不是无脑加大 N。
Q6. 测试时扩展消耗的额外算力主要花在哪里?
- A.训练阶段的反向传播计算
- B.推理时生成更多候选与搜索← 正确答案
- C.预处理训练语料的清洗过滤
- D.部署阶段模型的量化压缩
答案:B。测试时扩展的算力开销全部发生在推理阶段:更长的思维链、多次采样、树状搜索、验证器打分。A、C 属于训练/数据侧,D 属于部署优化,都不是“测试时扩展”本身的算力去向。
Q7. 关于测试时扩展与训练时扩展的关系,正确的说法是?
- A.两者完全互斥只能二选一
- B.测试时扩展完全可以替代训练
- C.两者互补构成能力提升双引擎← 正确答案
- D.训练时扩展发生在推理阶段
答案:C。训练时扩展决定能力上限,测试时扩展通过推理算力逼近上限,两者互补,构成双引擎。A、B 夸大了测试时扩展的独立性,D 把训练时扩展的发生阶段搞错了。
Q8. 下列哪些属于测试时扩展的常见技术手段?
- A.Best-of-N 采样后验证择优← 正确答案
- B.自一致性多数投票聚合← 正确答案
- C.验证器引导的树搜索← 正确答案
- D.训练数据扩充与增广
答案:ABC。Best-of-N、自一致性投票、验证器引导搜索都发生在推理阶段且不更新参数,是测试时扩展的典型手段。D 属于训练阶段的数据增强,目的是扩大训练分布,与测试时扩展无关。
Q9. 在工程化部署中,控制测试时扩展成本的有效策略有哪些?
- A.按问题难度自适应分配预算← 正确答案
- B.简单问题直接单次输出不采样← 正确答案
- C.验证器提前终止低分路径← 正确答案
- D.无限增大采样数直到满分
答案:ABC。自适应预算把算力留给难题,简单题快速返回;验证器早停能及时掐掉烂路径。这些都符合“边际收益递减”规律。D 无视成本曲线,会让延迟和账单失控,是典型误区。
Q10. 测试时扩展在下列哪些场景中收益最明显?
- A.数学证明与代码推理← 正确答案
- B.复杂多步规划问题← 正确答案
- C.固定话术的简单问候
- D.需要反复验算的竞赛题← 正确答案
答案:ABD。数学、代码、多步规划、竞赛题都属于“答案可验证、推理链条长”的高难度任务,多采样加验证能显著提分。C 是简单生成任务,单次输出即可,额外采样只会浪费算力,收益接近于零。