第 12 课:推理模型与 RLVR

RLVR(即用程序直接判定答案对错来当奖励的强化学习)——上一课我们把模型调成了"会按偏好说话"。但偏好管的是好不好听,管不了算得对不对。这一课换一个目标:让模型在多步问题上想得更久、更准。讲清"写步骤"的能力从哪来、奖励怎么换成程序可判的对错、纯 RL 为什么能自己长出长思考、长度膨胀这笔账怎么算、推理预算该分配给哪些题,最后把大模型的长思考搬进小模型。

🎯 学完这 6 步你将能够:
① 说清 CoT 的两条供给路径(提示 vs 训练)与各自代价
② 说清 RLVR 为什么能用"对错"当奖励,以及它的适用边界
③ 会算长度偏差与 test-time scaling 两笔账,并给出蒸馏与 RL 的选型判据
🗺 本节推理链(5 步逻辑递进 + 1 条落地支链:从"多步推理要写出思考"到"该把思考训在哪")
1多步推理的任务要求是:中间步骤必须先写成 token 才可能算对——而供给这些步骤只有两条路:在提示里给示范(占 context),或把过程训进权重,这就是 CoT 的两种来源。
↓
2要把过程训进权重,这就要求有一个能批量获得的奖励信号(正好补上 CoT 只能"激发"、不能"创造"的短板)——因为人类偏好对"算得对不对"给不出稳定判据,于是换成程序验证器直接判对错,这就是 RLVR;它给出的 0/1 奖励让策略的 gradient 第一次有了便宜又可靠的来源。
↓
3奖励可验证之后(这正是 RLVR 的前提),所以可以直接在基座上开 RL——因此出现 R1-Zero 这一类现象:平均响应 token 数随训练一路上升,自我检查、回溯这些行为没有任何示范,全是"更可能答对"被强化出来的。
↓
4但长度上升会被优化器利用——因为 GRPO(即不训练价值模型、改用同一题内多次采样的平均分当参照的强化学习)的损失里含长度 normalization,答错的回答反而"越长越不吃亏",这就是 长度膨胀:注意 R1-Zero 里"变长"与"变强"只是同时发生,不代表二者互为因果。
↓
5长度膨胀直接变成推理账单,所以必须回答"该给多少思考预算、怎么分配"——这就是 test-time scaling 的账本:串行拉长、并行投票、验证器搜索各值多少,以及按难度分配为什么更省(它也决定每次请求占多少 context)。
↓
6【支链 · 落地】test-time scaling 的账算清之后,预算受限的部署还有一条更省的路:因此可以让小模型模仿教师写出的逐条 token 推理轨迹(不是经典蒸馏里那种 logits 分布对齐),这就是 蒸馏。
Chain-of-ThoughtRLVRDeepSeek-R1GRPOTest-Time ScalingDistillation
1
为什么同一个模型直接问答案总错、让它"一步步想"就对?
提示:先分清两种让"写步骤"出现的方式——一种是你临时在提示里塞几个示范(模型权重没变),另一种是把带步骤的数据训进权重。想想这两种各要在推理时付什么成本。
▾
知识背景
CoT(Chain-of-Thought,思维链)提示由 Wei 等(arXiv:2201.11903, NeurIPS 2022)提出:在提示里给几个"输入 + 中间步骤 + 输出"的示范,模型就会跟着把中间步骤写出来。论文报告 PaLM 540B 只用 8 个 CoT 示范,GSM8K 就从标准提示的 17.9% 升到 56.9%(Google 官方博客对同一结果的转述另记作 58.1%,与论文表格口径不同),超过此前最好结果;论文强调这种能力约在 100B 参数以上才出现。另一条路是 STaR(Zelikman et al., arXiv:2203.14465, NeurIPS 2022):让模型自己生成推理过程,只保留"最终答对"的那些去微调,如此反复迭代。另外,零样本 CoT(Kojima et al., arXiv:2205.11916, NeurIPS 2022)证明提示里连示范都不用给,只加一句"Let's think step by step"也有效。

上一课我们把对齐那条线走完了:模型学会了"按人类偏好说话"。但那套偏好管的是好不好听,因为它只回答"人更喜欢哪个",所以管不了算得对不对——这一课换一个目标,让它在多步问题上想得更久、算得更准。

要让模型"一步步想",有两条供给路径:提示和训练。可以把这类比成教人做菜:一种是把菜谱贴在灶台边,每次做菜都得看着它;另一种是让人把菜谱背下来,以后不用带纸条。前者不动权重、随时可换,后者要把步骤真正写进脑子。

更自然的做法是直接问它要答案(标准提示)——但 PaLM 540B 这样问,在 GSM8K 上只能拿到 17.9%。原因是答题需要多步推导,而模型被训练的默认行为是「一次给一个 token」,中间步骤全被压进一步里、没有展开的空间;把 8 个带中间步骤的示范放进提示后,同一模型的同一批题就升到 56.9%——差的不是知识,而是「把中间步骤写出来」这件事本身。

🧮 供给账:提示法 vs 训练法
Step 1:两种供给方式在机制上差在哪
对比项提示(in-context)训练(写进权重)
改了什么只改本次输入改模型参数
推理时要不要带示范要,每次都要不要
能力上限受基座已有能力限制可把外部/自产的推理过程写进去
代价形态每次请求都付的"输入税"一次性数据与训练成本
关键差别:提示改的是这一次的输入,训练改的是以后所有次的默认行为。
Step 2:提示法的"输入税"具体是多少
项数值说明
示范条数(Wei 2022)8 条论文用的 exemplars
每条示范的 CoT 长度约 120 token(示意)长题更长,此处按题意估值
每次请求的固定输入开销8 × 120 = 960 token与题目本身无关
题目本身长度约 50 token(示意)一道应用题
输入放大倍数960 ÷ 50 ≈ 19 倍示意
960 与 19 是示意算例(示范长度按题意估值)。这里要看的不是精确数,而是这笔开销随请求次数线性增长:每天 100 万次请求,就是 9.6 亿 token 的额外输入。
Step 3:为什么提示只能"激发"、不能"创造"
问题读数来源
CoT 在什么规模上才有效小模型上收益很小甚至更差,约 100B 参数以上才出现正收益Wei 2022
论文评测的模型规模区间约 0.35B ~ 540B(含 LaMDA / GPT-3 / PaLM / UL2 / Codex 等多个家族,最小约 350M)Wei 2022
540B 标准提示(GSM8K)17.9%Wei 2022
540B + 8 个 CoT 示范56.9%(Google 博客记 58.1%)Wei 2022 / Google 官方博客
这说明提示法只能把基座里已有的能力"叫出来",不能凭空加。要把更强的推理过程装进去,就得动权重——这正是下一张卡片要回答的事。
🎯 关键认知

让模型写出中间步骤有两条路——提示(改输入、不动权重)和训练(改权重、推理时零开销)。提示法简单、随时可换,但有两条硬边界:① 每次请求都要付固定输入开销;② 只能激发基座已有的能力。"要足够大才会出现"这一点,正是它必须从"提示"走向"训练"的原因。

AI 助教
👋 对"一步步想"这件事有疑问?比如"Zero-shot CoT 行不行?""示范里的步骤写错了会怎样?"

我会用具体数字帮你算。
2
要想训练模型推理,奖励该从哪来?
提示:先想一件事——一道数学题的答案,机器能不能自己判对错?如果能,那还需要人去标注"哪个回答更好"吗?把这两种奖励的信号密度和成本摆在一起比。
▾
知识背景
RLVR(Reinforcement Learning with Verifiable Rewards,可验证奖励的强化学习)这个词由 Tulu 3(Lambert et al., arXiv:2411.15124, 2024-11)提出:它沿用 RLHF(即先让人给回答排序、再按这个偏好调模型的强化学习)的目标函数,只把"学出来的奖励模型"换成一个确定性的验证函数——回答经校验正确给 1、否则给 0。DeepSeek-R1-Zero 的奖励就只保留两项:正确性(数学按规则比对最终答案、代码跑测试用例)+ 格式(要求把思考放在 <think>、答案放在 <answer>),并明确不使用神经奖励模型,理由是它在长链推理上容易被钻空子。

上一张卡片我们看到:要把更强的推理过程装进去,就得动权重。可一旦要"训",第一个绕不开的环节就是奖励从哪来。

对齐那一课用的是"人类比较",但对数学题,比较是弱信号——两个错误答案之间"谁更好"意义不大,人还得读完整段推理才判得出来。可以把这类比成判卷:主观题必须请人阅卷,客观题只要对答案就行——能把自动判的题,就别浪费人的时间。所以做法是让程序直接判对错,把 RLHF 里那个学出来的奖励模型整个换掉——这样一来策略的 gradient 就只剩"对 / 错"这一个方向可爬。

🧮 三类奖励来源的账
Step 1:三种奖励信号放在一起比
奖励来源谁能给信号形态能自动规模化吗主要风险
人类偏好人工标注成对比较(哪个更好)否(贵、慢)标注噪声、偏好被"冗长"挟持
AI 偏好(RLAIF)强模型成对比较是继承强模型的偏见
可验证规则(RLVR)程序 / 测试用例对 = 1、错 = 0(二值)是只覆盖"能自动判对错"的题
三者的差别不在"信号强弱",而在谁能生产它:只有可验证规则能让奖励随题目数量自动扩张。
Step 2:一个验证器其实只做三件事
步骤做什么例子
extract(抽取)从回答里抓出被检查的那部分取出 <answer> 标签内、或 \boxed{} 里的内容
canonicalize(规范化)把无害的表面差异抹平「(2,3)」「{3,2}」「x=2, x=3」都归成集合 {2,3}
reward(给分)与标准答案比对相等给 1,否则给 0
具体例子:解 x² − 5x + 6 = 0,标准答案是 {2,3};模型写「x = 2 或 x = 3」也能得 1 分,因为规范化那一步把它变成了同一个集合。而形状对不上(标签写错、多了干扰文本)就会被判 0——奖励的漏洞往往就在这一步。
Step 3:为什么"1 比特"够用——信号量与题量的算术
项数值说明
一道题一次采样给的信号1 比特(对 / 错)二值奖励
一组采样(G = 8)给的信息8 个 0/1组内相对好坏由此算出
GSM8K 题库规模8,792 题(常引作 8.5K)Cobbe et al., 2021(7,473 训练 / 1,319 测试)
MATH 题库规模12,500 题Hendrycks et al., 2021(7,500 训练 / 5,000 测试)
两库可训练题合计7,473 + 7,500 = 14,973 题算术
单条奖励看着只有 1 比特,但它能在百万量级的题上自动生成;而偏好数据每个 prompt 都要人读两份回答。这就是 RLVR 能规模化的根本原因——不是信号更强,而是信号能自动产生。
🎯 关键认知

RLVR 换掉的不是算法,而是奖励的来源:把"学出来的偏好模型"换成"确定性的验证程序",奖励变成二值的 0/1。它的边界同样清楚——只在"能被程序判对错"的领域成立(数学、代码、形式化逻辑、结构化指令遵循);写作、开放问答这类没有唯一判据的任务,仍然得回到偏好奖励。奖励换成可验证的,才谈得上把 RL 的规模做大。

AI 助教
👋 对可验证奖励有疑问?比如"答案格式不统一怎么办?""开放题能不能也用规则判?"

我会用具体数字帮你算。
3
只有"对/错"信号,模型新长出的行为一定是"更会推理"吗?
提示:先想:如果只有最终对错的信号,模型要提高正确率,最省力的方向是什么?它会不会自己发现"多写一点、多想一遍"能让答对概率上升?
▾
知识背景
DeepSeek-R1-Zero(arXiv:2501.12948, 2025-01;后发表于 Nature 645:633–638, 2025)是第一个"纯 RL"路线:直接拿 DeepSeek-V3-Base 做 GRPO,不做任何 SFT(即监督微调,用示范答案训练)。它只用"答案对不对"这一条奖励,AIME 2024 的 pass@1 从 15.6% 升到 71.0%,多数投票后到 86.7%(口径说明:以上为 arXiv 技术报告读数;有资料称 Nature 正式版把 R1-Zero 的 AIME 2024 记为 77.9%,本课未取到 Nature 原表逐字核对,引用时请注明版本并人工核实)。训练中出现了被称为 "aha moment" 的现象:模型自发写出"Wait, wait…"式的自我质疑与回头重算。代价是输出可读性差、中英混杂——这也是后来 DeepSeek-R1 要加冷启动数据与多阶段训练的原因。

上一张卡片我们把奖励换成了可验证的对错。现在的问题是:只有对错,模型凭什么学会"想更久"?

先把"学"这件事讲清:组内相对优势只看"同一题里哪条回答更好",完全不关心它是怎么想出来的。可以把这类比成打靶训练:教练不点评姿势,只在命中时报一声"中"——练久了,你自己会摸索出更容易命中的姿势。于是策略的 gradient 只会沿着"更可能答对"的方向走;只要"想得更久"恰好与答对相关,它就会被反复强化。

更早、也更自然的做法是先做 SFT、把「怎么想」的示范喂进去——但那要有现成的高质量长链推理数据,而这类数据恰恰很贵、很难大规模获得。R1-Zero 反过来走:不加任何示范,只留「答案对不对」的 0/1 奖励,让基座自己从 15.6% 的起点摸索,最终把 AIME 2024 的 pass@1 推到 71.0%——自我检查、回溯都不是被教的,而是「更可能答对」被强化出来的副产品。

🧮 纯 RL 账:一条对错信号能走多远
Step 1:训练前后的读数
指标起点终点备注
AIME 2024 pass@115.6%71.0%单次采样答对率
AIME 2024 多数投票—86.7%论文称与 o1-0912 相当
pass@1 提升倍数—71.0 ÷ 15.6 ≈ 4.55 倍算术
起点 15.6% 是基座 DeepSeek-V3-Base 的水平(上表为 arXiv 技术报告口径,Nature 版读数见知识背景的口径说明)。整个过程没有任何关于"怎么想"的示范,只有答案对错的 0/1 奖励。
Step 2:奖励里到底有哪几项
奖励项类型作用
正确性规则校验(二值)数学比对最终答案、代码跑测试
格式规则校验(二值)要求把思考包在 <think>、答案包在 <answer>
神经奖励模型不使用论文明确排除,理由是长链推理下容易被钻空子
两条奖励都是程序可判的。格式奖励的存在说明一件事:即使"只想让它答对",也得先用格式把"思考"和"答案"切开——否则没法稳定地抽出答案来校验。
Step 3:涌现出来的行为,以及它的代价
现象说明代价
平均响应 token 数上升论文 Figure 3 记录训练全程平均响应长度持续增长推理成本随长度上升
自我检查 / 回溯出现"等一下,这里不对"式的回头重算重复劳动、偶发绕圈
可读性差 / 语言混杂R1-Zero 的已知缺陷难以直接上线,需后续阶段修
这里要小心一个因果误读:"变长"与"变强"是同时发生,不等于"变长"就是"变强"的原因——后续研究(arXiv:2503.20783)指出,"aha moment"式的自省痕迹在基座模型里也能找到。所以下一张卡片要专门算"长度"这笔账。
🎯 关键认知

R1-Zero 说明的是当奖励够纯、够可验证时,RL 能在基座之上自己找到提升路径——自我检查、回溯都不是被教的,而是"有利于答对"被强化的结果。但同时要记住两件事:① 这些行为的代价是输出变长、变难读;② "同时发生"不等于"因果"。把长度直接当成"变强的原因"去追求,正是下一张卡片的坑。

AI 助教
👋 对纯 RL 涌现有疑问?比如"为什么不做 SFT 反而更行?""aha moment 是真的顿悟吗?"

我会用具体数字帮你算。
4
模型发现"写更长"更容易得分之后,会发生什么?
提示:如果"长"和"对"在统计上相关,优化器会去优化哪一个?它分得清"因为想清楚了所以写长了"和"单纯写长"吗?想想损失函数里有没有跟长度有关的项。
▾
知识背景
Dr. GRPO(Sea AI Lab,arXiv:2503.20783, 2025-03)指出:GRPO 的目标函数里含长度项(逐条除以 |oi|)与标准差项,会产生有偏优化——答对时偏向短回答、答错时反而"越长越不吃亏",于是训练中错误回答的长度被一路拉长;去掉这两项归一化即得到无偏的 Dr. GRPO,它在 7B 基座上把 AIME 2024 做到 43.3%。这条线的另一支是 DAPO(ByteDance Seed + 清华 AIR,arXiv:2503.14476, 2025-03):它用 Overlong Reward Shaping 给超长输出一个"软惩罚区间",同规模下 AIME 2024 做到 50 分。

上一张卡片我们发现"平均响应长度"一路在涨。长度本身不是坏事,问题是——它也会被优化器当成捷径。

关键在损失怎么算:GRPO 会把一条回答的总损失按 token 数做归一化(normalization),而每条回答的贡献又要在组内取平均。可以把这类比成按"每道题的平均分"给班级排名:一个学生交的题越少,他每道题占的权重就越大——于是"少做题"意外变成了一种策略。所以只要长度进了分母或求和,它就不再是中性的,而是一个可以被优化的维度。

更早的做法是只用最终对错、对长度不加任何约束——看上去最干净,但损失里的长度项会悄悄把「答错就多写」变成划算的选择:同组里答错的回答从 100 个 token 拉到 300 个,每个 token 分到的惩罚就从 0.01 摊薄到 0.0033——总惩罚不变,但长回答的逐 token 梯度被摊薄了。训练越久,错误回答被拉得越长。

🧮 长度偏差账:一条"越长越不吃亏"的路径
Step 1:分母效应具体长什么样
回答结果token 数组内优势 A逐 token 权重
①对100+11 ÷ 100 = 0.010
②错300−1−1 ÷ 300 = −0.0033
③对300+11 ÷ 300 = 0.0033
前提是沿用第 11 课 Card 6 的组内归一化(设同组 2 对 2 错,则答对优势 +1、答错 −1)——两两对照才说明问题:同为答对时,短回答每 token 权重更大(① 的 0.010 > ③ 的 0.0033);答错时权重为负(② 的 −0.0033),回答越长,每个 token 被罚得越轻——于是"答错就写更长"变成了摊薄逐 token 梯度的办法(总惩罚不变)。
Step 2:换一种损失口径会怎样
口径逐 token 权重对长度的偏好
样本级(除以 |oi| 再组内平均)1 / |oi| × Ai答错时偏向长回答
token 级(全批总 token 归一)1 / Σ|oj| × Ai长度不再进分母,偏差消除
DAPO 的超长奖励塑形超过软阈值后奖励线性下降给"过长"一个连续代价
三者是三种不同思路:Dr. GRPO 直接删掉长度归一化;DAPO 则保留长度作为显式惩罚项(超过软阈值后线性加重,到硬上限截断)。一个是"别让它进分母",一个是"给它标个价"。
Step 3:这条线在榜单上的读数
方案基座AIME 2024备注
朴素 GRPO 复现Qwen2.5-32B30 分DAPO 论文自述的起点
DeepSeek-R1-Zero-Qwen-32B(Qwen 基座复现)Qwen-32B47 分非官方 V3-Base 版;官方 R1-Zero 的读数见 Card 3(71.0%)
DAPOQwen2.5-32B50 分只用了一半训练步数
Dr. GRPOQwen2.5-Math-7B43.3%7B 规模
读表要注意两点:① 前三行同为 32B 量级(30 → 47 → 50),可以横向比;第 4 行是 7B 规模,不能与前三行直接比。② 第 2 行的 47 分来自社区用 Qwen-32B 复现的 R1-Zero 配方,与 Card 3 里官方 R1-Zero 的 71.0% 不是同一个模型。另一侧的成本证据是:推理模型在 AIME 上的输出长度可达同规模 instruct 模型的 5~10 倍(arXiv:2505.22017 v1 引言)——这正是下一张卡片要算的账。
🎯 关键认知

长度膨胀不是"模型变啰嗦"的性格问题,而是目标函数里的结构性偏差:只要长度以分母或求和的形式进入损失,优化器就有动机去操纵它。处置方式有两条——把长度从归一化里拿掉(Dr. GRPO),或给它一个显式价格(DAPO 的超长惩罚)。两条路指向同一件事:凡是能被优化的量,都必须先想清楚给它定的价对不对。

AI 助教
👋 对长度膨胀有疑问?比如"长度惩罚会不会把它压得太短?""为什么简单题也写很长?"

我会用具体数字帮你算。
5
让模型多想一会儿确实更准,那这笔思考预算,能不能花得更聪明一点?
提示:花同样的算力,是让一个模型想 10 倍久更好,还是并行采 10 个答案再投票更好?还有——难题和简单题,该给一样的预算吗?
▾
知识背景
OpenAI o1(2024-09-12 发布)第一次把"测试时算力"讲成一条独立的路:用大规模 RL 训练模型"用思维链思考",并报告性能随训练时算力与测试时算力同时提升。把它系统化的两项工作:Snell et al.(arXiv:2408.03314, 2024-08)发现"按题目难度自适应分配"的 compute-optimal 策略,效率比 best-of-N 高 4 倍以上,在 FLOPs 匹配时可超过 14 倍大的模型;s1(Muennighoff et al., arXiv:2501.19393, 2025-01)只用 1,000 条样本微调 + budget forcing(模型想收尾时强行续写"Wait"以延长思考),在竞赛数学上最多超过 o1-preview 27%。

上一张卡片我们算清了"想太久"的代价。既然长度既是成本、又能换来能力,那正确的问法就不是"要不要想久",而是这笔预算怎么分配。

三种花法摆在一起看:串行(一条回答想更久)、并行(多条独立回答,投票或挑最好的)、验证器搜索(让另一个模型逐步打分并剪枝)。可以把这类比成解题时间:你可以一道题死磕一小时,也可以十分钟做一份、做四份再对答案——哪种更划算,取决于这道题值不值得死磕。

🧮 推理预算账:四种花法,一张账单
Step 1:四种策略在同样的算力下差在哪
策略怎么花算力需要的额外组件典型适用
串行延长(budget forcing)把单条思考拉长(续写"Wait")无难题、单次生成
并行采样 + 多数投票同题采 N 条,取出现最多的答案无答案短、可投票
best-of-N采 N 条,用打分器挑最好打分器(奖励/验证模型)有可靠打分器
验证器搜索(PRM/ORM:PRM = 对每一步中间推理打分的奖励模型;ORM = 只看最终答案对错的奖励模型)逐步打分 + 剪枝 / 回溯过程奖励模型步骤可判的推理
四种都要花算力,区别在于算力花在"更长"还是"更多",以及要不要额外训练一个打分器。
Step 2:一次具体走查——"想更久"能换多少分
项数值说明
基准思考长度约 800 token(示意)单条回答的平均长度
延长后思考长度约 3,200 token拉长 4 倍
AIME24 pass@150% → 57%s1 项目页报告的 budget forcing 外推读数(论文口径为 56.7%,arXiv:2501.19393)
AIME24 题量15 题 / 年官方赛制
换算成题15 × (57% − 50%) = 1.05 题算术
额外 token15 × (3,200 − 800) = 36,000 token按示意长度算
这条走查要说明的是边际收益的形状:思考长度翻 4 倍,换来的是 1 道题左右的差距(15 题的小样本还带统计噪声)。所以"多想"既不免费、也不线性——800 与 3,200 是示意值(论文未逐题给出长度),但"投入翻几倍、收益只有几个百分点"这个形状来自论文结论。
Step 3:为什么"按难度分配"更划算
题目难度加算力的收益该怎么做
简单(模型本来就对)接近 0,甚至变差(绕圈)不要加预算
中等(有时对有时错)最高加预算最划算
过难(几乎总错)很低加预算也难救
Snell 等给出的 compute-optimal 分配之所以比 best-of-N 效率高 4 倍以上,靠的就是这件事:把算力从"已经会"和"怎么想都不会"的题上挪开,集中到"差一点就能对"的题上。这也解释了为什么"统一加长思考"是一种浪费。
🎯 关键认知

test-time scaling 不是"想得越久越好",而是一笔要按题分配的预算。同一份算力,串行拉长、并行投票、验证器搜索各有适用面;而最关键的旋钮是"把预算给哪些题"——按难度自适应分配,效率能比均匀分配高数倍。这也给工程上留下空间:思考长度、context 占用与单位成本,其实是同一个旋钮的三个面。

AI 助教
👋 对推理预算有疑问?比如"怎么判断一道题值不值得加预算?""投票和延长能叠加吗?"

我会用具体数字帮你算。
6
大模型花长思考换来的推理能力,能不能直接"搬"进一个 7B 模型的权重里?
提示:先想两条路——让 7B 模仿大模型的完整思考轨迹,还是给 7B 同样的奖励让它自己 RL?这两条路的数据成本、上限、风险各是什么?
▾
知识背景
DeepSeek-R1 的蒸馏走的是第一条路:用 R1 生成约 80 万条蒸馏样本(约 60 万推理 + 20 万通用),只做 SFT、不做 RL,得到 1.5B / 7B / 8B / 14B / 32B / 70B 六个稠密模型(基座为 Qwen2.5 与 Llama)。论文给出的关键结论是:以 Qwen2.5-32B 为基座时,直接蒸馏 R1 的效果优于在该基座上直接做 RL。其中 R1-Distill-Qwen-7B 报告 MATH-500 92.8%、AIME 2024 55.5%、GPQA Diamond 49.1%。

上一张卡片我们把"想多久"算成了一笔预算。那还有一条更省的路:不让小模型自己想,而是让它学会大模型怎么想。

这里有两种"搬"的方式,容易混:经典的知识蒸馏让学生的 logits 去逼近教师的 logits 分布(学的是"每个位置上老师会怎么选");而 R1 蒸馏是小模型直接模仿教师写出来的思考轨迹(一条条 token 序列)。可以把这类比成学做菜:前者是站在旁边看师傅每一步的手感,后者是照着师傅写好的菜谱一句句练。因此后者的实现简单得多——它就是一次普通的 SFT。

更自然的做法是让 7B 也自己跑 RL(和训大模型一样的流程)——但那需要环境、验证器与持续的在线采样,成本随采样量线性增长,7B 靠自己探索的上限也更低。R1 蒸馏先用 671B 的 R1 生成约 80 万条轨迹,小模型只做一次 SFT 就拿到 AIME 2024 55.5%——用一次性、可预估的离线成本,换教师已经探明的那条路径。

🧮 蒸馏账:把 671B 的思考装进 7B
Step 1:这批数据是什么、有多大
项数值说明
总样本约 80 万条R1 生成(论文口径)
其中推理相关约 60 万条论文口径
其余(通用类)约 20 万条由 80 − 60 推得,具体构成以论文原表为准
训练方式只做 SFT,不做 RL关键差别
80 万 − 60 万 = 20 万。注意这是一次性离线数据:没有环境、没有验证器、没有在线采样——这既是它便宜的原因,也是它上限的来源。
Step 2:效果对比(7B 量级)
模型规模AIME 2024 pass@1MATH-500训练方式
DeepSeek-R1671B 总 / 37B 激活79.8%97.3%多阶段 RL
R1-Distill-Qwen-7B7B 稠密55.5%92.8%纯 SFT 蒸馏
R1-Distill-Qwen-7B(cons@64)7B 稠密83.3%—推理时多数投票
一个 7B 稠密模型靠模仿拿到 55.5%(单次)/ 83.3%(多数投票);参数规模差接近两个数量级(按总参数 671B vs 7B ≈ 96 倍;按激活参数 37B vs 7B ≈ 5 倍),分数差只有二十几个百分点——这就是"把推理过程当数据"的杠杆。
Step 3:两条路怎么选
维度蒸馏(模仿轨迹)RL(自己探索)
需要什么教师 + 一次 SFT环境 / 验证器 + 在线采样
成本形态一次性、可预估持续、随采样量增长
上限受教师限制可能超过教师(R1-Zero 从 15.6% 一路爬到 71.0%)
风险会把教师的坏习惯一起学走长度膨胀、训练不稳
论文里一个反直觉的结论值得记住:在强基座上,蒸馏可以比 RL 更有效——因为教师已经把"该往哪想"探索完了,学生只需高效复制这条路径。反过来,要把上限再往上推,就只能靠 RL。
🎯 关键认知

蒸馏和 RL 不是替代关系,而是两种不同的"思考从哪来":蒸馏把已有的推理模式高效复制到小模型(便宜、可预估、上限被教师封顶);RL 则让模型自己探索(贵、可能超车,但更容易踩长度膨胀这类坑)。工程上常见的组合是:先用 RL 把大模型的上限推上去,再蒸馏给小模型落地。

AI 助教
👋 对蒸馏有疑问?比如"为什么蒸馏不用 RL 也能这么强?""蒸馏能超过教师吗?"

我会用具体数字帮你算。