大模型蒸馏:On-Policy 与 Off-Policy 的区别
引言
在大语言模型(LLM)的蒸馏(Distillation)过程中,On-Policy 和 Off-Policy 是两种截然不同的数据采样策略。理解它们的区别对于设计高效的蒸馏方案至关重要。
核心概念
On-Policy 蒸馏
定义:使用学生模型(Student)自身生成的数据进行蒸馏训练。
工作流程:
1. 学生模型针对输入问题生成回答
2. 教师模型(Teacher)对学生生成的回答进行评分或提供反馈
3. 学生模型根据反馈优化自身策略
特点:
- 数据分布与学生模型当前策略一致
- 训练数据是"新鲜"生成的,反映学生当前能力
- 类似强化学习中的策略梯度方法
Off-Policy 蒸馏
定义:使用外部数据源或教师模型生成的数据进行蒸馏训练。
工作流程:
1. 教师模型或人工准备高质量的训练数据(输入-输出对)
2. 学生模型学习模仿这些固定数据
3. 数据在训练过程中保持不变
特点:
- 数据分布与教师模型或人工标注一致
- 训练数据是"静态"的,预先准备好的
- 类似传统的监督学习
对比分析
| 维度 | On-Policy | Off-Policy |
|---|---|---|
| 数据来源 | 学生模型自生成 | 教师模型/人工准备 |
| 数据分布 | 动态变化,随学生改进而更新 | 静态固定 |
| 计算成本 | 高(需实时生成) | 低(数据预先准备) |
| 探索能力 | 强,能发现新的解决路径 | 弱,局限于已有数据 |
| 训练稳定性 | 较低,数据分布不断变化 | 较高,数据固定 |
| 适用场景 | 推理能力提升、自我改进 | 知识迁移、快速部署 |
| 数据分布 | 与学生当前策略一致 | 与学生策略不一致,存在分布偏移 |
实践建议
何时选择 On-Policy?
✅ 推荐使用:
- 目标是提升特定能力(如数学推理、代码生成)
- 有可靠的奖励信号(验证器、测试用例、奖励模型)
- 计算资源充足,支持在线生成
- 需要模型自我改进、迭代优化
何时选择 Off-Policy?
✅ 推荐使用:
- 快速复现或基线对比
- 通用能力迁移(如从 GPT-4 到本地小模型)
- 资源受限,需要控制训练成本
- 已有高质量的教学数据集
常见陷阱
⚠️ On-Policy 陷阱:
- 模式崩溃:学生可能陷入局部最优,生成相似回答
- 奖励黑客:学生找到欺骗奖励模型的捷径
- 训练不稳定:分布漂移导致训练困难
⚠️ Off-Policy 陷阱:
-
分布不匹配:学生能力超过训练数据水平后,继续训练收益递减
- 能力天花板:无法超越教师数据的质量上限
- 遗忘问题:过度拟合蒸馏数据,丢失预训练知识
总结
| On-Policy | Off-Policy | |
|---|---|---|
| 本质 | 学生"边做边学" | 学生"模仿范例" |
| 数据 | 动态生成 | 静态固定 |
| 优势 | 针对性强、可自我超越 | 稳定高效、易于部署 |
| 劣势 | 计算成本高、训练复杂 | 存在能力上限 |
最佳实践:先用 Off-Policy 快速获得基础能力,再用 On-Policy 针对性提升关键技能。