阶段 5 · 大模型怎么炼成

测试时计算:答不出来的时候
让它多想一会儿

上一章《RLVR 与 GRPO》用 RL 把模型的推理链训长了;这一章看另一条路: 不训模型,只在推理时多花算力。2022 年起这能提分,2024 年 OpenAI 的 o1(先写长推理再答) 把它变成主流路线。这多出来的算力花在哪,下面讲。

1

一句话的魔法

2022 年有个发现简单到让人怀疑: 在提示词末尾加一句「Let's think step by step」,同一批数学题的正确率从 17.7% 跳到 78.7% (MultiArith 数据集,Kojima 2022)。模型没有变,参数没有变,只是被要求把过程写出来—— 这种写法后来叫思维链。

互动 · 同一道题,两种问法

❌ 直接问 问:一个班 23 人,其中 11 人学钢琴,
  剩下的人里一半学吉他。
  学吉他的有几人?

答:12 人 ← 直接蹦数字,容易错
✅ 要求写出过程 答:一步一步来。
① 总人数 23
② 学钢琴 11 人
③ 剩下 23 − 11 = 12 人
④ 一半学吉他:12 ÷ 2 = 6 人

为什么写出来就有用?因为 Transformer 是固定层数的。它做一次前向,能完成的"计算量"是固定的—— 大概是几十亿次乘加,听起来很多,但一道需要 5 步、且每一步都依赖上一步的题,一次前向就算不完。 把中间步骤写进上下文之后,模型每生成一个 token,就相当于多做一次完整的前向—— 它把"深度不够"的问题,换成了"时间够不够"的问题。这就是"用输出当草稿纸":模型借自己的输出,给自己加了一层外挂的工作记忆。

🎯 类比

像心算和笔算。
心算 47 × 83 脑子会卡住;给你一张纸,同样的脑子就能算出来。 纸没有增加你的智力,但它让你把中间结果放在外面,不用全靠脑子记。
CoT 就是给模型的纸。

互动 · 一张纸,等于多算几次

2

三条花算力的路线

路线怎么花算力需要额外训练吗代表
① 采样 Sampling 同一道题独立生成 k 条回答,然后投票 不需要,拿来即用 Self-Consistency
② 搜索 Search 把解题当成一棵树,有策略地探索分支,走错了就回退 通常需要一个给每一步打分的评委(专门训练的叫过程奖励模型,第 4 节讲;也可以让模型自己评) Tree of Thoughts、MCTS 等树搜索
③ 训练长 CoT 用 RL 直接训练模型自己写更长的推理链 需要大规模 RL 训练(贵) o1、R1

①② 是"推理时靠外部机制多想"——模型本身没变,是你在外面套了一层策略; ③ 是"把想的能力训进模型里"——训完之后,模型自己就会在回答前写很长一段推理。 成本结构因此不同:①② 是推理变贵,③ 是一次性训练很贵、之后推理也贵。 三条路线也不是三选一——一个已经训出长推理的模型,照样能多采几条投票。

互动 · 三条路线,各花多少钱

M

数学 · 每多写一个词,就多算一整次

这一章从第 1 节到第 7 节,底下其实是同一个算式。 §1 那句「固定层数」翻成数字,就是一句大白话—— 模型每多写一个 token,就等于多做一整次前向。 写出来的推理越长,花掉的计算就越多。下面这张图把它画出来。

互动 · 多写推理,代价怎么涨

T300直接回答的 token 数 τ3000推理链多写的 token 数 C11.0相对计算量(直接回答 = 1)
💡 公式里每个符号,在图上都有一块

T 是那条当基准的长度(直接回答要写的字), τ 是横轴上你拖到的位置(多写的推理), C 是曲线的高度(相对代价)。
把 τ 拖到 9000、把 T 调到 300,曲线末端爬到 31 倍附近——这条线把「本来就要写的 300 token」 也算进去了(9300 ÷ 300);第 7 节那个「贵 30 倍」只比输出长度(9000 ÷ 300),差的 1 倍就是本来就要写的那段开头。

🎯 一句话记住这一节的数学

像考试:一道题写 3 行能得出答案,硬要写 300 行草稿, 你花掉的力气就是 100 倍——而草稿写得再多,脑子(层数)也没变, 只是把「想一次」拆成了「想很多次」。
CoT 买到的是「时间」,不是「更深的脑子」。

3

Self-Consistency:投票真的有用吗

最朴素的做法就是多问几遍,取多数票。听起来很土,但它确实有效—— 不过有一个条件,而且这个条件经常被忽略。

互动 · 真的模拟几千次投票

把这件事写成式子:k 个人各自独立答题,每人答对的概率都是 p;超过一半的人答对,这次投票才算对。 所以只要把「答对的人超过一半」的所有情况加起来,就是投票后的准确率。

k投票人数(采样几条) i其中答对的人数 C(k,i)从 k 人里挑 i 个答对的,有几种挑法 Σ把 i 超过一半的情况全加起来

⚠️ 一定要把滑块拖到 0.5 以下看看

当单次正确率 低于 50% 时,投票不是帮忙,是帮倒忙—— 采样越多,准确率越趋近于 0。
因为多数投票的前提是"多数人是对的"。如果模型的正确率还不如抛硬币, 那它的多数票就系统性地投出了错误答案。
这解释了一个真实的工程现象:self-consistency 只在模型"已经差不多会了"的题上有效。 对完全不会的题,多采样纯粹是浪费钱。 麻烦的是,事先你并不知道这道题的 p——只能靠题型判断:模型平时就做得差不多的题才值得投票。

🎯 类比

像开会投票。如果大部分人懂这件事,投票能过滤掉个别失误,结论更可靠。
但如果大部分人都不懂、只有少数人懂——投票会把那个唯一懂的人投出去。
集体智慧的前提是"集体平均水平在及格线以上"。

4

过程奖励 vs 结果奖励:搜索的效率差

路线 ② 需要判断"这一步走得好不好"。有两种做法,代价完全不同: ORM(结果奖励模型)只看最后答案对不对,PRM(过程奖励模型)给每一步打分、挑好的往下走。 下面这个互动模拟一道 6 步的题:横轴是允许花的模型调用次数上限(生成候选和打分都算一次), 纵轴是最终答对的概率。先看一张静态示意图,分清两种做法:

示意 · ORM 走到底,PRM 半路掉头

对比项ORM · 结果奖励PRM · 过程奖励
看什么只看最终答案对不对 给每一步都打分
信号密度走完一条完整解答(一条"轨迹")只有 1 个信号 每一步都有信号(一条轨迹 n 个)
能不能提前剪枝不能——必须走到底才知道行不行 能。发现这步不对就立刻放弃
标注成本低,只要对答案 高:要人逐步标注"这一步对不对"。PRM800K 是人工标了 80 万步;后来多用模型自动构造(如 Math-Shepherd, 2023)

互动 · 同样的算力预算,谁最终答对的概率高

两条曲线在低预算区差距最大——预算越紧,PRM 的优势越明显。 原因是结构性的:ORM 的钱全花在"把一条路走完"上, 而绝大多数路都是错的;PRM 的钱花在"评估岔路口"上,能在错的方向上及时止损。 但预算足够大时,ORM 靠蛮力采样也能追上——所以这是一个"用钱换效率"还是"用标注换效率"的选择。

5

过度思考:想得久不一定更好

既然多想有用,那是不是越多越好?不是。 实测下来,准确率随推理长度先升后降,像一个倒过来的 U(Wu et al. 2025,arXiv 2502.07266); 下面这条曲线按同样的形状画,是示意图。

互动 · 简单题和难题的最优长度不一样

⚠️ 过度思考长什么样

模型开始反复自我怀疑:"等等,让我重新检查一下……嗯,之前那个应该是对的…… 不过我再确认一遍……"
这种输出有两个问题:
① 成本:本来 200 token 能解决的题,变成 5000 token。
② 准确率反而下降:因为它在反复推翻一个本来正确的结论, 最后可能把对的改成错的。这不是"更谨慎",这是"想太多把自己绕进去了"。

💡 于是有了"自适应计算"

正确的目标不是"让模型想得久",而是"把算力花在需要的地方": 简单题一步到位,难题才开长链。这是一个独立的研究方向, 阶段 8 的「自适应计算」会专门讲。

6

谱系:从一句话到推理模型

方法年份核心做法需要训练吗
Few-shot CoT(给例子)2022 在提示里给几个带推理过程的例子不用
Zero-shot CoT(不给例子)2022 只要一句 "Let's think step by step"不用
Self-Consistency2022 采样 k 条,取多数票不用
Least-to-Most2022 先把问题拆成子问题,再逐个解决不用
Tree of Thoughts2023 把推理做成树搜索,可以回退需要自己打分或额外的评估器
PRM / Let's Verify2023 训练一个逐步打分的验证器,用它指导搜索 需要逐步标注数据
STaR / 自举2022 让模型生成推理链,只保留答对的,拿去微调自己 需要微调
o1 / R12024-25 用 RL(RLVR/GRPO)直接训练模型生成长 CoT 需要大规模 RL
s1 / 长度控制2025 用"预算强制"控制思考长度:想停就强塞一句「等等」让它接着想,想太久就强制收尾——缓解过度思考 微调

把这张表压缩成一句话:2022 年人们发现"把过程写出来就有用", 2023 年在解决"怎么在众多过程里挑最好的", 2024 年之后在解决"怎么让模型自己学会写好过程"。 三个阶段:发现现象 → 外部引导 → 训进模型。

示意图 · 三个阶段的时间轴

7

代价:三个必须知道的坑

坑说明什么时候真的会痛 → 换什么
① 成本暴涨 一条普通回答可能 300 token,一条长 CoT 回答可能 9000 token—— 贵 30 倍。而且它是串行生成的,所以延迟也长 30 倍。
这是推理模型最实际的代价。
简单题也开长链、按输出长度计费 → 先估难度,限制最大长度(第 5 节)
② CoT 不可信 模型说出来的推理过程未必是它真的计算过程。
有实验发现(Turpin 2023):给模型提示一个错误的答案,它会给出错误答案, 然后编一套"看起来合理"的推理来支持它——写出来的推理不一定是它真正的计算过程。
所以不能把 CoT 当成"解释"来做安全审计。
拿 CoT 当审计证据 / 事故解释 → 改读模型内部(机械可解释性,阶段 8)
③ 不是所有任务都受益 CoT 只对需要多步计算的任务有效(数学、逻辑、代码)。 对知识回忆("法国的首都是哪")和格式任务,写出步骤基本不帮忙—— Sprague et al. 2024 汇总 100 多篇论文发现,CoT 的增益几乎只出现在数学和逻辑上 知识问答 / 格式转换也硬开长链 → 先小规模对比一次,没提升就别开
⚠️ 第二条值得特别小心

很多人把 CoT 当作"可解释性工具"——觉得能看到推理过程就能审计模型。
这个假设是错的。CoT 是模型生成的一段文本,它和其他输出一样可以被优化、被操纵。 模型完全可能"心里"走了一条捷径,但写出一条符合人类期待的推理链。
真正要理解模型内部在算什么,得看机械可解释性(阶段 8)—— 直接读神经元和注意力,而不是读它写出来的话。

互动 · 为什么回答要等这么久

每生成一个 token 都要等上一个算完—— 它是串行吐字,不是并行出稿。所以贵 30 倍的同时,等你看到答案也要多等 30 倍。

8

小结

这一章属于「七条线」里的一条(那是解释深度学习为什么能行的七条主线), 它把那条线从训练时搬到了推理时。下面那张「暗线」表是另一套东西——拆方法时要问的六个问题,别和七条线混。

它对应哪条线 ③ 规模会赢——但这里的“规模”不是参数、不是数据, 而是每一个回答背后花掉多少算力。这一章的贡献是把算力从“训练时的一次性投入” 变成了“每个请求都可以单独调的旋钮”。
一句话 测试时计算的做法,本质上是在把“网络有多深”这个固定的算力上限, 换成“愿意想多久”这个可调的旋钮——深度不够,就用时间补。
它牺牲了什么 牺牲了延迟和成本的可预测性:一条 300 token 的回答变成 9000 token, 而且是串行生成的,等待时间跟着涨。
更深一层的代价是:“想得越久越好”这个假设本身不成立(第 5 节的倒 U 形)—— 你花了更多钱,还得额外学会“什么时候该停”,而后者又是一个新问题。
🎬 自己验一遍

回到第 5 节那张「简单题和难题的最优长度不一样」:把「题目难度」滑块从“简单”拖到“很难”, 峰值向右移——那个瞬间就是「算力换成能力」;再往峰值右边拖,准确率会掉回来。

它在暗线里站在哪

暗线这一章的回答
A 信息流动 数据形状:输入 prompt 的 token 数不变 → 模型输出的序列被拉长到几倍甚至几十倍 (300 → 9000)—— 多出来的全是中间步骤,它们又被拼回输入,进入下一轮前向。
所以这是全站一个特殊的形状变化:别的章在变特征图的宽度(通道、维度), 这一章在变序列的长度;而序列长度一旦变长,注意力按平方代价跟着涨 (见 《推理与 KV Cache》、《高效注意力》)
B 什么被牺牲了 延迟与成本换准确率。300 → 9000 token,钱和等待都跟着涨, 换到的是“本来做不对的题现在能做对”。代价还在可预测性上: 同一个模型,简单题和难题的合理推理长度差一个量级(第 5 节),花多少得先猜
C 参数账本 参数量一点没变——7B 还是 7B。变的只有 token 数: 普通回答 ≈ 300 token;长 CoT 回答可达 9000 token(≈ 30×)。
贵的主因:这 30 倍的 token,每一个都要把整个模型跑一遍。生成时还要为每个 token 多存一份 中间结果(《推理与 KV Cache》 里的 KV Cache),它也按 token 数涨,是次要开销。
(这里的 30× 指单条回答的上下文长度;训练/推理的完整字节账在 《LoRA》、《硬件与算力账本》 里)
D 跑在什么上 等待时间几乎只跟输出长度成正比:生成时每写一个词,都要把整个模型从显存里读一遍—— 限制它的是显存带宽,不是 GPU 的并行算力。读入题目那一步另算,完整账见 《硬件与算力账本》
E 它假设了什么 三层假设,第三层最容易被忽略:
① 题目可以被拆成中间步骤(数学、逻辑、代码可以;知识回忆不行);
② 写出来的中间结果真的会被后面的前向用到——每个新 token 都多给了一次前向;
③ 采样出来的多数答案是对的(≥ 50%)。这是 self-consistency 的硬前提
F 违背了哪个直觉 “多想一会儿总不会更糟”是错的。准确率随推理长度是倒 U 形—— 模型会反复推翻自己本来正确的结论,把对的改成错的。
“多问几遍取多数票总不会更糟”也是错的(前提见 E 行:单次正确率要过一半)
🎯 前后钩子

它接住了上一章的什么:《RLVR 与 GRPO》第 5 节那个“顿悟时刻”—— 模型在 RL 训练中自己学会了“回头检查”。这一章接着问:那这个“多想一会儿”值不值?

它给下一章留了什么:把“会想”训进模型里,最贵的那一步就是 RLVR/GRPO 本身的算力开销, 而它考验的是训练侧的显存。要便宜地改一个已经训好的模型,得看 《LoRA 与高效微调》。

一句话带走测试时计算

现在你能给一道题估个价:值不值得让模型多想。 模型单次正确率不到一半时,采样投票反而更差;推理长度过了峰值,多想也会变差。
CoT 之所以有效,是因为它把"深度不够"换成了"时间够不够"—— 模型每写一个中间步骤,就相当于多做一次完整前向。
三条花算力的路线:采样投票、搜索(PRM 能在错方向上及时止损,低预算时优势最大)、 训练长 CoT(把"会想"训进模型里;算上训练那笔账,是最贵的一档,训完也最强)。
两个必须记住的坑:想得久不一定更好(倒 U 形,简单题会被绕晕); CoT 不是可信的解释——模型可以是先有结论、再补推理。

9

拓展阅读

上面讲的都是「够用」的版本。想往下挖,这里有三个入口—— 它们不是必修内容,是给想再往前走一步的读者准备的。

📄 这一章的说法从哪来

💻 工业界怎么写

∑ 更严格的形式