EADST

OPD: On-Policy Distillation 介于 SFT 与 RL 之间的第三条路

最近看 LLM 后训练,OPD,On-Policy Distillation 是一个越来越绕不开的关键词。它不像传统 SFT 那样只学 teacher 的标准答案,也不像 RL 那样主要依赖最终 reward,而是试图同时拿到两边的好处:on-policy 的轨迹 + token-level 的稠密监督

我觉得可以先用一句话理解 OPD:

OPD = 让 student 自己生成轨迹
    + 让 teacher 对这条轨迹逐 token 打分
    = on-policy + dense supervision

这个定义也和 AwesomeOPD 里的整理基本一致:OPD 至少要满足两点,一是 student 在训练中采样自己的轨迹,二是 teacher 对这些 student samples 提供 token-level 或 sequence-level 监督。

为什么需要 OPD

大模型后训练长期卡在 SFT 和 RL 之间。

SFT 的优势是监督信号稠密。teacher 给出完整答案后,student 可以在每个 token 上学习。但问题是 SFT 通常是 off-policy 的:模型学的是 teacher 的轨迹,部署时一旦走到自己没见过的状态,就容易误差累积。

RL 刚好相反。它是 on-policy 的,模型在自己实际到达的状态上学习;但 reward 往往很稀疏,一整条回答最后只有一个标量分数,训练效率低,而且还可能 reward hacking。

OPD 想要同时拿走两者的优点:

| 方法 | 轨迹来源 | 监督信号 | 优点 | 缺点 |
| --- | --- | --- | --- | --- |
| SFT / Off-policy Distillation | teacher | 稠密 | 好训练,反馈直接 | 容易误差累积 |
| RL | student | 稀疏 | 理论上可超越 teacher | 效率低,可能 reward hacking |
| OPD | student | 稠密 | on-policy + dense supervision | 上限受 teacher 限制 |

所以 OPD 不是“更强的 RL”,而是“更密的监督”。它更像是把 student 自己会走到的状态拿出来,再让 teacher 对这些状态做逐 token 纠偏。

OPD 的核心流程

OPD 的基本流程可以概括为四步:

1. 给定 prompt,由 student 自己生成完整回答。
2. 把 student 的回答交给 teacher。
3. teacher 计算每个 token 的 log probability 或 logits 分布。
4. 用 teacher 的逐 token 信号训练 student。

关键点是:轨迹来自 student,监督来自 teacher

这和传统蒸馏的根本差别就在这里。传统蒸馏是 teacher 先生成轨迹,student 学 teacher 走过的路;OPD 是 student 自己先走,teacher 只负责在 student 已经走到的位置上给反馈。

一句话:

传统蒸馏学的是 teacher 走过的路;
OPD 学的是 student 自己走过的路。

这会带来一个很实际的好处:student 可以在自己真实会访问到的状态上被纠正,而不是只在 teacher 的理想轨迹上学习。这一点和 imitation learning 里的 DAgger 很像:让 learner 在自己访问到的状态上接受 expert 纠偏。

OPD 和 RL 的区别

从表面看,OPD 和 RL 都使用 student 自己生成的轨迹。但二者关注点不一样。

RL 通常使用 sequence-level reward。模型生成一整条回答,最后由 verifier、reward model 或环境给一个分数。它更关注“最终结果是否正确”。

OPD 则更关注“每一步行为是否接近 teacher”。teacher 会在 student 已经生成的每个 token 上提供概率分布或 log-prob 反馈,因此信息密度更高。

RL 更像 search:
模型探索不同路径,最后用 reward 判断哪条路径更好。

OPD 更像高效复制策略:
模型走自己的路径,但 teacher 在每一步告诉它哪里更像正确行为。

这也是为什么很多 OPD 方法可以用更少训练步数和算力达到接近 RL 的效果。它不需要等序列结束才获得一个标量反馈,而是在轨迹中间就能拿到细粒度学习信号。

OPD 适合哪些任务

OPD 特别适合长轨迹任务。因为这些任务里,最终答案错了往往只是结果,真正的问题出现在中间步骤。

典型场景包括:

  • 数学推理:中间步骤走偏后,学习如何恢复。
  • 代码生成:前面写出糟糕代码后,学习如何继续修。
  • 多轮工具调用:前一步工具结果不理想时,学习如何调整策略。
  • 多模态或视频理解:前面描述错了,后面重新对齐视觉证据。
  • Agent 任务:长轨迹决策中,出现错误状态后学习如何回到合理路径。

OPD 也很适合做能力蒸馏。比如把强 teacher 的推理能力复制到小 student:先用 SFT 打基础,再用 OPD 让 student 在自己的生成轨迹上继续靠近 teacher。

在 continual learning 里,它也有一个很实用的范式:

新知识用 SFT 灌进去;
旧能力用 OPD 召回来;
循环往复。

所以 OPD 不只是蒸馏工具,也可以是一种能力保持工具。

从 AwesomeOPD 看 OPD 生态

AwesomeOPD 是目前比较系统的 OPD 资源索引。它把 OPD 相关工作分成了 surveys、white-box、black-box、OPSD、OPD-RL hybrids、reasoning、multimodal、agent、speculative decoding、frameworks 等类别。

如果是刚开始了解 OPD,我会优先看这几类链接。

入门与综述

方法改进

  • MiniLLM
    经典 white-box OPD 路线,使用更大 teacher 的信号在 student rollouts 上做蒸馏。

  • DistiLLM
    讨论 on-policy/off-policy 混合和 KL 形式,适合理解不同 divergence 对蒸馏行为的影响。

  • FiRe-OPD
    思路是先过滤,再重加权:轨迹级别做 hard filtering,token 级别做 soft reweighting。这个方向很工程,适合解决 student rollout 质量参差不齐的问题。

  • TRD: Trajectory-Refined Distillation
    它关注 dense per-token OPD 的 prefix failure 问题,先在轨迹层面 refine student rollout,再做蒸馏。

OPD 与 RL 结合

  • G-OPD
    把 OPD 看成 KL-constrained RL 的一种形式,并讨论 reward scale 如何让模型有机会超过 teacher。

  • OPD+
    重新审视 advantage 设计,把 OPD 表述成带 f-divergence reward 的 RL 问题。

  • TGPO
    teacher 在 student context 下直接引导 token-level generation,同时结合 RLVR trajectory reward,适合看 OPD 如何进入 RL 训练内部。

工具与代码

  • TRL
    目前 OPD trainer 覆盖很广,AwesomeOPD 也把它列为最值得关注的开源训练集合之一。

  • ms-swift
    Alibaba ModelScope 的训练框架,AwesomeOPD 标注其通过 GKD 相关 examples 支持 OPD/GKD 训练。

  • verl
    ByteDance Seed 的 RL 训练框架,包含 on-policy distillation recipe,也适合做 RL + OPD 类实验。

  • SkyRL
    UC Berkeley NovaSky 生态里的训练框架,也有 on-policy distillation 示例。

OPD 的边界

OPD 很强,但它不是万能药。

首先,它需要一个比 student 更强的 teacher。如果 teacher 本身有问题,student 也会被带偏。OPD 的能力上限基本受 teacher 限制,而 RL 在理论上可以通过探索和环境反馈超过 teacher。

其次,OPD 的目标是靠近 teacher,不一定等价于优化最终任务指标。对于有明确 verifier 或环境反馈的任务,RL 仍然有价值。

所以更合理的判断是:

OPD 擅长把已有能力高效复制给 student;
RL 更适合在可验证环境里搜索更优策略。

如果目标是稳定、低成本地提升模型行为,让小模型接近强模型,OPD 很合适。如果目标是突破 teacher 上限,或者在明确 reward 的环境里寻找新策略,最终还是要靠 RL。

小结

我理解的 OPD,本质上是对轨迹做一种更聪明的监督学习:轨迹来自 student,反馈来自 teacher,而且反馈可以细到 token 级别。

它解决的是 SFT 和 RL 各自的一部分痛点:SFT 有稠密监督但 off-policy,RL 是 on-policy 但 reward 稀疏。OPD 把两者拼起来,得到一个工程上很实用的折中方案。

最后用一句话总结:

OPD = 拿走 RL 的 on-policy,
      再拿走 SFT 的稠密监督。

它不是 RL 的替代品,而是介于 SFT 与 RL 之间的一条第三路线。对于模型蒸馏、能力召回、持续学习和长轨迹任务来说,OPD 会是后训练里非常值得长期关注的方法。

参考链接

相关标签
About Me
XD
Goals determine what you are going to be.
Category
标签云
PIP Django YOLO Math SPIE VGG-16 Datetime NameSilo 云服务器 Claude Qwen2 PyCharm Random TSV 公式 LLAMA TTS Augmentation WAN Llama Pandas Vmess CEIR Markdown Jupyter OpenCV Search Git FP8 BF16 证件照 Qwen Proxy WebCrawler RL Crawler Tiktoken transformers PyTorch Algorithm Bin ms-swift JSON Quantization Quantize Video 音频 Pillow GPTQ Linux SQLite logger SVR API Mixtral 图形思考法 Knowledge Michelin HaggingFace RGB XGBoost Google Plate 顶会 Disk Diagram 域名 hf Ptyhon Vim VSCode Image2Text Pytorch EXCEL Gemma git Review AI LoRA printf GIT scipy Web Clash Nginx News Excel ChatGPT Logo 图标 CUDA TensorRT Paper UNIX 递归学习法 Ubuntu 净利润 Magnet Dataset Breakpoint QWEN Hilton PDB Numpy Python 签证 Hotel 论文 GoogLeNet 第一性原理 Animate Pickle Firewall 多线程 Conda Website 腾讯云 Cloudreve ModelScope llama.cpp FP32 Safetensors FP64 InvalidArgumentError CV Food 论文速读 Tensor ResNet-50 阿里云 强化学习 ONNX Shortcut Miniforge Base64 RAR NLP 版权 Land Permission Anaconda MD5 C++ IndexTTS2 mmap TensorFlow FastAPI UI tqdm git-lfs Paddle torchinfo Interview Card v2ray DeepSeek Domain Input v0.dev diffusers Windows FlashAttention 多进程 GPT4 Heatmap Color GGML Attention Distillation OpenAI Rebuttal Streamlit uwsgi Plotly Zip Qwen2.5 Password CAM Bipartite BeautifulSoup SAM Statistics LLM tar LaTeX Data SQL 关于博主 算法题 CSV Hungarian Tracking uWSGI 财报 icon OCR DeepStream VPN Sklearn 飞书 LeetCode Freesound Translation PDF CLAP 搞笑 COCO Transformers Template CC Github Baidu Docker Bitcoin BTC Use HuggingFace FP16 Bert 继承 XML Jetson CTC NLTK Agent 报税
站点统计

本站现有博文332篇,共被浏览867426

本站已经建立2575天!

热门文章
文章归档
回到顶部