资源受限下的破局者:On-Policy Distillation
在探讨大模型后训练(Post-training)时,算法工程师们通常面临着一个残酷的现实:资源是极其有限的。
如果我们手头只有极其有限的高质量人工标注数据,SFT(监督微调) 很容易碰到天花板,且模型一旦在实战中偏离了训练集见过的分布,就会产生灾难性的复合误差(Compounding Error)。
如果我们想用 RL(强化学习,如 PPO 或 GRPO) 让模型通过自我探索突破上限,显存和算力又会瞬间教做人——动辄 3 到 4 个同量级模型的显存开销,加上强化学习极其稀疏的奖励信号带来的海量采样需求,让低资源团队望而却步。
面对这种算力与数据的双重“水土不服”,On-Policy Distillation(同策略知识蒸馏) 作为一种极致高效的破局方案,正成为资源受限场景下的新范式。它巧妙地剥离了 RL 沉重的架构,同时保留了其最核心的“自我探索”能力。
贯穿全文的直观比喻:训练一个新人下国际象棋
- SFT / Off-Policy Distillation(离线蒸馏): 让新人死记硬背大师的获胜棋谱。一旦他在实战中下错一步,进入了棋谱里从未见过的残局,就会彻底崩溃(缺乏探索容错率)。
- RL(强化学习): 不给任何棋谱,让新人自己去下(On-Policy 探索)。下完一整局,裁判只给一个标量反馈“赢了”或“输了”。新人根本不知道中间那 50 步里,究竟哪一步是真正的昏招(奖励极度稀疏,试错成本极高)。
- On-Policy Distillation(在线蒸馏): 新人在实战中自己下棋(自主采样探索状态),但旁边站着一位大师(Teacher Model)。新人每考虑走一步,大师都会给出他在这个局面的全盘胜率评估(稠密概率分布)。新人得到了步步为营的巅峰指导。
1. 工程视角:极致的轻量化与“短视”的暴力美学
Motivation (核心动机): 既然引入了比 Reward Model 更庞大的 Teacher Model 来逐字打分,如果还套用传统 RL 那套极其复杂的价值计算(比如 PPO 里的 Critic 模型和 GAE 计算),算力和显存依然会爆炸。我们需要在工程上做到极其暴力的轻量化。
解法:逆 KL 散度 (Reverse KL) 与 的降本增效
在损失函数的设计上,最直接且高效的选择是 单步逆 KL 散度 (Reverse KL):
深度解析:为什么偏偏是 Reverse KL? 这个公式表层的物理意义是:在学生模型自己探索到的状态下,尽力模仿老师;一旦行为一致,梯度立刻停止。 但在底层数学逻辑上,这里藏着小模型逆袭的密码:Mode-seeking(求众数) vs. Mean-seeking(求平均)。 如果用传统的 Forward KL,小模型会被迫去平均覆盖老师所有的知识分布(样样都学,样样稀松);而 Reverse KL 是 Mode-seeking,它允许小模型“挑软柿子捏”——只要学生模型在老师认可的众多解法中,找到一条自己最能走通的高概率路径并做到极致,损失函数就会降到最低。这是小模型在资源受限下能完成蒸馏的数学前提。
工程上的极简妥协: 直接将强化学习中的折扣因子(Discount Factor, )设为 0。 这意味着,学生模型只优化紧接着的下一个 Token,完全不考虑未来的长远收益。从马尔可夫决策过程 (MDP) 的严谨数学角度来看,考虑未来收益()才是“政治正确”的。但在大模型工程实证中, 根本没有带来明显的性能提升。因此,为了纯粹的效率,直接砍掉多步规划。不需要等待轨迹跑完,不需要训练 Critic 模型,算力成本比标准 PPO 暴降了一个数量级。
实战踩坑警告:Teacher 真的“免费”吗?
在实际工程中,让一个 70B 甚至更大参数的 Teacher 模型去计算全词表(数万维)的 Logits,其 KV Cache 显存占用和通信延迟依然会成为噩梦。 工程破局点: 业界绝不会真拿完整的全词表算梯度,而是采用 Top-K 截断(Teacher 只保留概率最大的前 K 个 Token,其余置为 0 后重新归一化)结合**异步打分(Asynchronous Scoring)**机制。这种在数学上略显粗糙的妥协,换来了系统吞吐量的巨大飞跃。
延伸版本:毕竟Teacher 还得部署(或者 call API),这本身也是一笔不小的开销。有没有更简单的方法?试试Self-distillation?
2. 梯度视角:将所有算法统一到 On-Policy 期望下的降维打击
Motivation (核心动机): On-Policy Distillation 到底在底层参数更新时,比传统的 SFT 和 RL 赢在了哪里?为了看清本质,我们需要剥开外壳,利用**重要性采样(Importance Sampling)**将它们全部统一到 On-Policy 探索() 的期望下,直接对比反向传播时的梯度公式。
大一统的策略梯度框架
假设我们统一在学生模型自己生成的轨迹分布 下进行分析,所有的对齐算法的梯度更新都可以写成如下的通用模式:
在这个极其优雅的框架下,四种主流算法的区别仅仅在于权重项 的不同:
I. SFT(监督微调)
解析: 极其严苛且稀疏。 意味着它只对完美匹配标准答案的轨迹进行更新。
数学之美: 注意公式里的 。因为 SFT 本质是纯离线数据驱动,这个倒数项在重要性采样中强行抵消了 On-Policy 的采样概率。这精准地揭示了 SFT 在面对模型自我探索时效率极低的原因——它直接屏蔽并丢弃了所有不在静态数据集里的试错轨迹。
II. RL (如 PPO / GRPO)
解析: 打破了 SFT 的轨迹限制,模型在任何探索到的轨迹上都能获得更新。但它的指导极其粗糙—— 只是一个整句级别的标量奖励。它只是无脑地将这条轨迹上所有 Token 的概率等比例放大或缩小,根本无法提供“这一步该换成词表里哪个词更好”的细节指导。
III. Off-Policy Distillation(离线蒸馏)
解析: 引入了 Teacher 极其稠密的词表级概率分布进行细腻指导。但由于它依然带着 的枷锁,它只能在静态数据集的完美路径上生效。一旦模型自己推理时走偏了,它就瞎了。
IV. On-Policy Distillation(同策略在线蒸馏)
解析: 真正的降维打击。 它彻底去掉了 的限制,意味着模型可以在自我探索生成的任何轨迹(哪怕是充满了错误的轨迹) 上实时学习。 同时,它的梯度权重是 ,意味着每走错一步,Teacher 都会在数万维的词表空间中,给出极其稠密、方向明确的纠偏信号。
探索机制的盲区提醒: 上面的数学推导有一个极其重要的工程前提:必须在生成采样时引入随机性(例如设置 Temperature > 0)。如果学生模型只使用贪心解码(Greedy Decoding),它采样的轨迹将极其单一,On-Policy 就退化成了一条极窄的路径,Teacher 的“纠偏兜底”价值就彻底丧失了。没有随机探索,就没有 On-Policy 的红利。
总结:高杠杆的炼丹哲学
在计算资源和优质数据双双受限的场景下,如何最大化每一滴算力的价值?
On-Policy Distillation 给出了一份还算满意的答卷:在工程侧,它通过砍掉面向未来的多步规划()和 Critic 模型,并在实战中辅以 Top-K 截断,省下了海量显存;在数学底层,它又通过 Reverse KL 的求众数特性和全词表概率的稠密加权,在每一小步的梯度更新中塞满了信息量。
它用最小的架构代价,换取了最高质量的 Token 级在线纠偏。这,就是大模型后训练时代的极简暴力美学。