
大家好,我是肆〇柒。我看到一项来自 Thinking Machines Lab 的前沿研究——《On-Policy Distillation》。这项工作巧妙融合了强化学习的策略内采样优势与知识蒸馏的稠密监督信号,不仅将后训练成本降至传统 RL 的十分之一,还在数学推理、个性化助手和持续学习等关键场景中展现出惊人的效率与稳定性。如果你正为小模型难以复刻大模型的“专家行为”而苦恼,这篇文章或许能对你有所帮助。
我们先看一个题目:
Prompt:Evaluate the limit:
这道题的答案是2/3 ,但解法需要多步代数技巧:先对立方根差进行有理化,再展开近似。若模型在第一步错误地合并根号(如误写
),后续无论多么"自信"地推导,答案必错。
在数学推理、医疗信息提取、企业知识问答等垂直领域,一个精心训练的 8B 小模型常优于通用 70B 大模型。但如何高效教会它"专家行为"?核心问题在于:如何高效地把大模型的能力"教"给小模型?
核心问题:如何高效地把大模型的能力"教"给小模型?
传统方法有两种,各有优劣:
方法 | 原理 | 优点 | 缺点 |
监督微调(SFT) | 让小模型模仿大模型生成的"标准答案" | 简单、训练稳定 | 小模型容易"学歪",因为它没见过自己犯的错误 |
强化学习(RL) | 让小模型自己尝试,靠最终成败来打分 | 能纠正自身错误 | 反馈太稀疏,训练慢、贵、难调 |
LLM(Large Language Model)的能力构建分为三阶段:
- Pre-training:习得语言、常识与通用推理。这个阶段主要教授一些通用的能力,例如语言的使用,即模型能够理解和生成语言;还包括广泛的推理能力,使模型能够进行一般性的逻辑思考和判断;以及世界知识,让模型对各种常见的事物、现象等有一定的了解和认知。
- Mid-training:注入领域知识(如代码、医学数据库、公司内部文档)。在这个阶段,会向模型传授特定领域的知识。比如代码,使模型能够理解和生成编程相关的代码内容;医学数据库,让模型掌握医学领域的专业知识和数据;或者公司内部文档,使模型熟悉公司内部的业务流程、规章制度等特定信息。
- Post-training:对齐目标行为(如指令遵循、数学推理格式、多轮对话风格)。此阶段的目的是激发模型产生特定的目标行为。例如指令遵循,模型能够按照给出的指令去执行相应的操作;进行数学推理,模型能够解决数学问题;或者进行聊天,使模型具备与人进行自然对话的能力。
以上,怎么理解除了 pre-training 以外的后两个阶段的训练?👇
关键区分:Mid-training 关注"知道什么",Post-training 关注"如何做"。
以刚才的题目为例:
- Pre-training 使模型理解"lim"、"√x"等符号;
- Mid-training 可能引入更多微积分知识;
- Post-training 则需教会模型如何组织解题步骤——何时有理化?如何避免符号错误?
为何 Off-policy 方法(SFT)难以培养"专家行为"?
设想一位数学老师正在指导学生解题:老师写下完整解题过程,学生照着抄写。这看似合理,但存在一个关键问题——当学生在第一步就犯错(如错误合并根号),后续轨迹将进入教师从未见过的状态,误差迅速累积。
在技术层面,SFT 通过模仿教师生成的完整轨迹进行训练。教师模型(如 Qwen3-32B)会输出完整解题过程,学生(如 Qwen3-8B)则学习复制。其优势在于提供稠密监督:每个 Token 都有明确目标。
但问题在于:训练分布 ≠ 推理分布。当学生在推理时因早期错误进入教师从未见过的状态,后续生成将持续偏离,即 误差累积。在长序列中,这种效应尤为致命。
更微妙的是,学生可能仅学到教师的风格与自信,而非事实准确性。例如,学生可能学会在解题中使用"显然"、"易得"等短语,却在关键步骤犯错——这正是 《The False Promise of Imitating Proprietary LLMs》 所揭示的"模仿幻觉"。(论文地址:https://arxiv.org/abs/2305.15717)
一个关键的实证观察是,SFT 的性能提升遵循可预测的对数线性缩放曲线。在数学推理任务中,经过最初的 50-100K 样本后,模型性能的提升变得极其昂贵。

离策略蒸馏的对数线性缩放
这意味着,要将 AIME'24 基准上的得分从 60% 提升到 70%,可能需要将训练数据量增加近 5 倍。这种低效性在使用 LoRA 等参数高效微调方法时更为明显,在大规模、高批量的 SFT 场景下,LoRA 的性能会显著落后于全参数微调。
为何 On-policy 方法(RL)效率低下?
如果 SFT 是"抄作业",那么 RL 更像是"只告诉学生对错,却不指出错误在哪"。

在上面这个题目中,学生得出"21"这个错误答案,RL 仅告知"错误",却无法指出是"运算顺序"还是"算术错误"导致失败。

技术上,RL 基于学生自身 rollout 赋予序列级奖励。学生尝试解题,若最终答案正确则获正奖励。其优势在于始终在学生实际会遇到的状态下训练,避免分布偏移。
但反馈极度稀疏——每 episode 仅传递 O(1) bits 信息(无论生成多少 Token)。在解题时,一个 500 Token 的解题过程,RL 仅提供 1 比特信息。想想,这个奖励策略有木有一点像一个不耐烦的老师,只说对错,不多说一句话。
一个直观类比是学下棋:SFT 相当于观看大师棋谱,但新手很难复现大师所处的棋局;RL 则如同自己对弈,仅知输赢,却不知哪步是败招。理想方法应是有人实时点评你的每一步,才能真正学到下棋。

chess-国际象棋
On-Policy Distillation 的核心机制:稠密监督与策略内采样的精妙融合
On-Policy Distillation 的核心思想可概括为:采样自学生(on-policy) + 评分自教师(dense)。也就是从学生模型中采样轨迹,并使用高性能的教师模型对每个轨迹的每个token进行评分。
"就像学下棋时,每一步都有老师告诉你'这步是臭棋'还是'好棋',而不是等整盘棋下完才知道输赢。"

仍以刚才的题为例,策略蒸馏会对解决方案的每一步进行评分,惩罚导致学生得出错误答案的错误,同时强化执行正确的步骤。
- 行为:学生生成完整解题过程,如 "Let's combine the cube roots → get ∛2 → multiply by √x → answer 21";
- 反馈:教师对轨迹中每个 Token 计算 log-prob,提供细粒度评分;
- 更新:损失函数驱动学生在每一步更接近教师分布。

on-policy-distillation
三步实现:采样、评分、更新
On-Policy Distillation 的实现过程可清晰分为三步:
1. 采样:让小模型(学生)自己生成一段回答(轨迹)。
- 与 RL 完全一致:使用当前学生策略生成完整或部分响应。
- 关键区别:Tinker 在采样时已自动记录每个 Token 的 log-prob(用于 importance sampling)。
2. 评分:把这段回答送给大模型(老师),让它对每个 token 打分。
- 教师模型对轨迹中每个 Token 计算 log-prob,提供细粒度反馈。
- 计算"学生分布"与"教师分布"的差异(用 reverse KL 散度)。
3. 更新:用这些逐 token 的误差信号去更新小模型。
- 损失函数驱动学生在每一步更接近教师分布。
- 将负 Reverse KL 作为 per-token advantage,调用标准 importance-sampling loss 更新学生。
为何 Reverse KL 是技术突破的关键?
公式如下:

选择 Reverse KL 而非标准 KL 散度有三重深意:
1. Mode-seeking 特性:Reverse KL 会迫使学生集中概率质量于教师的最优行为模式,而非在多种可能间平均分布。在解题中,教师在"combine"处高概率输出"rationalize",Reverse KL 迫使学生在此处集中概率质量于"rationalize",而非在"combine"、"simplify"、"expand"等多种次优操作间分散。这种特性至关重要——在专家行为中,往往存在唯一最优路径,而非多种等效解法。例如,解题中"有理化"是关键步骤,其他路径几乎必然导致错误。
2. 与 RL 的天然兼容性:RL 本质优化序列级 reverse KL,此处扩展至 Token 级,形成稠密版本。这使得 On-Policy Distillation 能无缝集成到现有 RL 训练栈中。
3. "不可欺骗"性:KL 值低 ⇨ 行为高概率符合教师偏好。学生无法通过"投机取巧"获得高分——必须真正理解每一步的正确性。
工程实现上,作者采用 discount factor = 0,即每个 timestep 仅优化 immediate next token。实践中发现此简化未损失性能,反而提升稳定性与实现简洁性。
教师模型的灵活性:不止于"大教小"
教师模型的选择具有高度灵活性:
- 教师可以是更大更强的模型(如 32B → 8B);
- 也可以是学生自身的历史版本(自蒸馏),只要其在目标任务上表现可靠。
在持续学习场景中,原始 Qwen3-8B 可作为知识注入后的 Qwen3-8B 的教师。这种"自蒸馏"机制为持续学习提供了新思路:模型可以不断"回忆"自己的早期能力,避免能力遗忘。
工程实现优势:与现有技术栈的完美融合
On-Policy Distillation 的工程实现优势显著:
- 无需等待完整 rollout,支持部分序列训练;
- 仅需教师模型的 compute_logprobs 接口,无需额外奖励模型;
- 与现有 RL 训练栈(如 Tinker)高度兼容,代码改动极小。
伪代码清晰展示了其可实施性(基于 Tinker API):
复制本质上,仅需将 RL 中的 KL 正则项替换为教师模型,即可复用整个训练基础设施。这种设计使得 On-Policy Distillation 能够被快速集成到现有训练流程中,大幅降低实施门槛。
实证验证:三大关键场景下的性能与效率优势
场景一:数学推理能力蒸馏(AIME'24 基准)
研究以 Qwen3-8B-Base 为学生,Qwen3-32B 为教师,在 AIME'24 上评估。
- 基线:经 400K SFT 后达 60%;
- Off-policy 蒸馏:外推至 70% 需 ~2M 样本;
- RL:消耗 17,920 GPU 小时 → 67.6%;
- On-Policy Distillation:仅用 1,800 GPU 小时(成本降低 9–30×),达成 74.4%。
150 训练步内收敛,验证其高样本效率。若计入教师生成 SFT 数据的成本,总成本优势可达 30 倍。
Method | AIME'24 | Teacher FLOPs | Student FLOPs | Cost Efficiency vs SFT-2M |
Initialization: SFT-400K | 60% | 8.5 × 10^20 | 3.8 × 10^20 | – |
SFT-2M (extrapolated) | ~70% | 3.4 × 10^21 | 1.5 × 10^21 | 1× |
Reinforcement learning | 68% | - | - | ≈1× |
On-policy distillation | 70% | 8.4 × 10^19 | 8.2 × 10^19 | 9-30× |
更值得注意的是,这种效率提升并非偶然。研究通过对比实验发现,当 SFT 初始化较强时(即教师策略在学生策略的支持范围内),On-Policy Distillation 能以更小的批量大小有效工作,因为其每 episode 提供的比特信息量显著更多,从而减少了梯度噪声。

策略内蒸馏的计算效率这一优势在使用 LoRA 时尤为突出。在 SFT 中,LoRA 模型(rank=32)性能比全参数微调落后 13%,但在 On-Policy Distillation 后,差距缩小到仅 6%,证明了稠密监督能极大提升参数高效微调方法的效果。
场景二:个性化助手的能力恢复(企业知识 + 指令遵循)
在企业助手场景中,模型需同时具备内部知识与指令遵循能力。
- 初始 Qwen3-8B:IF-eval(指令遵循)85%,Internal QA(知识)18%;
- 经 100% 内部文档 Mid-training 后:IF-eval 暴跌至 45%,Internal QA 升至 43%。
为恢复行为能力,研究者采用 自蒸馏:以原始 Qwen3-8B 为教师,对 Tulu3 prompts 进行 On-Policy Distillation。
结果显著:IF-eval 恢复至 83%,Internal QA 保持 41%(无遗忘)。
Model | Internal QA Eval (Knowledge) | IF-eval (Chat) |
Qwen3-8B | 18% | 85% |
+ midtrain (100%) | 43% | 45% |
+ midtrain (70%) | 36% | 79% |
+ midtrain (70%) + distill | 41% | 83% |
这一结果揭示了 On-Policy Distillation 在持续学习中的巨大潜力:通过交替进行"知识注入"与"行为召回",模型能够不断更新知识库,同时保持原有的行为能力。这种循环机制为构建能够持续学习的 AI 系统提供了可行路径。
然而,知识注入的过程本身充满挑战。

内部文档与聊天数据比例扫描实验表明,尽管混入少量聊天数据有助于防止灾难性遗忘,但没有任何比例能完全维持原始的 IF-eval 性能。

IF-eval在中期训练中的下降即使使用线性学习率衰减,性能在短暂持平后也仅能缓慢恢复,永远无法回到初始水平。

LoRA在个性化中期训练中的表现使用 LoRA 等轻量级方法也无法解决此问题,它在学习新知识的同时,依然会遗忘原有的后训练行为。
场景三:极端数据效率——单 Prompt 也能有效训练
为验证数据效率,实验仅使用一个 Prompt:
"Evaluate the limit: "
训练 20 步,共 5120 条 rollout。尽管训练数据极度有限,学生模型性能仍逼近教师水平。

单样本多轮训练这一结果的意义远超表面:它证明 On-Policy Distillation 具备强抗过拟合能力与高效数据复用性。与 RL 不同,On-Policy Distillation 不会简单记忆最终答案,而是学习教师的完整解题策略。在极限题中,学生学会了"有理化"是关键步骤,而非盲目尝试不同解法。
研究者还提供了一个真实案例:在 SimpleBench 测试中,学生模型(Qwen3-4B-Instruct-2507)错误地将物理问题("冰块在煎锅中会融化,因此数量为0")视为纯数学问题。教师模型(Qwen3-235B-A22B-Instruct-2507)对导致错误的关键 Token(如"treat this as a pure math problem")进行了重罚,而对后续可预测的错误 Token 惩罚较轻。这种细粒度反馈使学生能够精准修正错误,而非全盘否定。

illustration
深层洞见:On-Policy Distillation 高效背后的原理
信息效率视角:从 O(1) 到 O(N) 的飞跃
RL 每 episode 仅传递 O(1) bits(最终对错),而 On-Policy Distillation 传递 O(N) bits(N = Token 数)。以极限题为例,一个 500 Token 的解题过程,RL 仅提供 1 比特信息,而 On-Policy Distillation 提供约 500 比特。这种稠密监督极大提升梯度信噪比。

RL与策略内蒸馏的步骤对比研究者通过直接对比实验验证了这一点:当从相同的基础模型(Qwen3-8B-Base)开始,On-Policy Distillation 仅需 10 步就能达到 RL 需要 70 步才能达到的性能水平。累计计算效率提升达 50-100 倍,原因在于:
- RL 需要在接近评估上下文长度的情况下训练(以避免格式惩罚),而 On-Policy Distillation 可以在较短上下文长度下有效学习;
- 当 SFT 初始化较强时,On-Policy Distillation 能以更小的批量大小工作,进一步减少梯度噪声。
RL 的本质是"策略搜索":On-Policy Distillation 如何跳过中间探索
RL 的本质不是参数优化,而是在语义策略空间中搜索。在极限题中,RL 不是在学习"如何求导",而是在尝试不同的解题路径组合。一旦发现有效策略,蒸馏则成为直接压缩该策略的捷径,跳过中间探索过程。
类比:科学研究需大量试错才能发现新定理,但教学只需传递结论。RL 类似于发现过程,而 On-Policy Distillation 类似于教学过程。
研究者通过分析发现,RL 的大部分计算消耗在 rollout 和信用分配上,而非实际的参数更新。Pre-training 探索的是高维参数空间,而 RL 探索的是语义策略空间——它随机尝试从已有权重集中采样的小修改,通过"运气"发现新策略。
一旦找到好的策略,On-Policy Distillation 就无需模拟 RL 的中间探索过程,而是直接学习最终策略。这在生产环境中尤为重要——我们通常只关心最终策略,而非中间探索路径。
持续学习中的稳定性优势:为何 On-Policy Distillation 不会遗忘
即使 SFT 使用"自身生成数据"(理论 KL=0),也会因批次噪声导致策略漂移。每个小批量数据都会因随机性而略有不同,使训练逐渐变为 off-policy。

在自身样本上进行SFT导致性能下降实验证明,即使使用模型自身生成的数据进行 SFT,只要学习率不为零,IF-eval 性能就会下降。这是因为有限批次会引入分布偏移,导致模型逐渐偏离原始策略。
而 On-Policy Distillation 因教师固定、采样始终 on-policy,天然避免分布偏移,实现稳定收敛。研究者通过实验验证:当使用 Qwen3-32B 自身生成的数据进行 SFT 时,即使 KL 在期望上为零,实际训练仍会导致性能下降。这是因为有限批次会引入分布偏移,导致模型逐渐偏离原始策略。
相比之下,On-Policy Distillation 始终保持 on-policy 特性,且教师策略固定不变,使学生能够稳定收敛到教师行为,不会出现性能退化。这使其成为持续学习的理想工具——模型可以在学习新知识的同时,保持原有能力。
On-Policy Distillation 应用流程
对于希望在实际项目中应用该方法的工程师或研究者,以下是一份可能的完整实现指南,包含了关键设计考量。
步骤 1:初始化教师客户端
教师模型可以是更大更强的模型(如 Qwen3-32B),也可以是学生的历史版本(用于自蒸馏)。关键在于,教师只需提供 compute_logprobs 接口,无需参与训练计算图。
复制设计考量:教师模型无需反向传播支持,因此可以独立部署,甚至使用不同框架。这使得教师模型可以是闭源模型(只要提供 logprob 计算接口),极大扩展了应用场景。
步骤 2:从学生模型采样轨迹(on-policy rollout)
与 RL 完全一致:使用当前学生策略生成完整或部分响应。关键区别在于,Tinker 在采样时已自动记录每个 Token 的 log-prob(用于 importance sampling)。
复制设计考量:采样完全 on-policy,确保训练分布 = 推理分布。这避免了 SFT 中的误差累积问题。实际应用中,可以设置最大采样长度,支持部分序列训练,提高效率。
步骤 3:教师对轨迹计算每 Token 的 log-prob
将学生生成的 Token 序列输入教师模型,获取教师在相同前缀下对每个 Token 的 log-prob。
复制关键:
- 教师看到的是学生实际生成的序列,而非理想轨迹;
- 惩罚集中在"forking tokens"(如"combine" vs "rationalize"),而非最终答案;
- 单次前向 pass 即可完成,计算开销远低于 RL 的 reward model 或人工标注。
上文已聊到过,这种设计使 On-Policy Distillation 能够有效处理"学生早期出错"的情况。当学生在关键步骤(如极限题中的"有理化")犯错时,教师会对此 Token 重罚,但对后续可预测的错误 Token 惩罚较轻,使学生能够精准修正错误,而非全盘否定。
步骤 4:使用 RL 损失函数更新学生
将负 Reverse KL 作为 per-token advantage,调用标准 importance-sampling loss 更新学生。
复制设计考量:整个流程复用 RL 训练栈,代码改动仅需替换 reward 计算逻辑。这种设计使得 On-Policy Distillation 能够被快速集成到现有训练流程中。
何时使用 On-Policy Distillation?关键决策点
1. 已有教师模型:任何指令微调模型均可作为教师,通过 compute_logprobs 接口提供监督;
2. Post-training 阶段:适用于 Mid-training 之后的行为对齐;
3. 持续学习场景:交替进行"知识注入(Mid-training)"与"行为召回(On-Policy Distillation)";
4. 数据稀缺场景:单 Prompt 多次采样即可有效训练。
特别值得注意的是,在持续学习场景中,On-Policy Distillation 表现出独特优势。当模型通过 Mid-training 获取新知识后,往往会导致原有能力(如指令遵循)退化。此时,使用原始模型作为教师进行 On-Policy Distillation,可以高效恢复原有能力,而不会丢失新获取的知识。
实践建议:提升效果的关键技巧
1. 教师模型选择:当学生缺乏相关领域知识时(概率支持集为零),建议先进行少量 SFT 扩展支持集,再应用 On-Policy Distillation 进行模式搜索。
2. 批量大小调整:当 SFT 初始化较强时,可以使用更小的批量大小,因为稠密监督减少了梯度噪声。
3. 部分序列训练:无需等待完整 rollout,支持部分序列训练,提高数据利用效率。
4. 混合奖励信号:虽然这个研究主要使用纯 distillation 信号,但可以考虑将 distillation-based per-token rewards 与序列级环境奖励结合,进一步提升效果。
范式升级与实践启示
On-Policy Distillation的本质是在强化学习框架下运行,但它将传统RL中“整条轨迹只给一个标量奖励”的稀疏信号,替换为“每个Token都以教师分布为即时奖励”的密集信号。从形式化角度看,它完全符合 RL 范式:状态是已生成的文本前缀,动作是下一个 Token,策略是学生模型,而奖励 正是 Reverse KL 的逐项。目标仍是最大化累积奖励,仅需通过重要性采样进行策略梯度更新。
相对“传统 RL”,我做了一个简单对比,如下表:
维度 | 传统 RL | 策略内蒸馏 |
奖励来源 | 环境或规则给出的稀疏标量 | 教师模型给出的逐 token log-prob 差 |
奖励密度 | 1/整条回答 | 每生成一个 token 就有 |
探索方式 | 随机采样 + 奖励驱动 | 直接让学生在教师分布内“做对齐” |
方差 | 高(稀疏奖励) | 低(密集监督) |
收敛速度 | 慢 | 快 7–10× |
实现成本 | 需价值网络、奖励模型、大量 rollout | 只需教师 log-prob,一次前向即可 |
On-Policy Distillation是把“环境给的稀疏奖励”换成了“教师模型给的逐 token 密集奖励”,因此既保留了 RL“在自己犯的错误上改正”的优点,又避免了奖励稀疏带来的样本效率低问题,从而实现高效知识迁移。
那么,,它跟纯蒸馏的区别在哪?如下:
维度 | 纯蒸馏(SFT) | 在线策略蒸馏 |
数据分布 | 教师生成的固定数据集(off-policy) | 学生自己生成的实时轨迹(on-policy) |
上下文差异 | 学生可能从未见过“自己犯错”的状态 | 学生就在自己易错的状态上得到纠正 |
误差累积 | 会,长链推理越错越远 | 几乎不会,每一步都拉回教师分布 |
这一设计成功融合了 on-policy 训练的可靠性与蒸馏的稠密监督效率,为 Post-training 提供了一条高性价比路径。与传统 RL 相比,它无需奖励模型或价值网络,仅靠教师的一次前向计算即可获得低方差、高密度的反馈,收敛速度提升 7–10 倍;与纯 SFT 相比,它始终在学生自身生成的轨迹上训练,有效避免了 off-policy 导致的误差累积与分布偏移。这成为一种经济且强大的后训练方法,因为它结合了策略训练的优势和密集的奖励信号。

对AI从业者而言,该方法可以给我们带来三大启示:
1. 小模型 + 强后训练 > 大模型 + 弱对齐:通过 On-Policy Distillation,8B 小模型在数学推理等垂直领域能超越 32B 大模型。这意味着,针对特定任务精心设计的训练流程,可以弥补模型规模的差距。
2. 模型自身即奖励源:任何指令微调模型均可通过 compute_logprobs 充当教师,大幅降低对人工标注和复杂奖励模型的依赖。这为资源有限的团队提供了可行路径。
3. 持续学习新范式:通过"Mid-training + On-Policy Distillation"循环,实现知识更新与能力保留的统一。这种机制为构建能够持续进化的 AI 系统奠定了基础。
在算力成本日益敏感的今天,On-Policy Distillation 为非前沿实验提供了训练专家级小模型的可行路径。它不仅降低了技术门槛,还开辟了新的可能性——让小模型在特定领域发挥大作用。
最终,On-Policy Distillation 的意义不仅在于技术本身,更在于它代表了一种思维方式的转变:从单纯追求模型规模,转向更智能的训练方法。正如研究者在科学发现中,会花费大量时间和资源寻找答案,但一旦发现,教学就变得简单得多。On-Policy Distillation 正是这种"教学"思维在 AI 训练中的体现——它不追求从零开始探索,而是高效传递已知的专家知识。
On-Policy Distillation = 用"大模型当老师,小模型当学生",让学生自己写作业,老师逐字批改,学得又快又好还不贵。
让小模型,大有可为。
