前两天有个朋友问我,蒸馏不就是让小模型学大模型吗,为什么还要分这么多方法?这个问题挺好。因为蒸馏这个词现在被用得太宽了。
有人说蒸馏,指的是用 GPT 或 Claude 生成一批答案,然后拿去训自己的小模型。有人说蒸馏,指的是把一个 700 亿参数模型压到 70 亿参数。还有人说蒸馏,讲的是让模型学会工具调用、学会拒答、学会一步步推理。
它们都可以叫蒸馏,但学的东西完全不一样。如果只记一句,小模型学大模型,很容易误会成大模型会什么,小模型就能学会什么。
这就太乐观了。更准确的说法是,蒸馏不是把老师整个搬进学生脑子里,而是把老师在某些任务里的能力,拆成学生能吃下去的训练信号。
我先放一张图。

你可以把大模型想成一个很厉害的老师。但老师不是只有一种教法。
有时候老师只给标准答案。有时候老师会告诉你,每个选项它有多犹豫。有时候老师会把解题步骤写出来。有时候你还能看到老师脑子里某些中间状态。还有时候,老师不直接教你做题,只告诉你这个答案比那个答案更好。
这些东西,都可能变成蒸馏。所以今天这篇,我们不再讲蒸馏是什么。前面已经聊过了。今天往下拆一层,聊聊目前常见的蒸馏方案到底有哪些,它们各自让小模型学什么。

1️⃣ 答案蒸馏,最像抄一份好作业。
这是普通人最容易接触到的一种。你准备一批问题,让大模型回答,再把这些问题和答案整理成训练数据,拿去训练小模型。比如客服场景里,用户问退货、发票、物流、投诉,大模型给出比较稳的回复。你把这批回复洗干净,训练一个更小、更便宜的客服模型。
这类蒸馏的好处很直接。门槛低,只能调用外部接口也能做,不需要看到大模型内部。你只要能问它,就能拿到样本。
很多指令微调、自生成指令、Alpaca 这类数据生成思路,都可以放在这条线上理解。不是说它们只有蒸馏这一个名字,而是它们都用了一个很相似的动作,让强模型生成教学数据,让弱模型去学。
但它也最容易被高估。因为学生只看到最终答案,看不到老师为什么这么答。它可能学会老师的语气、格式、常见套路,但遇到没见过的问题,未必真的会判断。
你见过那种小模型吗?回答特别流畅,排版很规整,一追问细节就开始飘。很多时候,它不是不会说话,它是只学到了说话的样子。
2️⃣ 概率蒸馏,学老师的犹豫。
这类就比答案蒸馏细很多。我们平时看到模型输出一句话,好像它只是一个字一个字往外吐。其实在每一步生成前,模型内部都会给一堆候选词和片段打分。
比如用户问,巴黎是哪个国家的首都。老师模型可能认为下一个词是法国的概率很高,但它也会给法兰西、法国的不同写法留一点概率。最终答案只有一个,但概率分布里藏着老师的判断边界。
这就是 Hinton 那篇经典知识蒸馏论文里讲的「暗知识」。老师不只告诉学生正确答案,还告诉学生哪些错误答案比较接近,哪些错误答案离谱。
你想想老师批卷子。只写一个叉,学生知道错了。顺手写一句,你这一步思路接近了,但把条件看反了,学生学到的东西就多很多。
概率蒸馏也是这个味道。在大语言模型里,它常常表现为让学生去贴近老师的原始分数,或者下一个词的概率分布。这里你不用记住英文术语,先理解成模型在正式开口前,心里给每个候选答案打的分。
它的限制也很明显。你得拿到这些分数。普通接口通常只给你文本,最多给一点生成概率。想系统做概率蒸馏,往往要有老师模型的白盒权限,或者至少能拿到足够细的概率信息。
所以这类蒸馏更常见于模型厂商压缩自己的模型,而不是普通公司调用外部接口做一个小模型。
3️⃣ 中间层蒸馏,学老师脑子里的草稿纸。
如果概率蒸馏是在学老师最终出答案前的犹豫,中间层蒸馏就更往里走一步。它不只看输出,还看老师模型内部每一层怎么表示一句话、哪些词互相注意、不同位置之间形成了什么关系。
这类方法在 BERT 时代特别典型。DistilBERT、TinyBERT、MiniLM 这些工作,名字不一样,但都在做一件事,让小模型在内部表示上尽量贴近大模型。名字看着眼熟就行,普通读者不用硬记。
你可以粗略理解成,老师不只是交卷,还把自己的草稿纸给学生看。当然,这个草稿纸不是人类能直接读懂的自然语言。它是内部表示、注意力图、词与词之间的关系,背后是一堆向量和矩阵。
听着很硬核,但它解决的问题很朴素。如果你只让学生模仿最终答案,它可能有很多条路能走到类似结果。有些路是稳的,有些路是歪打正着。中间层蒸馏就是把老师内部的某些路线也拿来当约束,让学生别只在终点像,途中也尽量像。
这类方法的优点是细,缺点也是细。你得能进模型内部,还得处理层数不一样、维度不一样、结构不一样的问题。一个 700 亿参数老师和一个 70 亿参数学生,不是天然一一对应。老师 80 层,学生 32 层,哪一层对哪一层,怎么对齐,本身就是工程活。
所以它很适合自家模型压缩,不太适合拿一个外部闭源模型随便蒸。

4️⃣ 过程蒸馏,学老师怎么走到答案。
这两年大模型一讲推理,就绕不开过程蒸馏。答案蒸馏只告诉学生,最终答案是 42。过程蒸馏会进一步告诉学生,题目怎么拆,条件怎么用,哪一步容易错,为什么会得到 42。
Orca 那篇论文就很典型,它强调从 GPT-4 这类强模型那里学习复杂解释轨迹,而不是只学短答案。这招为什么有用?因为很多难任务,错不在结尾那个词,而在中间某个判断。数学题、代码题、复杂问答、法律条款分析、医学场景的辅助判断,都不适合只扔一个结论给学生。
你要让它学会拆问题。但这里有个坑,特别大。过程写得像真的,不代表过程就是真的。
大模型很擅长写一段看起来连贯的推理。它可能中间已经错了,但后面还能写得很顺。学生如果照单全收,就会学到一种更危险的能力,错得很有条理。
所以过程蒸馏最好配合验证器、规则检查、单元测试、可执行环境。比如代码题,不要只看解释漂不漂亮,要跑测试。数学题,不要只看步骤完整,要验算。工具调用,不要只看计划合理,要看任务有没有真的完成。
我自己现在越来越觉得,过程蒸馏真正蒸的不是长推理文本,而是经过验证的解决路线。没验证的过程,只是更长的幻觉。
5️⃣ 偏好蒸馏,学老师的口味。
还有一种蒸馏,看起来不像教学,更像选美。同一个问题,模型给出两个回答。老师模型、人类标注员,或者奖励模型来判断,哪个更好。
学生不一定直接学某个标准答案,而是学一种偏好,什么样的回答更安全,什么样的回答更有帮助,什么样的回答啰嗦,什么样的回答该拒绝。
RLHF、DPO 这一类对齐方法,很多时候都可以放到偏好蒸馏这条线上理解。如果这些英文名看着烦,先不用管,抓住一点就行,它们都在用「比较结果」教模型,什么回答更好,什么回答更不该要。
这类方法最适合解决口味问题。比如你希望模型别上来就拒答,也别什么都敢答。你希望它语气不要像客服机器人,也不要像过度热情的销售。你希望它遇到不确定问题时会承认不确定,而不是一本正经编。
这些很难用标准答案解决。因为很多问题没有唯一答案,但有更好的答案。偏好蒸馏学的就是这个更好。
它的风险也在这里。评分标准如果歪了,模型会很稳定地歪。你奖励它又短又肯定,它就会越来越短、越来越敢下结论。你奖励它安全,它可能会越来越保守,什么都不敢说。
很多人以为对齐是在给模型装刹车。其实刹车装在哪、踩多重、什么时候松开,都是偏好数据教出来的。
6️⃣ 自蒸馏和在线蒸馏,让学生在自己的错误上学习。
前面几类,基本都是老师先准备教材,学生照着学。但真实使用里,学生犯的错,往往跟老师准备的题不一样。
这就会出现一个问题,训练时看到的是老师的高质量答案,使用时遇到的是学生自己生成到一半的局面。它走岔了,后面就越来越岔。在线蒸馏想解决的就是这个错位。
一种常见做法是,先让学生自己回答,再让老师、评审模型或验证器来批改。学生不是只学老师理想状态下的答案,而是学自己真实会犯的错误该怎么修。
自蒸馏也类似,只不过老师可能不是另一个更大的模型,而是同一个模型的旧版本、新版本,或者模型自己生成再筛选出来的更好答案。听起来有点像自己教自己。
但它不是玄学。关键在于筛选和验证。如果有可靠的评分器、测试环境、规则检查,自蒸馏可以把模型自己探索出来的好样本留下来。反过来,如果没有验证,它也会把坏习惯一轮轮放大。
这就是这类方法最微妙的地方。它很有潜力,也很容易自嗨。
7️⃣ 多老师和助教蒸馏,别让小学生直接听院士讲课。
很多人做蒸馏会遇到一个很现实的问题,老师太强,学生太小。大模型讲得很好,但小模型吃不下。
这时候可以加一个中间层,先让大老师教一个中等模型,再让中等模型教小模型。这个中等模型就像助教。
为什么助教有用?因为大老师的能力跨度太大,输出里有很多细节对小模型来说太难。中间模型会把一部分能力变成更适合学生容量的形式。
还有一种是多老师蒸馏。比如代码老师负责代码,数学老师负责数学,安全老师负责拒答和边界,再让学生从多种老师那里学。
这听起来很美,但也有代价。老师之间可能打架。一个老师喜欢简洁,一个老师喜欢解释。一个老师偏保守,一个老师偏开放。你把它们的样本混在一起,学生可能会变成一个风格摇摆的人。
所以多老师蒸馏不是老师越多越好,而是要有清晰的路由和统一的评测。学生最怕的不是老师少,是每个老师都在用不同标准批作业。
8️⃣ 合成数据蒸馏,连题目也让老师帮你出。
前面说答案蒸馏时,我们默认已经有一批问题。但现实里,很多公司连问题都没有。
比如你想训练一个电商客服小模型,可历史工单太乱,隐私字段一堆,格式也不统一。那怎么办?一种办法是让大模型不仅生成答案,还生成问题、场景、用户画像、边界条件、反例。它不只是老师,还临时当出题人。
自生成指令这条线就是这个思路的代表。让模型自己生成问题,再生成回答,再筛选,扩充训练集。
这类方法很实用。尤其在冷启动阶段,你没有足够多的真实样本,又想先把模型能力跑起来,合成数据能帮你起步。
但它的天花板也很明显。大模型出的题,可能会越来越像大模型以为的世界。真实用户的问题往往很脏,很短,很怪,很没有上下文。合成数据太干净,模型上线后就会觉得现实用户怎么都不按剧本说话。
所以合成数据最好只是脚手架,不要当成房子本身。后面一定要接真实数据回流、人工抽检、线上评测。
9️⃣ 行为蒸馏,学的不只是怎么说,还是什么时候动手。
这一类在智能体和工具调用里越来越重要。以前我们训练模型,主要看它输出什么文字。现在很多模型要调用工具,要查网页,要写代码,要读文件,要点按钮,要决定什么时候停。
这时候蒸馏的对象就不只是答案,而是一整条行为轨迹。比如一个写代码的智能体修缺陷,它先读报错,再搜相关文件,再改某个函数,再跑测试,发现失败,再回去补边界条件,然后提交结果。
你如果只拿末尾那份代码改动去训练,学生学到的是结果。你如果把中间的工具调用、观察、判断、失败修正都记录下来,学生学到的就是工作流。
这就是行为蒸馏。函数调用、工具使用、工作流轨迹、重排路线、停止条件,都可以变成训练信号。
但这类蒸馏最怕没有环境。因为行为对不对,不能只看文字。调用了一个搜索工具,看起来很积极,但搜到的信息是不是有用?写了代码,看起来很完整,但测试过没过?点了一个按钮,看起来像完成任务,但页面状态真的变了吗?
智能体行为蒸馏如果没有沙盒验证,很容易训练出一种熟练表演工作的模型。它会显得很忙,但不一定真的把事办成。
顺着上面这些方法看下来,你会发现一个更简单的分法。
如果你只能调用外部接口,那你主要能做答案蒸馏、过程蒸馏、偏好数据、合成数据和行为轨迹。如果你拥有老师模型,能拿到内部信号,那你可以做概率蒸馏、中间层蒸馏、注意力蒸馏、关系蒸馏。如果你有真实使用环境和验证器,那你还能做在线蒸馏、自蒸馏和智能体行为蒸馏。
所以蒸馏不是先选一个论文名,而是先问三件事。你想让学生学什么?你能看到老师的哪一层?你怎么判断学生真的学会了?

如果是企业内部的垂直任务,比如客服、摘要、文档抽取,我会优先从答案蒸馏开始,加上少量过程蒸馏,再认真做样本清洗和评测。别一上来就追求复杂。很多时候,真正救命的是高质量样本,不是更花的训练技巧。
如果你是模型团队,想把自家大模型压成小模型,那概率蒸馏和中间层蒸馏就很值得做。因为你有白盒权限,能拿到老师内部信号,不用只盯着最终答案。
如果你在做推理模型,就不能只蒸答案。要蒸过程,要蒸偏好,要有验证器。尤其代码和数学,能跑就跑,能测就测,别相信一段漂亮解释。
如果你在做安全、风格、拒答边界,偏好蒸馏比答案蒸馏更关键。因为这类问题不是对不对,而是哪种回答更合适。
如果你在做智能体,重点就变成行为轨迹。什么时候查,什么时候写,什么时候停,什么时候回滚,这些都要被记录、筛选和验证。
讲到这里,我觉得可以把蒸馏压成一句更实用的话。蒸馏不是让小模型变成大模型。蒸馏是把大模型身上的某一种能力,拆成学生能学、能练、能被验证的教材。
教材选错了,学生就会学偏。只给答案,它可能学会表演。给概率,它能学到老师的犹豫。给中间层,它能贴近老师的内部表示。给过程,它可能学会拆题。给偏好,它会学到口味和边界。给行为轨迹,它才可能学会真正做事。
但每一种教材都有代价。答案便宜,但浅。概率细,但要权限。中间层强,但工程重。过程有用,但要验证。偏好能对齐,但标准会带偏。自蒸馏有潜力,但容易把坏习惯滚大。行为蒸馏最接近智能体的未来,但必须有真实环境兜底。
所以以后你再看到一个小模型宣传自己蒸馏自某个大模型,不用马上兴奋,也不用马上嘲笑。先问一句,它蒸的到底是什么?是答案,是概率,是过程,是偏好,还是工具行为?
再问一句,它怎么证明自己学会了?这两个问题问清楚,很多模型宣传里的烟雾,就会散掉一半。
✍️ 我是阿锦
我会持续分享 AI 工具和 AI coding 的实操——不讲空话,用实践带你看更真实的东西。
觉得有用,点个赞、转给也在折腾 AI 的朋友,就是最大的支持。想看啥?评论区告诉我——下一篇,就是为你而探索。
想常来一起聊 AI,点下左下角 关注,回复 交流 就行。
夜雨聆风