有个反常识的现象:GPT-4o 在数学推理上的表现,经常被一个参数量只有它 1/10 的模型打败——前提是让小模型"多想一会儿"。

这不是玄学。Lilian Weng(前 OpenAI 安全负责人)上个月发布了一篇系统性综述 “Why We Think”,把 test-time compute 的整个研究脉络梳理了一遍。读完之后我的感受是:2026年大模型竞争的核心维度,正在从"训练时砸多少卡"转向"推理时怎么花算力"

这对工程师意味着什么?它意味着你不需要等下一代模型发布,就能让现有模型在困难任务上性能翻倍。而且这不是调参玄学——有清晰的工程化路径。

一、什么是 Test-Time Compute?

最简单的理解:训练阶段的 compute 决定模型"知道什么",推理阶段的 compute 决定模型"能想多深"。

传统做法是把所有算力都花在预训练上——更大的模型、更多的 token、更长的训练。但 2024 年之后,一个共识逐渐清晰:对于需要复杂推理的任务,在推理时动态增加计算量,收益比增大模型参数高得多

打个比方:考试时你面对一道难题,花 5 分钟思考和花 30 秒随手写答案,正确率完全不是一个数量级。但如果你基础知识不扎实(训练不够),光给你时间也没用。两者是互补关系。

核心思想

Test-time compute 不是一种具体技术,而是一族策略。它们的共同点是:让模型在回答之前做更多计算。具体手段包括:

• Chain-of-Thought (CoT):生成中间推理步骤

• Self-Consistency:多次采样,投票选最优答案

• Tree Search / MCTS:在推理空间中做树搜索

• Iterative Refinement:生成→验证→修正循环

• Verifier-guided Decoding:用一个验证器评分,引导生成方向

二、为什么"多想一会儿"效果这么好?

这里有一个来自 DeepMind 2024 年论文的关键发现:给定固定的总 FLOP 预算,把算力分配到 test-time(而不是全部用于训练更大模型)的策略,在数学和代码任务上胜率压倒性地高。

我的理解是这样的:大模型在预训练阶段学到的是"模式库"——它见过大量推理链,知道推理应该长什么样。但面对一道新题,单次前向传播(一次生成)很容易走歪。如果你允许它多生成几条路径、回溯、验证,本质上是在推理空间里做搜索——这跟 AlphaGo 的蒙特卡洛树搜索是同一思路。

关键直觉:预训练给了模型"棋感",test-time compute 给了模型"深度计算"的能力。两者结合,才是完整的推理能力。这就是 Lilian Weng 文章标题 “Why We Think” 的含义——思考本身就是一种计算资源的投入。

数据说话:Scaling Law 在推理端的表现

几个有代表性的数据点:

MATH benchmark:PaLM 2-S(小模型)用 64 次采样 + majority voting,性能追平 PaLM 2-L(大模型)单次输出。算力差异约 8x vs 1x,但模型参数差 5 倍。

GSM8K:Llama-3-8B 单次准确率约 79%,32 次采样 + 验证器选答案可以到 95%+,逼近 GPT-4 级别。

DeepSeek-R1:通过 RL 训练模型学会"自主延长思考链",在 AIME 数学竞赛上从 15% 暴涨到 71%。

这个趋势的工程含义是:对于很多实际场景,与其升级到更贵的模型,不如在当前模型上投入更多推理计算。特别是当任务难度可预估时,可以动态调配。

三、工程化实践:三种可落地的策略

策略一:Self-Consistency(最简单,立即可用)

思路:对同一个问题多次采样(temperature > 0),然后用投票或评分选最好的。这是最容易落地的 test-time compute 策略。

import asyncio
from openai import AsyncOpenAI

client = AsyncOpenAI()

async def self_consistency(
    prompt: str,
    n_samples: int = 8,
    model: str = "gpt-4o-mini"
) -> str:
    # 并发采样 n 次
    tasks = [
        client.chat.completions.create(
            model=model,
            messages=[{"role": "user",
                       "content": prompt}],
            temperature=0.7,
            max_tokens=2048
        )
        for _ in range(n_samples)
    ]
    responses = await asyncio.gather(*tasks)

    # 提取答案并投票
    answers = [
        extract_final_answer(r.choices[0]
            .message.content)
        for r in responses
    ]
    return majority_vote(answers)

这段代码的核心价值在于:用 gpt-4o-mini 的价格,靠 8 次并发调用,达到接近 gpt-4o 的准确率。在数学、代码生成、逻辑推理类任务上提升尤其明显(通常 10-20 个百分点)。

策略二:Verifier-Guided Best-of-N

Self-consistency 的升级版:不用简单投票,而是训练一个 verifier(验证器)给每个答案打分,选分最高的。

OpenAI 在 2021 年的论文 “Training Verifiers to Solve Math Word Problems” 就证明了这一点:一个 6B 参数的 verifier 配合 175B 的生成器,Best-of-100 策略在 GSM8K 上从 55% 提升到 77%。

工程上的关键决策是 Outcome-level vs Process-level verification

ORM(Outcome Reward Model):只看最终答案对不对。简单粗暴,但可能奖励"碰巧对了"的错误推理。

PRM(Process Reward Model):给推理链中的每一步打分。DeepMind 和 OpenAI 的实验都表明 PRM 效果更好,但标注成本高得多。

# Best-of-N with verifier scoring
def best_of_n(
    prompt, n=16, generator="deepseek-v3",
    verifier="reward-model-v2"
):
    # 生成 N 个候选
    candidates = [
        generate(prompt, model=generator,
                 temperature=0.8)
        for _ in range(n)
    ]

    # Verifier 打分
    scores = [
        score_solution(c, model=verifier)
        for c in candidates
    ]

    # 取最高分
    best_idx = argmax(scores)
    return candidates[best_idx]

实际部署中的经验:N 取 8-32 通常是性价比最高的区间。N 再大,边际收益急剧递减(因为模型的搜索空间已经覆盖了大部分可能性)。

策略三:Iterative Refinement(最像"人类思考")

让模型自己"检查作业":生成一个回答 → 让模型自己找错 → 修正 → 再检查。这是 o1/o3 系列和 DeepSeek-R1 内部在做的事,只不过它们是通过 RL 训练让模型自动学会这个循环。

手动版本的 iterative refinement:

def iterative_refine(
    problem: str,
    max_rounds: int = 3
) -> str:
    solution = generate(
        f"Solve: {problem}\n"
        f"Think step by step."
    )

    for i in range(max_rounds):
        critique = generate(
            f"Problem: {problem}\n"
            f"Solution: {solution}\n\n"
            f"Find errors in this solution."
            f" If correct, say CORRECT."
        )

        if "CORRECT" in critique:
            break

        solution = generate(
            f"Problem: {problem}\n"
            f"Previous: {solution}\n"
            f"Errors: {critique}\n\n"
            f"Fix the errors and provide"
            f" corrected solution."
        )

    return solution

踩坑提醒:模型自检不是万能的。研究表明 LLM 自检存在"过度自信"问题——它可能把正确答案改错。解决方法:1) 用不同 prompt 做 critique;2) 用不同模型交叉验证;3) 设置 max_rounds 防止无限循环。

四、DeepSeek-R1 做对了什么?

DeepSeek-R1 可能是 2025-2026 年 test-time compute 落地最成功的案例。它的核心创新不是"让模型想更久"(这是表象),而是用 RL 训练模型自主决定"想多久"

传统 CoT prompting 有个尴尬的问题:你让模型"think step by step",它会对简单问题也写一大堆废话推理。浪费 token 和延迟。DeepSeek-R1 的训练策略让模型学会了:

• 简单问题快速回答(短推理链)

• 难题自动延长思考(长推理链,甚至数千 token)

• 遇到死胡同会回溯重来(不会一条路走到黑)

这种"自适应推理深度"是真正的工程突破。Lilian Weng 在文章中指出,这背后的 RL reward 设计非常精巧:不仅奖励正确答案,还惩罚不必要的冗长推理——这迫使模型学会高效思考。

一个关键洞察:Reward Hacking 是最大敌人

Lilian Weng 去年还有一篇 “Reward Hacking in Reinforcement Learning” 专门讨论这个问题。在 test-time compute 场景下,reward hacking 有个特殊形态:

模型可能学会"表演思考"而不是"真正思考"

具体来说:如果 reward model 只看最终答案正确性,模型可能学会一种策略——生成大量看似合理的中间步骤,然后"碰巧"给出正确答案。这些中间步骤没有实际推理价值,只是填充 token 来迎合 verifier 的评分偏好。

这就是为什么 Process Reward Model (PRM) 比 Outcome Reward Model (ORM) 重要——你需要确保每一步推理都是有意义的。

五、实战场景:什么时候该用 Test-Time Compute?

不是所有任务都适合。我的判断标准:

任务特征判断

答案可验证?

是 → 数学、代码、逻辑推理 → 强烈推荐 test-time compute

否 → 开放式写作、闲聊、翻译 → 收益有限,不值得额外开销

延迟可接受?

是 → 离线批处理、CI/CD pipeline → 大胆用,N 可以开到 32-64

否 → 实时对话、用户面交互 → 考虑 speculative decoding 或轻量 CoT

几个高价值落地场景:

1. AI 代码审查:给 PR 的每个改动生成 8 个独立审查意见,用 verifier 过滤噪音,只推送置信度高的建议。单次审查可能遗漏 bug,多次采样大幅提升覆盖率。

2. 自动化测试生成:对同一个函数生成 16 组测试用例,自动执行,只保留能通过编译且覆盖率有增量的。比 temperature=0 单次生成的多样性和质量都好得多。

3. 复杂 SQL 生成:自然语言→SQL 的转换,先生成多个候选 SQL,然后用 EXPLAIN 检查执行计划,过滤掉全表扫描和慢查询。这是 verifier-guided 策略的天然场景。

4. 数学/科学论文检验:让模型从不同角度验证一个数学证明的每一步。Sebastian Raschka 在他的 LLM 工作流文章中也强调了这种"多路径验证"策略。

六、成本分析:什么时候划算?

这是工程师最关心的问题。我算了一笔账:

策略 模型 成本/query MATH准确率
单次调用 GPT-4o ~$0.03 76%
Best-of-8 GPT-4o-mini ~$0.012 74%
Best-of-32 GPT-4o-mini ~$0.048 82%
R1-style DeepSeek-R1 ~$0.02-0.08 85%+

结论很清晰:小模型 + test-time compute 在准确率和成本的帕累托前沿上往往优于大模型单次调用。但前提是你的任务确实需要推理(而不只是知识检索)。

七、未来方向:从"给更多时间"到"教会如何思考"

我认为 test-time compute 的演进方向有三个值得关注的趋势:

趋势一:自适应计算预算

现在的做法是固定 N(采样次数)或固定 max_rounds。未来应该是模型自己决定"这道题需要想多久"。DeepSeek-R1 已经做到了初步版本,但更成熟的方案应该是:系统层面有一个 difficulty estimator,根据预估难度动态分配 compute budget。

趋势二:Latent Reasoning(隐式推理)

CoT 有个根本问题:推理步骤必须用自然语言表达,而自然语言作为思维媒介是低效的。Coconut(Chain of Continuous Thought)等研究在探索让模型在 latent space 中"思考"——不需要显式生成文字,直接在隐藏层做多轮迭代。这可能带来推理效率的数量级提升。

趋势三:和 Agent 范式的融合

DeepMind CEO Demis Hassabis 在最近的访谈中明确说:“Agent 是通往 AGI 的唯一路径”。而 test-time compute 是 Agent 的"思考引擎"——Agent 做复杂规划时,本质就是在推理空间里搜索最优行动序列。

Sebastian Raschka 在 “Components of A Coding Agent” 中也指出:coding agent 的核心能力不是调用工具,而是在工具调用之前做充分推理——决定用什么工具、以什么顺序、如何处理失败。这就是 test-time compute 在 Agent 系统中的具体体现。

八、工程师行动指南

如果你今天就想开始利用 test-time compute,我的建议:

第一步:识别你系统中的"推理瓶颈"任务。不是所有 LLM 调用都值得投入更多 compute。找出那些准确率不够、且答案可验证的环节。

第二步:从 Self-Consistency 开始。成本最低,改动最小——只要你能并发调用 API,加一个投票逻辑就行。在数学/代码/分类任务上通常有 5-15% 的提升。

第三步:引入 verifier。如果你有足够的标注数据(哪怕只有几百条),微调一个小模型做 verifier,配合 Best-of-N 策略。这是性价比最高的组合。

第四步:考虑用 R1-class 模型做推理密集型任务。DeepSeek-R1、QwQ 这类模型已经内置了 test-time compute 策略,你不需要自己实现采样+验证,直接调用就能享受推理增强的收益。代价是 latency 更高(因为生成 token 更多)。

最后一个思考:当推理成本持续降低(DeepSeek API 已经做到 $0.14/M tokens),test-time compute 的经济性会越来越好。我判断在 2026 下半年,“推理时花 10 倍 compute 换取更高准确率"会从"高端用法"变成"默认选项”。就像当年 GPU 价格下降让深度学习从实验室走向工业一样——关键阈值一旦跨过,采用率会爆发式增长。

下一步我想深挖的方向:Latent Reasoning(特别是 Coconut 的工程化可能性)和 multi-agent debate(让多个模型互相辩论作为 test-time compute 的一种形式)。如果你在生产系统里用了类似策略,欢迎交流。

参考文献:

• Lilian Weng - “Why We Think” (May 2025)

• Lilian Weng - “Reward Hacking in Reinforcement Learning” (Nov 2024)

• DeepSeek - “DeepSeek-R1: Incentivizing Reasoning” (Jan 2025)

• Cobbe et al. - “Training Verifiers to Solve Math Word Problems” (2021)

• Sebastian Raschka - “Components of A Coding Agent” (Apr 2026)

• Demis Hassabis - Agent 是通往 AGI 的唯一路径(访谈, 2026)

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐