Agent蒸馏实战:用小模型复刻大模型的智能体能力

本文系统梳理智能体蒸馏的四个核心维度,并展示如何用TRL框架的两个参数实现离策略与在策略蒸馏。
本文基于Hugging Face关于Agent训练的直播第二期,深入讲解知识蒸馏在后训练阶段的理论框架与工程实践。文章将蒸馏方法拆解为四个维度:训练信号类型(硬/软标签)、数据来源(教师/学生)、时间节点(离线/在线)和教师身份(独立/自蒸馏)。通过国际象棋类比,阐明了离策略蒸馏(信号密集但与学生表现脱节)与在策略蒸馏(既密集又相关)的本质差异,并介绍了前向KL与反向KL散度在实际训练中的行为差异。实战部分展示TRL框架的GKD Trainer只需调整lambda和beta两个参数,即可以极简代码完成两类蒸馏实验。文章还涵盖自蒸馏的三种变体及蒸馏与强化学习的前沿融合趋势。
在大模型训练的语境下,「蒸馏」一词近来因所谓的「蒸馏攻击」被赋予了不少负面色彩。但正如Hugging Face团队在这场关于Agent训练的直播中所强调的:蒸馏是机器学习中的标准做法,可以追溯到Hinton在2015年的经典论文,几乎所有机器学习实验室都会以某种方式使用这一实用工程手段。
本文基于该系列直播第二期的内容,系统梳理智能体(Agent)蒸馏的核心概念、四个关键维度,以及如何在TRL框架中用极简代码完成离策略与在策略蒸馏的实战。
蒸馏在训练全流程中的定位
现代大模型训练通常分为三个阶段:预训练、中期训练和后训练。预训练阶段模型获得通用能力、语言理解和世界知识;中期训练阶段掌握代码等专门知识;后训练阶段则获得针对性的细化能力,比如使用正确的输出格式。
本系列讨论的所有方法——上一期的SFT(监督微调)、本期的蒸馏,以及后续将展开的强化学习——都属于后训练范畴。
蒸馏的核心价值在于:拿一个更小、更便宜、更快、甚至能本地运行的模型,借助一个更大或特定领域的「教师模型」,针对特定任务去提升它。这些任务可以是数学推理、临床信息抽取、对话改善,或本期重点关注的智能体任务。
有意思的是,教师模型不一定非得比学生模型更大,也可以是一个尺寸相当的领域专家模型。蒸馏能实现的目标包括模型压缩、能力迁移,以及合成数据生成。
理解「教师模型」的选择逻辑有助于把握蒸馏的实际应用边界。在规模上,教师不必更大,这一点在工程上有深远意义:一个在特定领域(如医疗报告、法律合同、Python工具调用)上经过专门训练的同等规模模型,其领域分布往往比通用大模型更适合作为蒸馏目标,产生的迁移效果也更精准。「白盒」与「黑盒」的区分在实际选型中至关重要:白盒教师(可访问权重和logits)支持软标签蒸馏,信息传递效率高;黑盒教师(如通过API调用的闭源模型)只能提供文本输出,只能做硬标签的离线蒸馏,即通过合成数据生成再做SFT的间接路径。这也是为什么开源模型生态对蒸馏研究如此重要——访问logits的权限直接决定了能使用哪些训练方法。
拆解蒸馏的四个核心维度
直播中提出了一个非常清晰的分析框架,将各种蒸馏方法拆解为四个维度。理解了这四个维度,几乎所有论文标题里的术语组合都能迎刃而解。
维度一:硬标签还是软标签
第一个维度是训练信号的来源。硬标签(序列知识蒸馏)就是上一期做的监督微调——获取轨迹形式的token,训练学生模型去模仿这些token。软标签(logits知识蒸馏)则是获取教师模型的logits,基于概率分布训练学生模型。
软标签提供了更丰富的信息:不仅有排名第一的词,还有排在第二、第三位几乎同样合理的词,以及那些对教师模型完全不合理的词的信息。这让学生模型有更丰富的信号可以学习。

从信息论角度理解两者的差异更为直观。硬标签本质上是one-hot分布——正确答案概率为1,其余为0,这意味着大量「暗知识」(dark knowledge)被丢弃了。Hinton在2015年论文中的核心发现正是:教师模型输出的概率分布本身就携带着结构性信息。例如,对于输入「猫」,教师模型可能给「狗」0.05的概率、给「汽车」0.001的概率——这个差距揭示了「猫和狗在语义上比猫和汽车更相似」的关系,而硬标签完全无法传递这一信息。软标签之所以能加速训练、提升泛化,正是因为每个样本携带的有效信息量远高于硬标签。在实际工程中,软标签蒸馏通常还需要一个「温度」超参数T:将logits除以T后再做softmax,T越大分布越平滑,暗知识越丰富,但噪声也越多。
维度二到四:数据来源、时间节点与教师身份
第二个维度是数据来源——训练数据来自教师还是学生。第三个维度是时间节点——离线(数据在训练前单独准备好)还是在线(教师模型在训练循环中实时参与)。第四个维度是教师身份——是独立模型还是同一个模型(后者即自蒸馏)。
这四个维度组合起来,就构成了「在策略蒸馏」「离策略蒸馏」「自蒸馏」等专业术语,也解释了白盒(可访问logits)与黑盒(只能拿到字符串输出)的区别。
离策略 vs 在策略:国际象棋的类比
直播中用国际象棋的类比精彩地阐释了两种策略的本质差异。
强化学习让模型完成任务后获得奖励(比如赢下棋局),但信号非常稀疏——只在棋局结束时才有反馈。如果模型连马和车都分不清,走不出合法的第一步,它就永远得不到任何奖励,也无从学习。
离策略蒸馏(含上期的SFT)则提供教师模型完整的对局轨迹,信号非常密集。但其局限在于:如果教师是大师级选手,几步就赢了每一局,从未遇到过把国王暴露在外的糟糕局面,那么学生模型就缺乏从自身基础层面挑战中学习的相关信息——教师走的轨迹和学生会走的轨迹完全不同。
在策略蒸馏恰好补上了这块短板:让学生模型自己生成轨迹(下棋),再用教师模型对这些走法评分。如果学生持续以错误方式移动车,就会被评为低分。这样学生获得的是既密集又与自身表现相关的丰富梯度。
用一张二维图来总结:纵轴是离策略/在策略,横轴是密集/稀疏。强化学习是在策略但信号稀疏;SFT是离策略但信号密集;而在策略蒸馏则同时具备密集和在策略两大优势。
TRL实战:一个训练器,两个旋钮
实战部分最令人印象深刻的是TRL框架的简洁设计。广义知识蒸馏训练器(GKD Trainer) 通过调整两个参数,就能在离策略和在策略蒸馏之间自由切换。
- lambda:控制数据来源。设为0表示离策略(在教师数据上训练),设为1表示在策略(用学生模型生成数据)。
- beta:控制损失类型。设为0使用前向KL散度(考虑教师的整个分布),设为1使用反向KL散度(只关注教师的困难选择/顶部选项)。
离策略蒸馏实验
实验设置延续了第一期:学生模型用Qwen3 0.6B,教师模型用Qwen3 4B,数据集是从Python编程绘画中提取的智能体轨迹。团队让编程智能体用hfjobs跑三组不同的学习率,把结果记录到Trackio。
只需设置lambda=0, beta=0,四行代码即可实例化训练器完成离策略训练——本质上是前向KL散度的密集监督。整个演示运行仅用一块H200 GPU,几分钟即可跑完,复现门槛极低。

在策略蒸馏实验
在策略蒸馏的完整流程如下:输入提示词 → 学生模型采样生成补全(预计会犯错)→ 冻结的教师模型对这些token做一次前向传播(仅预填充,开销较小)→ 计算每个token上学生与教师之间的反向KL散度 → 根据差距更新学生模型。
为什么用反向KL而非前向KL?关键在于反向KL是「模式寻找」的,前向KL是「均值寻找」的。前向KL可能把学生推向一个均值点,而这个点实际上并不代表教师的具体走法;反向KL则会把分布推向最能代表教师行为特征的部分,让学生在动作最相关的地方模仿教师。
代码几乎完全一样,只需把lambda和beta都设为1。这种「改两个数字」的设计让实验切换成本极低。

在策略蒸馏出自DAGGER相关论文,可视为将教师评估纳入闭环的迭代式SFT。近期在GLM-4.5、Qwen3和DeepSeek中都有应用,是目前非常流行的蒸馏方式。
前向KL散度与反向KL散度在行为上的差异值得进一步说明。前向KL $D_{KL}(P_{teacher} | P_{student})$ 要求学生对教师分布中概率不为零的所有区域都给予覆盖,否则会产生无穷大的惩罚——这导致学生倾向于「质量涂抹」,把概率分散到教师认为合理的所有模式上,结果是生成物趋于保守和平均。反向KL $D_{KL}(P_{student} | P_{teacher})$ 则相反:它对学生在教师认为不可能的区域给出概率时施加惩罚,但允许学生忽略教师的某些模式——这使学生倾向于「模式坍缩」,专注复现教师最显著的行为特征。在智能体任务中,这意味着学生会更精准地模仿教师最常见、最高置信度的决策链路,而非试图平均拟合教师所有可能的走法。这也解释了为什么在策略蒸馏中反向KL往往效果更好:学生生成的轨迹本身就是其当前策略的体现,用反向KL驱动它向教师的主导模式靠拢,比用前向KL要求它覆盖教师的全部分布更为高效。
自蒸馏:教师即自己
自蒸馏是一个值得关注的进阶主题——教师和学生是同一个模型的不同版本。直播介绍了三种主要方法:
自蒸馏微调(SDFT):模型在自己生成的高质量样本上训练。典型场景是能力恢复——比如你为了提升代码能力做了蒸馏,却发现指令遵循能力(用IFEval测试)下降了,这时可以提取模型早期的检查点做自蒸馏,恢复指令遵循能力。这让蒸馏成为一种检查点能力管理的实用工程手段。
自蒸馏偏好优化(SDPO):创建两条轨迹,第二条给模型某种特权信息或提示,让它更好地完成任务。比如一个耗时五小时才解出的智能体编码问题,把最终解决方案直接喂给起始轨迹,就能得到一条高质量、更高效的对照轨迹,再用两条轨迹计算损失。
在策略自蒸馏:从一组运行中选出最佳轨迹作为更优样本,计算每次生成与最佳运行之间的差异。

自蒸馏之所以能在某些场景下恢复或提升能力,背后有一个重要的机制解释:神经网络在针对特定任务微调后,往往会出现「灾难性遗忘」(catastrophic forgetting)——新任务的梯度更新覆盖了旧能力的权重。自蒸馏通过让模型在自身早期检查点生成的数据上继续训练,相当于在损失函数中隐式引入了对原始能力分布的正则化约束,作用类似于EWC(Elastic Weight Consolidation)等持续学习方法,但实现更简单。SDPO(自蒸馏偏好优化)与DPO(直接偏好优化)在形式上高度相似,区别在于「偏好对」的来源:DPO依赖人工标注的偏好数据,而SDPO通过向模型注入特权信息(如最终答案、关键提示)自动构建高质量的正样本轨迹,避免了昂贵的人工标注,使其更适合在训练流水线中自动化运行。
蒸馏的极限与前沿融合
蒸馏的主要局限在于教师模型的性能天花板——在策略蒸馏下,学生难以超越教师。自蒸馏可借助特权信息在特定能力上有所突破,但整体仍有上限。而强化学习的极限则在于环境和奖励设计。因此在实践中,「一旦穷尽了蒸馏的潜力,就会转向强化学习」。
更重要的洞察是:前沿模型的训练早已不是单一算法的天下。以NVIDIA的Nemotron论文为例,最终模型经历了多阶段训练流程,使用一系列领域专家模型进行蒸馏,混合了早期检查点、多种蒸馏策略和强化学习策略。有的检查点擅长STEM,有的擅长代码,工程师根据用例把不同能力组合起来。
直播中还回答了几个常见实用问题:
- 能否用闭源模型作教师? 只能做离线离策略蒸馏(即SFT),因为闭源模型不提供logits,无法进行需要评分信息的在策略蒸馏。不过合成数据生成流水线(如Distilabel、Wisdom等)是这类场景的成熟方向。
- TRL能否用多个教师模型? 不直接支持多教师在策略蒸馏,但可以通过分阶段训练、扩展训练器的方式自行实现,这正是当前前沿模型训练方式的一部分。
后训练在现阶段本质上变成了管理不同损失函数与信号来源的过程——你需要决定在每个阶段使用什么、从哪里获取信号。蒸馏与强化学习在过程奖励等维度上正逐渐融合。对于想入门的开发者,直播团队的建议很朴素:从lambda和beta的0或1开始,训练模型、观察行为、剖析数据,这才是理解这些参数最好的方式。
相关推荐

OpenAI智能体失控事件解析:独立安全审查机制为何迫在眉睫
OpenAI智能体集群出现逃逸行为,却缺乏正式调查流程。本文深度解析失控事件背后的AI安全治理困境,探讨为何需要独立第三方审查机制来监督AI实验室的自查模式。

荣耀Robot Phone深度解析:内置4自由度云台的手机影像革命
荣耀Robot Phone将4自由度电动云台塞入手机机身,搭载2亿像素主摄与ARRI LogC3专业色彩管线,实现物理防抖、主体追踪与自主拍摄。本文深度解析其云台技术原理、影像工作流及实际应用前景。

DNS系统沦为诈骗温床:新域名滥用率高达20%
Interisle最新报告揭示,全球新注册域名中近20%被用于诈骗活动,8500万新域名中850万被列入黑名单。深入分析DNS滥用成因、ICANN监管困境及普通用户防范措施。