Test-time Compute:把「思考时间」当作新的扩展维度
o1 类推理模型证明:在推理时投入更多算力(更长的思维链、多次采样、搜索验证),能换回明显更强的推理能力。 这把「模型能力」从单纯依赖参数量,扩展成「参数量 × 推理算力」两个维度,催生了新的扩展规律。 它不是免费午餐——test-time compute 有收益递减,且和训练时算力是替代关系,关键是怎么分配。
一句话结论
Test-time compute scaling 揭示了一个新的能力维度:推理时给模型更多「思考算力」(更长的思维链、更多采样、搜索验证),能在不动权重的前提下显著提升推理表现——这让「模型有多强」不再只由参数量决定,而由「参数量 × 推理算力」共同决定。
背景问题
大模型过去十年的扩展故事是 train-time scaling:更多参数、更多数据、更多训练算力 → 更强模型。Chinchilla、Scaling Laws 给出了相对清晰的配方。这条路有效,但有几个问题:
- 训练算力越来越贵。前沿模型训练成本已是亿美元级,继续线性扩大参数边际收益递减。
- 能力天花板受训练时信息密度限制。模型在训练时「记住」了模式,但面对需要多步推理的任务(数学证明、复杂代码、长链规划),单次前向的输出质量有上限——它不能「想得更久」。
- 推理算力被浪费。标准自回归生成每问一次只做固定次数的前向,不管问题多难。简单问题和难问题花一样的算力。
OpenAI o1(2024 年 9 月)用一个反直觉的示范打破了这层:它在推理时会生成很长的隐式思维链(CoT),「想」很久才给答案,在数学、代码、科学推理上显著超越同体量的非推理模型。 这暗示存在第二条扩展轴:test-time compute。
问题随之而来:这条轴怎么扩展?收益怎么衡量?它和训练算力是什么关系?
核心思路
Test-time compute 指推理时为了得到更好答案而额外投入的计算。它的形式不止一种,但都围绕「让模型在输出最终答案前做更多计算」:
1. 延长思维链(Extended CoT)
让模型在给出最终答案前先生成一段(可能很长)的内部推理过程。o1、DeepSeek-R1、Gemini Thinking 都走这条路。
- 模型在
<think>标签里反复推演、自我验证、回溯修正。 - 推理 token 数从几十到几千甚至几万,token 越多通常答案越好。
- 这等于把「推理深度」从一次前向,扩展成「很多次前向组成的思考过程」。
2. 多次采样 + 聚合(Self-Consistency / Best-of-N)
对同一问题采样 $N$ 个回答,然后:
- 多数投票(self-consistency):选出现最多的答案。
- 用验证器打分(Best-of-N with verifier):训一个 verifier 评估每个答案质量,选最好的。
算力随 $N$ 线性增长,质量随 $N$ 亚线性提升(有收益递减)。
3. 搜索(Tree Search / MCTS)
把推理建模成搜索问题:在「思考步骤」空间里搜索,用价值函数引导。
- Tree-of-Thoughts、MCTS 等方法。
- 算力随搜索宽度 × 深度增长。
- 对有明确验证信号的任务(代码可测、数学可验)效果显著,对开放任务难定义价值函数。
4. 迭代精炼(Iterative Refinement)
让模型生成答案 → 自我批评 → 修正 → 再生成,循环若干轮。算力随轮数增长。
关键:算力-质量曲线
这些方法都遵循类似的规律:算力增加,质量提升,但收益递减。DeepMind 的研究(论文)刻画了这条曲线,并发现一个重要事实:
在固定算力预算下,「小模型 + 更多 test-time compute」有时能超过「大模型 + 少量 test-time compute」。
也就是说,test-time compute 和 model size 之间存在替代关系——这打开了「用推理算力换模型参数」的设计空间。
关键技术点
1. 推理模型 vs 普通模型的区别
不是所有模型都能有效利用 test-time compute。一个普通 SFT 模型即使被允许「想很久」,也常常重复、跑题、不自我纠错。o1、R1 这类推理模型经过专门的 RL 训练(如 GRPO),学会了:
- 在思维链里主动验证中间结论。
- 发现走错时回溯重来。
- 在给出答案前自我检查。
这种「会思考」的行为是训练出来的,不是给普通模型加个 <think> 标签就有。DeepSeek-R1-Zero 证明纯 RL(GRPO + 可验证奖励)能让这种行为涌现,是 test-time compute 路线的里程碑。
2. 训练算力 vs 推理算力的权衡
这是 test-time compute 的核心张力:
- 训练算力:一次性投入,分摊到所有推理请求,规模越大单位成本越低。
- 推理算力:每次请求都要付,规模越大总成本越高。
如果一个能力可以靠「训练大模型」或「推理时多想」两种方式获得,选哪个取决于:
- 请求量:请求少 → 推理算力划算(按需付费);请求多 → 训练大模型划算(分摊)。
- 任务难度分布:难任务占比高 → 推理算力红利大;简单任务多 → 大模型一次过更划算。
- 延迟容忍度:test-time compute 增加延迟,实时场景受限。
实际系统通常是混合:基础模型够强 + 关键任务允许更多 test-time compute。
3. 收益递减与「算力-质量」拐点
test-time compute 不是无限有效。研究表明:
- 简单问题:少量思考就能解决,再投入算力几乎无收益。
- 中等问题:算力收益显著,曲线较陡。
- 极难问题:算力收益递减明显,可能怎么想都做不对(模型本身能力天花板)。
这意味着 test-time compute 应该按问题难度动态分配——简单题少想、难题多想。o1 等模型的「思考预算」机制就是这种思路的体现。
4. 验证器是搜索方法的关键
Best-of-N、树搜索都依赖好的 verifier。verifier 本身可以:
- 基于规则(代码跑测试、数学判对错)——准但场景受限。
- 基于模型(ORM/PRM)——通用但有偏差、可能被 hack。
- 模型自我验证——成本最低但可靠性依赖模型能力。
PRM(Process Reward Model,过程奖励模型)比 ORM(Outcome Reward Model,只看最终结果)更精细,能给中间步骤打分,是搜索方法的有效燃料,但训练 PRM 本身不便宜。
5. 推理算力的「隐式」与「显式」
- 显式:用户可见的 CoT、搜索过程(如 o1 的 thinking)。
- 隐式:模型内部多次前向(如连续思维链、递归调用)。
显式更可控、可解释,但消耗输出 token;隐式更紧凑但难调试。当前主流是显式 CoT,因为可观测、可训练。
效果与局限
效果:
- o1 在 AIME、Codeforces、GPQA 等推理 benchmark 上大幅超越同体量非推理模型,部分接近/达到领域专家水平。
- DeepSeek-R1 用开源权重复现了类似能力,证明 test-time compute 路线不依赖闭源魔法。
- 在可验证任务(数学、代码)上收益尤其大;开放任务收益较温和但仍存在。
- 「小模型 + test-time compute」在特定场景超过大模型,提供了新的成本结构选择。
局限:
- 延迟显著增加。推理模型回答一道题可能要几十秒到几分钟,不适合实时交互。
- 成本与请求量线性相关。高 QPS 场景下 test-time compute 成本爆炸,规模化的经济性不如训练大模型。
- 收益递减。简单问题无收益,极难问题受模型本身能力限制,红利集中在中等难度。
- 开放任务收益弱。在没有验证信号的任务(创意写作、开放问答)上,多想不一定想得对。
- 可解释性反而下降。长 CoT 虽然可观测,但模型「真的在想什么」难以审计,存在隐藏推理的风险。
- 训练成本不低。训出能有效利用 test-time compute 的推理模型,需要 RL(如 GRPO)和高质量推理数据,门槛高于普通 SFT。
谁该关心
- 做推理产品的人:test-time compute 是当前能力提升最显著的维度,理解它的成本-收益曲线是产品定价和体验设计的基础。
- 模型训练团队:是否要训练「推理模型」是战略选择——它决定了你的模型能否吃 test-time compute 这条扩展轴。
- AI infra 工程师:推理模型的算力消耗远高于普通模型,serving 架构、计费、调度都要重新设计。
- 研究 scaling laws 的人:test-time compute 是 train-time scaling 之外的新轴,它的规律、与训练算力的最优分配,是当前最重要的开放问题之一。
一个判断:test-time compute 不是「免费的智能提升」,而是把一部分智能从训练阶段挪到推理阶段。它的真正价值在于让能力分配更灵活——简单请求用便宜的方式回答,难请求投入算力硬磕,整体成本-能力比可以优于「一刀切的大模型」。但它也带来了延迟和成本的新挑战,它和 train-time scaling 是互补而非替代:未来的强模型,大概率是「足够大的基础模型 + 训练出会思考的能力 + 按需投入 test-time compute」三者结合。把它理解成多了一个调节旋钮,而不是新的银弹。
