测试时计算扩展 Test-Time Compute

Test-Time Compute / Test-Time Scaling (TTC)

测试时计算扩展(Test-Time Compute,TTC)是在推理时通过增加采样候选数、搜索深度或自反思轮数来换取准确率提升的第三条扩展轴,与训练时扩参数量、扩数据量并列,典型做法有 Best-of-N 采样、思维树搜索与序列化自我修订。

详细解释

测试时计算扩展(Test-Time Compute,简称 TTC,也称 Test-Time Scaling 或推理时扩展)指的是在模型训练完成之后,于推理(也叫测试)阶段通过多花算力来换取更高准确率的一类技术。它之所以被称为「第三条扩展轴」,是因为在大模型发展的前几年,提升效果主要靠两条路线:一是把训练时的模型参数量做大,二是把训练数据量做大。而 2024 年之后的研究(见 测试时计算扩展论文)与 推理模型 的实践都表明,在推理阶段多花算力——让模型多采样几条候选、多做几步搜索、多轮自我反思——也能显著提升准确率,而且在小模型上甚至比「直接换一个更大的模型」更划算。换句话说,测试时计算让「花算力换准确率」这件事不再只发生在训练阶段,而是可以在每次请求到来时按需用上。

主流技术路线可以清晰分为两类,第一类是搜索型:并行采样 N 条候选,再用验证器或奖励模型挑出最好的那条。代表做法有 Best-of-N 采样(生成 N 条并选最优)、束搜索(Beam Search,按累积概率保留若干条最优路径)以及 思维树(Tree-of-Thoughts,把推理组织成可回溯搜索的树)。这类方法的共同点是「并行度换准确率」,延迟增长相对可控,但依赖一个可靠的挑选机制。第二类是修订型:串行地对同一答案反复自我反思与迭代修订,代表做法是 Self-Refine(自我精炼)与各种顺序修订(Sequential Revision)。这类方法不需要并行采样,但对推理链质量的要求更高,且延迟随修订轮数线性增长。此外,自一致性 投票(Self-Consistency,让模型用不同随机路径解同一题再投票)介于两者之间,它既并行采样又用投票而非外部验证器来汇总,工程上非常好落地。无论哪一类,其底层都依托 思维链 让模型把中间推理写出来,才有可搜索、可打分的空间。

测试时计算的收益曲线是「对数型」的:从采样 1 条涨到 8 条,收益提升最明显;继续涨到 32 条、64 条以上,边际递减非常明显,通常需要数量级的算力才能再换来几个百分点的准确率。因此工程上的关键不是「无脑拉高 N」,而是「按请求难度动态分配推理预算」——简单任务用基线预算,难题才加大多样本数或搜索深度。唯元智创 的网关把测试时计算封装成可分级的推理预算档位,支持按请求难度、租户等级与延迟敏感度自动路由到不同档位,并在有可验证结果的场景下接入判对器做 Best-of-N 挑选,让企业不必自己实现采样编排与验证逻辑,也能把算力精准花在真正需要它的难题上。

训练时扩展与测试时扩展对比表

扩展轴成本投入位置见效速度典型收益边际递减拐点对延迟影响适用场景
训练时扩参数量一次性训练算力与后续推理成本慢,需重新训练与部署能力全面提升,泛化好参数量按倍数增长后收益放缓单次推理略增通用底座模型
训练时扩数据量数据采集、清洗与训练算力慢,需数据管线与再训练覆盖更广、幻觉更少数据质量下降后收益锐减基本不变领域能力补齐
测试时扩采样数(搜索型)每次请求的推理算力快,改配置即可生效数学推理等任务提升明显超过 32 条候选后明显递减并行采样可控,成本线性上升有明确判对标准的难题
测试时扩反思轮数(修订型)每次请求的推理算力快,无需重训写作、代码修订等提升明显超过 3 至 5 轮后收益有限延迟随轮数线性增长可迭代打磨的开放任务
混合策略(训练打底 加 推理加码)训练与每次请求双重投入中,需两者配合综合收益最高两者各自拐点叠加可控,按难度分级生产环境主流选择

推理时扩展策略对比表

策略并行度是否需验证器典型准确率增益延迟倍数Token 成本倍数适用范围
贪心解码(1 倍基线)1否基线1 倍1 倍所有任务的基础模式
Best-of-N 采样(N 为 8)8是视任务 5 至 20 个百分点约 8 倍并行,可控约 8 倍有判对标准或强奖励模型的难题
自一致性投票5 至 40否,用投票代替视任务 3 至 15 个百分点随采样数上升随采样数上升有唯一答案的推理题
思维树 与 束搜索分支数 乘 深度是,需过程打分复杂推理提升显著高,搜索开销大高,随节点数增长需要多步规划与回溯的任务
序列化自我反思(Self-Refine)1否,靠自评视任务 2 至 10 个百分点随轮数线性增长随轮数线性增长写作、代码、开放生成
唯元智创 推理预算分级档位按难度自适应可接判对器按档位 2 至 20 个百分点低档近乎不变,高档可控按档位计费生产环境按请求难度路由

实战经验与避坑

  1. 收益曲线是对数型的,采样从 1 涨到 8 条收益最大,涨到 32 条以上边际递减明显,不要无脑拉高 N:很多团队一看到 Best-of-N 有效,就把采样数一路拉到 64 甚至 128,结果 Token 成本涨了几十倍,准确率只多了两三个百分点。2026 年公开档的经验是:采样数从 1 涨到 8 时,多数推理任务的准确率提升最快;从 8 到 32 提升明显放缓;超过 32 之后,往往要再翻好几倍算力才能换来一两个百分点。所以务实的做法是把 N 默认设为 8 到 16,只有当请求被识别为「高难度且可验证」时才临时上调,用难度路由把预算花在刀刃上,而不是让所有请求都跑满 N。

  2. 必须有可靠的验证手段,否则 Best-of-N 会放大「流畅但错误」的答案:Best-of-N 的成败几乎完全取决于「挑最好的那条」这一步是否可靠。如果判对标准模糊、或奖励模型没有校准,模型很容易选出措辞最流畅、最像标准答案的那一条,而它恰恰可能是错的,此时采样数越多,选中错误答案的概率反而越高。可靠验证有两种:一是可验证结果的判对器(数学题能数值校验、代码题能跑单测、结构化抽取能字段比对),二是有 过程奖励模型 或 对数概率 支撑的、经过校准的打分器。没有这两者之一时,应改用 自一致性 投票这类不依赖外部验证器的汇总方式。

  3. 简单任务开测试时扩展是纯浪费,必须做任务分级:分类、抽取、格式转换、简单改写这类任务的正确答案往往唯一且模型一次就能做对,此时开 Best-of-N 或自我反思只是把同一份正确结果重复算了 8 遍,成本和延迟翻几倍而准确率毫无变化。正确做法是先做任务分级:建立一张「任务类型到推理预算」的路由表,把简单任务固定为基线预算,只有数学推理、多步规划、复杂代码、长链条分析这类真正有难度的任务才启用测试时扩展。实测中,做过分级路由的系统相比「全量开高档」,能在保持几乎相同准确率的前提下把整体推理成本降低 50% 至 70%。

  4. 延迟敏感场景要用并行采样而不是串行修订,串行修订延迟随轮数线性增长:搜索型(Best-of-N、自一致性)的 N 条候选可以并行生成,只要推理集群并发足够,延迟大致等于生成一条的时间加上汇总时间;而修订型(Self-Refine 等)必须一轮接一轮串行执行,第 2 轮依赖第 1 轮的结果,延迟随轮数近似线性增长,3 轮就是 3 倍延迟起步。因此对实时对话、在线 Agent 这类延迟敏感场景,应优先选并行采样;只有在离线批处理或用户可接受长等待的场景,才使用串行自我反思,并严格控制轮数(经验上 2 至 3 轮往往已到性价比拐点)。

  5. 要把推理 Token 成本计入预算,测试时扩展的计费是真实翻倍的:测试时扩展省不了钱,它本质是「多花 Token 换准确率」。开 8 条采样就是 8 倍的输出 Token 成本,若再叠加思维链的长推理,单次请求的费用可能涨到基线的十倍以上。因此上线前必须把「准确率提升」与「Token 成本上升」放在一起算账:如果某个任务准确率只提升 2 个百分点、成本却涨了 8 倍,那多半不值得;反之若是关键的高价值难题(如合同条款核验、复杂数学证明),昂贵但准确率显著提升则是划算的。建议按租户或业务线设置独立的测试时预算上限,避免个别高难度请求把整体成本打爆。

  6. 生产环境要按请求难度做动态路由,只把预算花在难题上:静态地把所有请求都设成同一个推理预算档位,要么浪费(简单任务)要么不够(难题)。更聪明的做法是先用一个轻量判断(可以是小模型打分、也可以是规则与置信度信号)估计请求难度,再决定给多少测试时预算。例如低难度请求走基线预算,中等难度走 N 为 8 的采样,高难度且可验证的请求才走高 N 加判对器。难点在于难度判断本身要够快够准,否则路由开销会吃掉收益。实测中,一个简单的「先让模型自评置信度再决定预算」的两段式方案,就能在几乎不损失准确率的情况下省下大半测试时算力。

常见问题

测试时计算扩展是不是采样越多、答案越准,把 N 设得越大越好?
不是,测试时计算的收益曲线是对数型的,采样数从 1 涨到 8 收益最大,涨到 32 条以上边际递减非常明显,盲目拉高 N 只会让成本线性膨胀而准确率几乎不动。2026 年公开档的经验规律是:从 1 条采样到 8 条,多数推理任务的准确率提升最快,这一段是性价比最高的;从 8 条到 32 条,提升开始放缓,但通常还看得见;超过 32 条之后,往往要再翻好几倍的算力才能换来一两个百分点,投入产出比急剧恶化。所以 N 的正确用法不是无脑调大,而是按请求难度分级:简单任务用 1 到 2 条就够,中等难度用 8 条,只有确实高难度且可验证的请求才上调到 16 或 32 条。还有一个常被忽略的限制:采样越多,对「挑选机制」的依赖越强,如果没有可靠的验证器或校准良好的奖励模型,N 增大反而会提高选中「流畅但错误」答案的概率,准确率可能不升反降。因此工程上的最佳实践是「小 N 加 强验证」,把预算优先投在提升验证质量上,而不是单纯堆采样数量。最后提醒,测试时扩展的 Token 成本是真实翻倍的,开 8 条就是 8 倍输出成本,上线前一定要把准确率增益与成本增量放在一起算账,只有当高价值难题上「多花的钱」确实换来了「值得的准确率」时才值得启用。
Best-of-N 采样一定要有验证器吗,没有验证器能不能用?
严格来说 Best-of-N 的核心就是「挑出最好的那一条」,所以它天然依赖某种验证或打分机制;如果没有验证器,就不要硬用 Best-of-N,而应改用自一致性投票这类不需要外部验证器的汇总方式。先说验证器可以是什么:一是可验证结果的判对器,比如数学题做数值校验、代码题跑单元测试、结构化抽取做字段比对、检索问答核对引用是否支持结论,这类验证最可靠、几乎没有偏置;二是经过校准的奖励模型或过程奖励模型,它能对候选打分,但必须经过充分校准,否则容易偏爱长答案、偏爱格式漂亮的答案,把错误答案排到前面。两者的共同作用是给候选排序,没有它们 Best-of-N 就只能退化成「随机挑一条」或者「让模型自己评自己」,而模型自评往往过誉,选出的常常是措辞流畅却事实错误的答案,采样数越多错得越离谱。如果没有可靠的验证器,推荐改用以下替代方案:一是自一致性投票,让模型用不同随机路径解同一题,再对最终答案做多数投票,它不需要外部验证器,对答案唯一的任务非常有效;二是把问题改造成「可验证的形式」,例如要求模型输出结构化结果后再做规则校验;三是干脆不开测试时扩展,把算力省下来。综合来看,验证器的质量比采样数量更能决定测试时扩展的成败,宁可把预算花在提升验证上,也不要堆一个没有可靠挑选机制的 Best-of-N。
测试时扩展会不会让延迟和成本爆炸,生产环境里怎么控制?
如果不加控制,测试时扩展确实会让延迟与成本快速膨胀,但只要做好任务分级、动态路由、预算上限与策略选择这四件事,就可以把它控制在可接受范围内。先看为什么会膨胀:并行采样 N 条把 Token 成本乘 N,串行修订 R 轮把延迟乘 R,若再叠加思维链的长推理,单次请求的费用与耗时都可能涨到基线的十倍以上。控制手段第一是任务分级,先建立一张任务类型到推理预算的路由表,让分类、抽取、格式转换这类简单任务走基线预算,只有数学推理、多步规划、复杂代码等真难题才启用扩展;第二是动态路由,用一个轻量判断估计请求难度,低难度给少量预算、高难度才加码,最简单可行的做法是先让模型自评置信度再决定采样数;第三是预算上限,按租户或业务线设置单请求与单日的测试时算力上限,避免个别高难度请求把整体成本打爆,同时给出超限时的降级策略(例如退回单条采样);第四是策略选择,延迟敏感场景优先用并行采样而不是串行修订,因为并行采样的延迟约等于生成一条的时间加上汇总时间,而串行修订的延迟随轮数线性增长,3 轮就是 3 倍起步。实测中,一个做得比较到位的生产系统通常在准确率与基线持平或略优的前提下,把测试时算力的平均消耗控制在基线的 1.5 到 3 倍之间,而不是让每个请求都跑满最高档。此外还要把测试时扩展与缓存、批量调度配合使用,重复请求走缓存、离线任务走批量,进一步摊薄单位成本,这样既能拿到准确率收益,又不会让账单失控。