#On-Policy Distillation:从模型压缩到 Agent 自我进化的蒸馏范式
#一句话核心结论
On-Policy Distillation(OPD)最重要的变化不是“蒸馏对象变了”,而是“蒸馏发生的位置变了”:它不再只让学生模型模仿教师模型预先生成的静态数据,而是让学生先在自己的行为分布上暴露错误,再由教师、奖励模型、验证器或人类反馈提供密集监督,最后把这些纠正重新蒸馏回模型。
因此,OPD 可以被看作几条路线的交汇点:
- 它继承了传统知识蒸馏的稳定性和工程可控性;
- 它继承了 on-policy RL 贴近真实部署分布的优点;
- 它避免了 RL 只提供稀疏 reward 的低效问题;
- 它天然适合 personal agent / self-evolving agent 中的真实用户反馈闭环。
换句话说,OPD 不只是一个“小模型学大模型”的技巧,而是一个更一般的机制:把模型在真实使用中获得的经验、错误和反馈,转化为可训练的密集监督信号。
#1. 为什么这个方向突然重要?
过去“蒸馏”通常被理解为模型压缩:用一个更大的 teacher 生成标签或 soft logits,让一个更小的 student 模仿。这个视角在分类模型时代很自然,在 LLM 时代也延续到了 instruction tuning、rationale distillation、CoT distillation 等工作中。
但 LLM 和 Agent 带来了一个更严重的问题:模型不是一次性分类器,而是自回归地生成长序列,并且在生成过程中不断进入自己制造出来的上下文状态。
这导致传统 off-policy distillation 有一个结构性缺陷:
学生模型在训练时看到的是 teacher 常去的状态;但在推理时,它进入的是自己会去的状态。
如果学生前面犯了一个小错,后续上下文就会偏离 teacher 轨迹。越是长链推理、长上下文、工具调用、多轮 agent 任务,这个分布偏移就越严重。
Thinking Machines Lab 在 2025 年的博客《On-Policy Distillation》中用一个很清晰的二维框架总结了这个问题:
| 方法 | 数据分布 | 反馈密度 |
|---|---|---|
| SFT / off-policy distillation | off-policy | dense |
| RL | on-policy | sparse |
| On-policy distillation | on-policy | dense |
这张表基本解释了 OPD 为什么会重新变热:它试图结合两边的优点——既像 RL 一样在学生自己的行为分布上训练,又像蒸馏/SFT 一样提供 token-level 或 step-level 的密集反馈。
#2. 从传统蒸馏到 on-policy distillation:问题是如何一步步被逼出来的
#2.1 第一阶段:传统知识蒸馏——压缩 teacher 的输出分布
经典知识蒸馏可以追溯到 Hinton 等人的 Distilling the Knowledge in a Neural Network。核心思想是:teacher 的 soft distribution 比 hard label 包含更多信息,student 学这个分布可以比只学 one-hot 标签更有效。
在 LLM 时代,这个思想自然扩展为:
- teacher 生成指令数据;
- teacher 生成 reasoning rationale;
- teacher 生成多轮对话;
- student 对这些 teacher trajectories 做 SFT。
代表工作包括:
- Sequence-Level Knowledge Distillation(Kim & Rush, 2016):从 token/class-level 蒸馏走向 sequence-level 蒸馏;
- Distilling Step-by-Step:让小模型同时学习答案和 reasoning rationale;
- 各类 instruction distillation / CoT distillation 数据集。
这一阶段解决的是:如何把大模型能力迁移到小模型,或者把昂贵模型的行为变成便宜模型的训练数据。
但它暴露出新问题:学生学到的是 teacher 分布,而不一定是自己推理时真正会遇到的分布。
#2.2 第二阶段:off-policy distillation 的分布错配
在自回归生成里,早期 token 的小偏差会改变后续所有条件分布。teacher 轨迹通常是高质量、干净、连贯的,而 student 推理时可能生成不完整、错误、跑偏的中间状态。
如果训练数据永远来自 teacher,那么 student 很少学到:
- 自己算错一步后怎么恢复;
- 自己输出格式偏了后怎么纠正;
- 自己进入低质量 reasoning branch 后怎么回到正确路径;
- 自己工具调用失败后该如何修复。
这和 imitation learning 中的经典问题非常相似:只在专家轨迹上行为克隆,会导致 learner 一旦偏离专家轨迹就不知所措。DAgger 的解法是:让 learner 自己访问状态,再请 expert 给这些状态打标签。
OPD 在 LLM 中做的事情,本质上就是一种 DAgger 化的蒸馏:
student rollout → teacher / verifier / human evaluates or corrects → student trains on its own visited states
这也是 Agarwal 等人在 On-Policy Distillation of Language Models: Learning from Self-Generated Mistakes 中提出 Generalized Knowledge Distillation(GKD)的核心动机:不要只在固定输出序列上蒸馏,而要让学生在自生成序列上获得 teacher feedback。
#2.3 第三阶段:RL 的 on-policy 优点与 sparse feedback 问题
如果说 off-policy distillation 的问题是“不够贴近学生自己的分布”,那么 RL 的优势恰好在于 on-policy:模型采样自己的答案,环境或 reward model 给反馈,模型据此更新。
但 RL 在 LLM 上的问题也很明显:reward 通常是稀疏的。
例如一个数学推理题,模型生成了 2000 个 token,最后答案错了。RL 只告诉它:这条 trajectory 不好。可是模型真正需要知道的是:
- 是哪一步 algebra 错了?
- 是理解题意错了?
- 是计算错了?
- 是最后格式错了?
- 还是中间某个分支选择错了?
Thinking Machines Lab 的说法是:RL 每个 episode 大致只提供 bits 的反馈,而 distillation 可以在每个 token 上提供 bits 的密集监督。也就是说,RL 更贴近真实分布,但监督太稀疏;SFT/蒸馏监督密集,但又不贴近 student distribution。
OPD 的位置就很自然:在 student 自己生成的 trajectory 上,由 teacher 提供密集监督。
#3. On-Policy Distillation 的基本闭环
一个典型 OPD loop 可以写成:
当前 student policy π_t
↓
在任务分布上采样 student trajectories
↓
teacher / verifier / reward model / human 对这些 trajectories 提供反馈
↓
构造 token-level、step-level、sequence-level 或 preference-level 监督
↓
用 SFT / KL / DPO / rejection sampling 等方式更新 student
↓
得到 π_{t+1},继续迭代
其中“teacher”不一定是一个大模型,也可能是:
- 更强 LLM;
- reward model;
- verifier;
- 单元测试;
- 搜索算法;
- 人类 verbal feedback;
- 带 privileged information 的同一个模型;
- agent 自己成功完成任务后的轨迹。
因此 OPD 不是单一算法,而是一类训练范式。
#4. 技术谱系:OPD 可以有几种不同形态
#4.1 Token-level teacher distillation
这是最接近传统 KD 的形式:student 先生成序列,然后 teacher 在 student 的 prefix 上给出 next-token distribution,student 最小化与 teacher 的 KL。
x ~ task distribution
ŷ ~ π_student(.|x)
teacher gives p_teacher(token | x, ŷ_{<t})
student minimizes KL / reverse KL / JS on visited prefixes
优点是反馈细粒度,能告诉 student “在你自己走到的这个上下文里,teacher 会怎么走”。缺点是 teacher logits 成本高,闭源模型通常拿不到完整分布。
Agarwal 等人的 GKD 就是这一类的重要代表。它明确指出 autoregressive sequence models 中的 KD 存在训练-推理分布错配,因此引入 student-generated outputs,并允许不同 KL 方向与混合策略。
#4.2 Sequence-level correction distillation
更工程化的方式是:让 student 生成答案,再让 teacher 改写、纠错或给出更优答案,然后 student 对 corrected answer 做 SFT。
student answer → teacher correction / rewrite → SFT on corrected answer
它的优点是简单,不需要 teacher logits,适合闭源 API。缺点是监督不如 token-level 精细,而且 teacher 可能过度改写,使训练信号偏离原始任务。
很多实际系统会使用这种形式,因为它便宜、直观、容易落地。
#4.3 Preference-based on-policy distillation
如果任务没有唯一正确答案,可以让 student 采样多个候选,然后由人类、judge model 或 reward model 排序,再用 DPO/IPO/SimPO/KTO 等 preference objective 更新。
student samples y1, y2, ..., yn
judge ranks / selects
student learns preference pairs
DPO 本身不必然是 on-policy;如果 preference pairs 来自固定数据集,它就是 offline preference learning。但如果候选回答来自当前 student policy,就变成了 online / on-policy preference distillation。
这类方法是 OPD 和 RLHF 之间的重要桥梁:它使用 on-policy 数据和偏好反馈,但避免了 PPO 式 policy gradient 的复杂性。
#4.4 Verifier / reward-filtered SFT
在数学、代码、工具调用等任务里,我们经常有 verifier:
- 数学题可以检查答案;
- 代码题可以跑单元测试;
- tool-use 可以看最终状态;
- browser agent 可以看任务是否完成。
这时可以采用:
sample many trajectories → verifier filters successful ones → SFT on successful trajectories
ReST(Reinforced Self-Training)就是这一范式的重要代表:模型生成样本,用 reward 过滤/排序,再通过离线训练改进 policy。它不像 PPO 那样直接用 reward gradient,而是把 reward 信号转化成训练数据。
这也是很多人把 OPD/OPSD 看作“RL 平替”的原因:它保留了 reward-guided improvement,但更新方式更像监督学习。
#4.5 Agent trajectory distillation
对 Agent 来说,训练对象不只是最终回答,而是完整 trajectory:
observation → thought → action/tool call → result → reflection → next action
如果一个 coding agent 或 browser agent 在真实任务中失败,teacher/human 可以指出:
- 哪一步工具调用错了;
- 哪个假设不该做;
- 哪个文件不该改;
- 哪个测试应该先跑;
- 哪个用户意图被误解了。
这些反馈可以转化为:
- 更好的 trajectory;
- preference pair;
- critique + revision;
- reusable rule;
- personal adapter 的训练样本。
这也是 OPD 与 personal agent / self-evolving agent 的连接点。
#5. 从 OPD 到 OPSD:为什么“自蒸馏”开始变热
OPD 中 teacher 往往是外部更强模型;OPSD(On-Policy Self-Distillation)则进一步问:能不能不依赖一个固定外部 teacher,而让模型利用自己的能力、privileged information、短上下文优势、验证器或成功轨迹来指导自己?
2026 年初出现了一批直接以 OPSD 为关键词的工作:
| 工作 | 核心问题 | 关键思路 |
|---|---|---|
| Self-Distilled Reasoner: On-Policy Self-Distillation for Large Language Models | 推理数据中有 ground-truth / privileged traces 时,如何不用外部大 teacher | 让模型在自身采样轨迹上利用外部解或 privileged reasoning traces 形成自蒸馏监督 |
| OPSDL: On-Policy Self-Distillation for Long-Context Language Models | 长上下文训练中监督数据稀缺、RL reward 稀疏 | 利用模型强短上下文能力作为自监督来源,提升长上下文能力 |
| PACED: Distillation and On-Policy Self-Distillation at the Frontier of Student Competence | 蒸馏训练中哪些题最值得训练 | 用 student pass rate 估计能力边界,把训练集中在“会一点但还不稳定”的 zone of proximal development |
| Skill-SD: Skill-Conditioned Self-Distillation for Multi-turn LLM Agents | 多轮 agent 任务中 reward 稀疏、策略多样 | 将 agent 自己完成的轨迹转成 skill-conditioned supervision,避免固定 privileged teacher 过窄 |
这批工作共同说明:OPSD 的核心不只是“自己教自己”,而是在学生当前能力边界附近构造更密集、更贴合自身分布的训练信号。
如果说 OPD 解决的是 teacher-student 分布错配,那么 OPSD 进一步试图解决 teacher 依赖、训练成本和持续学习的问题。
#6. 为什么 OPD 被看作 RL 平替?
很多 LLM 后训练场景中的 RL 目标可以抽象为:
让模型在自己会生成的东西里面,多生成好的,少生成坏的。
RLHF/PPO 的方式是:
policy samples → reward → policy gradient update
OPD/OPSD 的方式是:
policy samples → reward / teacher / human feedback
→ construct better targets / rankings / corrections
→ supervised or preference update
这不是严格意义上的 RL 替代,因为它不一定做 credit assignment,也不一定有真正探索。但它在很多 LLM 任务中非常有吸引力:
- 训练更稳定:SFT/DPO/KL distillation 比 PPO 更容易调;
- 反馈更密集:teacher 可以逐 token、逐步骤提供信号;
- 数据可复用:同一批 prompt 可以多次采样、多次蒸馏;
- 工程链路更简单:采样、打分、筛选、训练都容易模块化;
- 适合强 verifier 任务:math/code/tool-use 中 reward 可以变成监督数据。
Thinking Machines Lab 的实验也给了一个直观判断:在他们的数学推理设置中,从 RL-trained teacher 回蒸馏到 base student 时,on-policy distillation 可以用明显更少的梯度步数恢复 teacher policy,博客中称其带来数量级的 compute efficiency 提升。
但这并不意味着 RL 不再重要。OPD 更像是:当我们已经有可靠 teacher/verifier/reward,可以把“好坏”转成密集监督时,它是比 RL 更便宜、更稳定的 policy improvement 方法。
对于真正需要探索、长期信用分配、环境交互发现新策略的场景,RL 仍然不可替代。
#7. OPD 与“模型合版”:从参数合并到行为合并
推文里提到 OPD 已经成为“大厂模型合版”的流行方式,这个判断很有意思。
所谓“模型合版”,可以理解为把多个模型、多个版本、多个专家能力整合进一个模型。常见路线有:
- 参数合并:model soup、task arithmetic、TIES、DARE 等;
- 路由/MoE:不同任务调用不同 expert;
- 数据混合再训练:把各领域数据混起来继续训练;
- 蒸馏合版:用多个 teacher / judge / expert 生成反馈,让一个 student 学综合行为。
OPD 在这里的优势是:它合并的是行为,而不是参数。
这很重要,因为现实中的 teacher 可能:
- 来自不同架构;
- 有些是闭源 API;
- 有些是 specialist model;
- 有些是 reward model/verifier;
- 有些是旧版本模型;
- 有些是内部专家系统。
参数合并要求模型结构和参数空间兼容,但 OPD 不需要。student 自己先生成答案,然后不同 expert 在 student 的行为分布上打分、纠错、改写或投票,最后 student 吸收这些反馈。
这让模型合版变成一个持续过程:
new model / new expert / new product feedback
→ evaluate current student behavior
→ generate corrections/preferences
→ distill into next version
当然风险也很明显:
- 多 teacher 之间可能冲突;
- 不同 expert 的风格和价值观不一致;
- student 容量不足时会出现能力坍缩;
- 数据选择会决定最终模型的能力边界;
- 如果只蒸馏表面风格,可能复制 confidence 而不是复制 correctness。
这也是为什么 OPD 不是简单“把几个模型输出混起来 SFT”,而需要仔细设计 teacher routing、反馈类型、冲突解决和 evaluation。
#8. Verbal Feedback:OPD 在 personal agent 中最自然的入口
personal agent 的核心目标是:越用越懂用户。
真实用户反馈往往不是 reward number,而是自然语言:
- “下次先给结论。”
- “这个格式我不喜欢。”
- “你刚才误解了我的意思。”
- “这个项目里不要这么做。”
- “以后遇到这种情况直接执行,不要再问我。”
这些反馈有三个特点:
- 它发生在 agent 自己真实产生的行为之后,因此天然 on-policy;
- 它通常是 dense 的,能指出具体问题;
- 它既可能是偏好,也可能是事实纠错、工作流约定或安全边界。
因此,verbal feedback 可以被看作 personal agent 场景下最重要的 OPD 信号来源。
一个可能的闭环是:
agent action / answer
→ user verbal feedback
→ classify feedback type
→ produce corrected response / preference pair / rule memory
→ update memory or train adapter
→ regression test
→ deploy back to user's agent
这里有三层学习:
| 层级 | 形式 | 是否更新参数 |
|---|---|---|
| Contextual memory | 把反馈写入长期记忆,下次读 prompt | 否 |
| Preference dataset | 把反馈转成偏好对或纠错样本 | 暂时否 |
| On-policy distillation | 用这些样本训练 LoRA / adapter / policy | 是 |
Reflexion 和 Self-Refine 代表了“不更新参数”的 verbal feedback 路线:模型通过反思和自我修改在 inference-time 改进。OPD/OPSD 则进一步问:能不能把这些反思和用户反馈固化进模型或个人 adapter?
这对个人 AI 很关键。否则 agent 每次都只是把反馈塞进上下文,长期来看会受到 context length、检索质量和记忆污染的限制。真正的 self-evolution 需要把一部分稳定反馈压缩进行为参数或更结构化的技能库。
#9. Self-evolution:OPD 是“从经验到参数”的桥
许多 self-evolving agent 都有类似闭环:
generate → evaluate → reflect → improve → store
但如果只 store 到 memory,系统更像“有笔记的 agent”;如果能 distill 回模型,才更接近“会成长的 agent”。
OPD 在这里承担的是最后一步:
experience / feedback / successful trajectory → training signal → updated policy
这可以解释为什么最近 personal agent、self-evolution、agentic RL 的讨论会重新带火 OPD/OPSD:
- Agent 真实部署会产生大量 on-policy trajectories;
- 用户和环境会给出自然反馈;
- 这些反馈不一定适合直接做 RL;
- 但很适合转成纠错样本、偏好对、成功轨迹;
- 再通过 OPD/OPSD 蒸馏进模型、adapter 或技能库。
对 coding agent 来说,一个典型例子是:
agent 修改代码 → 测试失败 → 修复成功 → 总结失败原因
→ 形成“错误轨迹 vs 修复轨迹”训练样本
→ 未来遇到类似 repo / bug / 工具链时更少犯同样错误
这比传统 RL 更符合软件工程任务的反馈形态:测试结果、编译错误、用户 review、代码 diff 都是结构化但不连续的反馈,很适合通过 distillation 被吸收。
#10. 当前瓶颈:OPD 不是银弹
#10.1 On-policy 数据质量问题
如果 student 初始能力太弱,它生成的 trajectories 可能全是垃圾。此时即使 teacher 能纠正,也会非常昂贵,且容易让训练集中充满低质量状态。
因此许多 OPD 工作都会先做 mid-training / SFT,把 student 拉到一个基本能力区间,再做 on-policy distillation。PACED 进一步强调:训练最有效的区域往往是 student pass rate 中等的题,也就是它“差一点会”的地方。
这和教育中的 zone of proximal development 很像:太简单的题没梯度,太难的题没信号,最值得训练的是能力边界附近。
#10.2 Teacher / judge 可靠性问题
OPD 的上限强烈依赖反馈源。如果 teacher 错了、judge 偏了、verifier 可被 hack,student 会稳定地学坏。
特别是在 self-distillation 中,如果 policy 和 judge 同源,就容易形成回音室:模型把自己喜欢的答案当成更好答案,逐轮强化偏见。
缓解方式包括:
- 多 teacher 交叉评审;
- 引入外部 verifier;
- 保留 human data mixture;
- 定期做 held-out eval;
- 对 self-generated data 控制比例;
- 允许 rollback。
#10.3 分布坍缩与多样性下降
反复对 self-generated samples 做筛选和训练,可能导致模型越来越模式化:
- 输出风格变窄;
- reasoning 模板化;
- 不确定性表达减少;
- 少数错误被反复强化;
- benchmark-specific overfitting。
这在 personal agent 中尤其危险,因为用户反馈往往是局部的、情境化的。一次偏好不应该被过度泛化成所有场景规则。
#10.4 Verbal feedback 的语义解析
用户一句“下次别这样”可能意味着:
- 格式偏好;
- 事实纠错;
- 情绪不满;
- 当前任务约束;
- 长期工作流规则;
- 一次性例外。
如果系统无法区分这些类型,就会把临时反馈错误地蒸馏成长期行为。
所以 personal agent 中的 OPD 不只是训练问题,也是 memory governance 问题:
- 什么反馈值得长期记?
- 什么反馈只在当前任务有效?
- 什么反馈需要用户确认?
- 什么反馈不能进入参数?
- 用户如何查看、编辑、撤销模型学到的东西?
#10.5 隐私与控制权
personal agent 的 on-policy data 往往来自真实用户任务,可能包含隐私、代码、邮件、研究想法、组织信息。把这些数据用于全局模型训练非常敏感。
更合理的路线可能是:
- 原始交互只保存在用户侧;
- 蒸馏到 personal adapter,而不是全局模型;
- 训练样本可审计、可删除;
- 用户可以导出自己的 memory / adapter;
- 敏感信息先做过滤和摘要化。
换句话说,OPD 在 personal agent 中不仅是技术机制,也需要产品和治理机制配套。
#11. 我的判断:OPD 的真正价值在于“把反馈密度做高”
如果只把 OPD 理解成“另一种蒸馏”,会低估它的意义。
它真正重要的地方在于:它为 LLM/Agent 提供了一种把真实交互反馈变成高密度训练信号的通用框架。
对模型合版,它是行为级合并机制;
对 RL 平替,它是把 reward-guided improvement 监督学习化;
对 personal agent,它是把用户 feedback 从 prompt/memory 层推进到 adapter/parameter 层;
对 self-evolution,它是把成功经验和失败修正固化为长期能力的桥。
但它也有清晰边界:
- 如果没有可靠 teacher/verifier,它会自我污染;
- 如果没有探索,它不能替代真正的 RL;
- 如果没有 memory governance,它会过拟合局部反馈;
- 如果没有 evaluation 和 rollback,它会持续漂移。
因此我更愿意把 OPD 看成 agent 时代的后训练基础设施,而不是某个单独算法。
未来真正有价值的问题可能不是“OPD 能不能比 PPO 分数高”,而是:
- 如何从真实 agent 轨迹中自动抽取可蒸馏的反馈?
- 如何把 verbal feedback 稳定转成 preference / correction / rule / skill?
- 如何决定哪些反馈进入 memory,哪些进入 adapter,哪些进入全局模型?
- 如何在个人持续学习中做安全、隐私和可撤销?
- 如何把 long-horizon agent 的稀疏失败转化成局部密集监督?
- 如何避免 self-distillation 的分布坍缩和 judge 回音室?
这些问题和 model-based RL、latent reasoning、agentic RL、自演化代码 agent 都高度相关。因为本质上,它们都在问同一个问题:
一个智能体如何把自己的经验变成下一轮更好的行为策略?
OPD/OPSD 给出的答案是:不要只等最终 reward,也不要只背 teacher 的标准答案;让模型在自己真实会到达的状态上,获得尽可能密集、可训练、可复用的反馈。
#参考资料
- Kevin Lu and Thinking Machines Lab, On-Policy Distillation, 2025.
- Rishabh Agarwal et al., On-Policy Distillation of Language Models: Learning from Self-Generated Mistakes, 2023.
- Caglar Gulcehre et al., Reinforced Self-Training (ReST) for Language Modeling, 2023.
- Rafael Rafailov et al., Direct Preference Optimization: Your Language Model is Secretly a Reward Model, 2023.
- Siyan Zhao et al., Self-Distilled Reasoner: On-Policy Self-Distillation for Large Language Models, 2026.
- Xinsen Zhang et al., OPSDL: On-Policy Self-Distillation for Long-Context Language Models, 2026.
- Yuanda Xu et al., PACED: Distillation and On-Policy Self-Distillation at the Frontier of Student Competence, 2026.
- Hao Wang et al., Skill-SD: Skill-Conditioned Self-Distillation for Multi-turn LLM Agents, 2026.
- Noah Shinn et al., Reflexion: Language Agents with Verbal Reinforcement Learning, 2023.
- Aman Madaan et al., Self-Refine: Iterative Refinement with Self-Feedback, 2023.
- Weizhe Yuan et al., Self-Rewarding Language Models, 2024.
- Eric Zelikman et al., STaR: Bootstrapping Reasoning With Reasoning, 2022.