随着大模型能力的持续突破,其参数规模不断攀升,训练成本也日益高昂。如何让轻量级的小模型掌握大模型的"真本事"?Thinking Machines Lab(TML)最新提出的 On-Policy Distillation 技术为此提供了全新答案——训练效率提升一个数量级,所需成本仅为传统强化学习方法的十分之一。
在AI领域,有一个经典话题:如何让小模型具备接近大模型的能力? 为什么我们要追求小模型?原因非常现实:
- 成本更低:推理阶段资源消耗少,部署更经济
- 隐私更好:支持本地化部署,用户数据无需上传云端
- 速度更快:延迟更低,带来更流畅的用户体验
然而,挑战也随之而来:小模型本身容量有限,如何让它胜任复杂任务?
这就引出了大模型训练中经典的 "师徒关系":
- 教师模型(Teacher Model):能力强大的大参数模型(如 GPT-5、Qwen3-32B,甚至235B)
- 学生模型(Student Model):我们想要训练的轻量级目标模型(如 Qwen3-8B)
核心目标:让学生模型(小模型)学会教师模型(大模型)的能力,这个过程就叫做 知识蒸馏(Knowledge Distillation)。
但是,怎么教?教什么内容?这些问题直接决定了训练效果和成本。接下来,就让我们走进模型训练的"课堂",一探不同教学策略背后的智慧与差异。
📚 相关资源
TML blog:https://thinkingmachines.ai/blog/on-policy-distillation/
MS-SWIFT:https://github.com/modelscope/ms-swift 提供复现On-Policy Distillation的开源实现
On-Policy Distillation 文档:https://swift.readthedocs.io/zh-cn/latest/Instruction/GKD.html
示例脚本:https://github.com/modelscope/ms-swift/blob/main/examples/train/on_policy_distillation.sh
OpenThoughts 训练数据集:https://www.modelscope.cn/datasets/open-thoughts/OpenThoughts3-1.2M
01训练范式之争:On-Policy vs Off-Policy
在大模型的后训练(Post-training)阶段,一个比较核心的问题是:学生模型应该从什么样的数据中学习?根据数据来源的不同,训练方法可以分为两大类:
Off-Policy(离策略):向别人学习
学生模型从外部来源的数据中学习——这通常是教师模型的示范或人类专家的标注。
典型代表:监督微调(SFT)
- 学习方式:给学生模型一批精心准备的"标准答案"(教师模型生成的高质量回答),让它模仿
- 优点:每个 token 都有明确指导,反馈密集,学习高效
- 缺点:学的都是教师的"标准操作",一旦学生模型自己犯错进入陌生状态,就不知道如何恢复
这就像学习象棋时只看大师棋谱,看到的都是完美对局。但真正自己下棋时,一旦走错一步,局面就偏离了棋谱,接下来就不知所措了。
On-Policy(同策略):从自己的经验学习
学生模型从自己生成的数据中学习,直接面对自己会遇到的情况。
典型代表:强化学习(RL)
- 学习方式:让学生模型自己做题、自己犯错,通过奖惩信号来学习
- 优点:学习的是学生模型自己真正会遇到的场景,不会出现"纸上谈兵"的问题
- 缺点1:反馈稀疏——做完一整道题才知道对错,但不知道哪一步错了
- 缺点2:探索成本极高——需要大量试错才能找到正确策略,计算资源消耗巨大
这就像闭着眼下棋练习,需要下成千上万局才能慢慢摸索出门道,训练成本高昂。
看起来是个死循环:
- 想要高效学习?用 Off-Policy,但学生模型学不到如何处理自己的错误
- 想要学到真本事?用 On-Policy,但要付出 10 倍甚至百倍的训练成本
有没有可能鱼和熊掌兼得?
02On-Policy Distillation:打破训练范式的魔咒
Thinking Machines Lab 提出的 On-Policy Distillation(同策略蒸馏) 给出了一个惊艳的答案:
保持 On-Policy 的优势(学生在自己的状态中学习),但用 Off-Policy 的方式提供密集反馈(教师对每一步打分)!
换句话说:让学生模型自己做题(on-policy),但请教师模型对每一步都打分(dense reward)——这就是"两全其美"的方案。
具体来说
- 由学生自己生成答案:用学生模型(如 Qwen3-8B)解数学题,生成完整的推理过程
- 教师逐步评分:用强大的教师模型(如 Qwen3-32B)对学生的每个动作(token)进行评分
- 精准学习纠错:学生模型知道自己哪一步对、哪一步错,针对性改进
这就像有一个 AI 教练实时观看你自己下的每一步棋,在每一步后都告诉你这步是"妙手"还是"昏招",并展示正确的走法应该是什么。
03实验结果:成本暴降,效果不减
Thinking Machines Lab 在论文中展示了惊人的实验结果:
数学推理任务
训练 Qwen3-8B-Base(学生模型)解决数学竞赛题(AIME'24)时,使用 Qwen3-32B 作为教师模型。
第一阶段:使用 OpenThoughts 数据集 https://www.modelscope.cn/datasets/open-thoughts/OpenThoughts3-1.2M 进行全参数 SFT,在训练 40 万条数据后,Qwen3-8B-Base 模型的 AIME'24 得分达到了 60 分。
第二阶段:基于该模型检查点,对比三种训练方法将模型分数提升到 70 分所需的成本:
| 方法 | 所需数据量/计算量 |
| SFT(异策略) | 根据训练趋势估算,约需 160 万条数据 |
| RL(强化学习) | 根据 Qwen3 技术报告,需要 17,920 GPU 小时 估算约等同于 200 万条 SFT 数据的训练成本 |
| On-Policy 蒸馏 | 只需要 1,800 GPU 小时 |
结论:On-Policy 蒸馏相比 RL 只需要约 十分之一的计算量!
更神奇的是,实验发现即使只用一道题反复训练,On-Policy 蒸馏也能让学生模型学会解题能力,而不会简单地死记硬背答案。这是因为它学的是"分布"而不是"答案"。
个性化助手训练
研究人员还测试了一个实际场景:给通用助手模型注入医疗领域知识,同时保持原有的对话能力。
结果显示:
| 方法 | 医疗知识 | 对话能力 | 评价 |
| 传统 SFT | ✅ 学会 | ❌ 严重下降 | 灾难性遗忘 |
| On-Policy 蒸馏 | ✅ 学会 | ✅ 成功保留 | 持续学习成功 |
为什么 RL 探索成本高,而蒸馏可以避免?
强化学习(RL) 之所以训练成本高,是因为它需要在庞大的"策略空间"中通过大量随机尝试和试错来摸索有效策略,这个过程消耗了绝大多数计算资源。
On-Policy 蒸馏 则完全不同——教师模型已经掌握了正确的策略,能够直接向学生模型展示"标准答案",让学生无需盲目探索,只需模仿学习即可。
打个比方:RL如同蒙眼闯迷宫,全靠试错;On-Policy蒸馏则是有人实时指路,在自主探索中少走弯路、高效抵达终点。
04技术细节:反向 KL 散度的妙用
对于技术爱好者,这里简单介绍一下核心原理:
On-Policy 蒸馏使用反向 KL 散度作为损失函数:
这个公式的含义是:
- 从学生模型自己的分布中采样(on-policy 关键)
- 让学生在每个时间步都向教师模型靠拢(提供密集反馈信号)
- 学生模型学习的是"在我这种情况下,老师会怎么做"
05训练实践
理论虽然精彩,但如何将其应用到实际项目中?在真正动手实践 On-Policy 蒸馏时,我们会遇到两个核心挑战:
挑战一:在线生成的性能瓶颈
与 SFT 使用离线数据不同,On-Policy 蒸馏需要学生模型实时生成数据。这意味着:
- 每个训练批次都要先运行学生模型推理,生成完整的回答序列
- 这个在线生成过程会显著拖慢训练速度,成为性能瓶颈
- 如果使用传统的训练模式加载学生模型,推理效率低下
解决方案:vLLM 加速
vLLM 是目前开源社区主流的 LLM 推理加速引擎,通过 PagedAttention 等技术实现了数倍的吞吐提升。将学生模型的在线采样交给 vLLM 处理,可以大幅缓解性能瓶颈。
挑战二:教师与学生的资源需求不对称
在 On-Policy 蒸馏中,教师模型和学生模型扮演不同角色,资源需求差异显著:
- 教师模型:参数量大(如 32B),主要用于推理打分,需要更高的显存优化等级(如 Deepspeed ZeRO-3)
- 学生模型:参数量小(如 8B),需要频繁更新梯度,使用较低的优化等级(如 Deepspeed ZeRO-2)反而训练更快
如果对两个模型使用相同的 DeepSpeed 配置,要么教师模型显存不足,要么学生模型训练效率低下。
解决方案:独立的 DeepSpeed 配置
理想的方案是为教师和学生模型分别配置 DeepSpeed 策略:教师使用高等级显存优化保证能加载,学生使用低等级配置加速训练。
MS-SWIFT:一站式解决方案
好消息是,魔搭ModelScope社区自研的 SWIFT (Scalable lightWeight Infrastructure for Fine-Tuning) 框架已经内置了上述优化,让 On-Policy 蒸馏的实践变得简单高效。
核心特性:
- vLLM 集成:支持 Server/Colocate 两种模式,无缝加速学生模型采样
- 独立 DeepSpeed 配置:通过
teacher_deepspeed参数为教师模型单独指定策略 - 开箱即用的 On-Policy Distillation 训练流程
- 支持多种教师-学生模型组合
快速开始示例
以下是使用 SWIFT 进行 On-Policy Distillation 训练的完整示例,我们使用博客中的实验设置:使用 Qwen3-32B 模型在线蒸馏 Qwen3-8B-Base 模型。
安装 SWIFT
# 安装 SWIFT 源码版本 git clone https://github.com/modelscope/ms-swift.git cd ms-swift pip install -e . # 安装相关依赖 pip install vllm==0.11.0 pip install deepspeed pip install flash-attn --no-build-isolation
启动 vLLM Server
首先启动一个 vLLM server 用于加速学生模型的在线采样过程:
CUDA_VISIBLE_DEVICES=0 \ swift rollout \ --model Qwen/Qwen3-8B-Base \ --vllm_max_model_len 24192 \ --port 8000
On-Policy Distillation 训练
NPROC_PER_NODE=7 \ CUDA_VISIBLE_DEVICES=1,2,3,4,5,6,7 \ swift rlhf \ --rlhf_type gkd \ --model Qwen/Qwen3-8B-Base \ --teacher_model Qwen/Qwen3-32B \ --train_type full \ --dataset open-thoughts/OpenThoughts3-1.2M #10000 \ --seq_kd false \ --lmbda 1 \ --beta 1 \ --torch_dtype bfloat16 \ --num_train_epochs 1 \ --per_device_train_batch_size 1 \ --learning_rate 1e-5 \ --gradient_accumulation_steps 1 \ --max_length 16000 \ --max_completion_length 8192 \ --save_only_model true \ --dataloader_num_workers 64 \ --dataset_num_proc 4 \ --deepspeed zero2 \ --teacher_deepspeed zero3 \ --use_vllm true \ --vllm_mode server \ --vllm_server_host 127.0.0.1 \ --vllm_server_port 8000
资源占用
06结语
On-Policy Distillation 给出了大模型后训练阶段除了SFT和RL的另一条路,通过构造这样一条“继承式”的智能成长路线,让大模型成为在决策中不断反思和精进的学习者。未来的 AI 不一定越来越重,但一定会越来越聪明。而这种聪明,不再局限于少数巨无霸模型,而是可以通过高效的蒸馏机制,像种子一样播撒到千千万万的小模型之中。或许不久的将来,每位开发者都能轻松打造属于自己的“会思考、能纠错、可进化”的智能助手。
点击即可跳转相关实现文档:https://swift.readthedocs.io/zh-cn/latest/Instruction/GKD.html