大模型通常拥有更强的理解和生成能力,但参数规模、推理延迟与部署成本也更高。

如果一个模型的效果很好,却无法放进手机、浏览器或资源有限的服务器里,这些能力就很难真正落地。
一个自然的想法是:
能不能让大模型当老师,把已经学会的知识教给一个更小的模型?
这就是知识蒸馏(Knowledge Distillation)要解决的问题。
它并不是把大模型的参数直接复制给小模型,也不只是收集一批答案让小模型死记硬背,而是让学生模型尽可能模仿教师模型对数据的理解方式。
在化学中,蒸馏会利用不同成分挥发性质的差异,将混合物中的目标成分分离出来。
知识蒸馏借用了这个名字:
能力更强、结构更大的模型↓ 提取知识能力更小、部署更轻的模型
其中:
教师模型通常已经训练完成。蒸馏时,学生模型不仅学习训练数据里的正确答案,还会学习教师模型给出的预测信息。
假设我们要训练一个图片分类模型,输入是一张猫的照片。
普通标签可能只告诉模型:
猫:1狗:0老虎:0汽车:0
这种明确的标准答案叫硬标签(Hard Label)。
硬标签能够告诉学生“正确答案是猫”,却没有说明:
对于硬标签来说,所有错误选项都是 0,狗、老虎和汽车没有区别。很多有价值的类别关系因此被丢掉了。
教师模型处理同一张图片时,内部输出可能更接近下面的概率分布:
猫: 80%狗: 10%老虎:9%汽车:1%
这种带有相对概率的信息通常被称为软标签(Soft Label)。
它不只给出“猫”这个结论,还暴露了教师模型对不同类别关系的判断:
猫与狗有一些相似之处猫与老虎的视觉特征也有关联猫与汽车几乎没有关系
教师模型在大量数据中学到的这种类别关联,经常被称为“暗知识”(Dark Knowledge)。
因此,知识蒸馏中的学生模型要模仿的不是一个孤立答案,而是教师模型输出分布的形状。
模型在得到最终概率之前,通常会先输出一组未经归一化的分数,也就是 logits。
Softmax 会把这些分数转换成概率:
pᵢ = exp(zᵢ / T) / Σ exp(zⱼ / T)
其中:
zᵢ 是第 i 个类别的 logitT 是温度(Temperature)普通分类常使用 T = 1。蒸馏训练通常会使用大于 1 的温度,让概率分布变得更平滑。
例如,原本非常集中的分布:
猫:96% 狗:3% 老虎:1%
经过较高温度软化后,可能更容易看出次要类别之间的差异:
猫:60% 狗:23% 老虎:17%
这里的数字只是为了说明分布变化,不是固定计算结果。
温度过低时,教师输出会非常接近硬标签;温度提高后,学生能看到更多非目标类别的信息。但温度也不是越高越好,过度平滑会让类别差异变得太弱。
经典知识蒸馏通常同时保留两种学习信号。
学生模型仍然要对训练数据的标准答案负责,例如这张图确实是一只猫。
这一部分通常使用普通的交叉熵损失。
学生模型还要让自己的软化输出接近教师模型的软化输出。
这一部分常使用 KL 散度或交叉熵衡量两个分布之间的差异。
整体目标可以简化理解为:
总损失= α × 学习真实答案+ β × 模仿教师分布
在常见实现中,蒸馏损失还会乘以 T²,用于补偿温度变化带来的梯度缩放。
因此,学生既不会完全抛开真实数据盲目模仿教师,也不会只看到非黑即白的标准答案。
完整过程可以概括为:
同一批训练数据 ├──→ 教师模型 ──→ 软化后的教师分布 ──┐ │├─→ 计算损失 → 更新学生模型 └──→ 学生模型 ──→ 软化后的学生分布 ──┘ + 真实标签
教师模型一般只参与前向计算,不再更新参数;真正被训练的是学生模型。
可以把训练学生模型想象成培养一名新厨师。
第一种方法是只给他菜谱:
盐 3 克油 20 毫升翻炒 2 分钟
这很像硬标签。新人知道最终应该怎么做,却不知道为什么火候要这样控制,也不知道食材状态发生变化时该如何调整。
第二种方法是让经验丰富的厨师现场示范。
新人不只看到成品,还能观察大厨什么时候调火、怎样判断成熟度、遇到不同食材时如何改变操作。
这些没有完整写在菜谱里,却能体现经验的信息,就像教师模型概率分布中包含的暗知识。
知识蒸馏不是保证学生最终与老师完全相同,而是用更丰富的监督信号,让容量较小的学生尽量学到老师的判断方式。
不一定。
在经典分类蒸馏中,训练者通常能够访问教师模型的 logits 或完整概率分布,再让学生直接拟合这些信息。
但通过大模型 API 获得的往往只是一段最终回答:
问题 → 教师模型 → 文本答案
如果接口没有提供 logits 或 token 概率,学生就看不到教师完整的输出分布。这种利用教师生成内容训练学生的方法,通常更接近响应蒸馏(Response-based Distillation)或基于合成数据的蒸馏。
在大语言模型中,常见做法还包括:
它们都体现了“教师向学生传递能力”的思路,但能获得的信息不同,训练方式也不完全相同。
因此,知识蒸馏不能简单理解成“向大模型发请求并保存答案”。能否访问概率、训练数据怎样构造、损失函数如何设计,都会影响它属于哪种蒸馏方式。
这几个概念经常同时出现,但解决问题的方式不同。
| 方法 | 核心操作 | 是否需要教师模型 | 主要目的 |
|---|---|---|---|
| 微调 | 用特定任务或领域数据继续训练模型 | 不一定 | 让模型适应新任务或新领域 |
| 知识蒸馏 | 让学生模型模仿教师模型 | 是 | 把教师能力迁移到更小模型 |
| 量化 | 用更低精度表示权重或计算 | 否 | 减少显存、存储和计算开销 |
| 剪枝 | 删除不重要的连接、通道或参数 | 否 | 降低模型规模与计算量 |
它们并不互斥。
一个模型可以先通过蒸馏得到更小的学生模型,再进行量化;也可以针对某个业务领域继续微调。实际部署中经常组合使用多种方法。
学生模型参数更少,通常需要更少的显存和计算资源,适合高并发服务。
较小的模型更容易降低推理延迟,可用于移动端、边缘设备和实时应用。
同样规模的学生模型,如果只学习硬标签,得到的监督信息比较有限;加入教师信号后,往往能学习到更细致的决策边界。
教师模型可以为大量未标注样本生成软标签或回答,再将这些数据用于训练学生模型。
知识蒸馏不是无损复制。
如果学生模型太小,它没有足够的参数容量承载教师知识,即使训练数据很多,也不可能完整复现教师能力。
教师模型存在偏见、幻觉或错误时,学生可能把这些问题一起学走。教师输出并不天然等于正确答案。
学生只会在蒸馏数据覆盖的任务和分布上模仿教师。如果数据集中只有数学题,学生不会因此自动获得教师在代码、写作和视觉理解方面的全部能力。
生成训练数据、运行教师模型、保存输出以及训练学生模型都需要资源。它是在模型能力与部署成本之间做权衡,不是零成本获得大模型能力。
使用第三方模型生成训练数据时,还需要遵守对应服务条款、数据许可和知识产权要求。技术上能够采集输出,不等于在任何场景下都可以直接用于训练。
知识蒸馏的核心不是“把大模型缩小”,而是让一个学生模型学习教师模型提供的额外监督信息。
硬标签只告诉学生最终答案,软标签还能表现教师对类别相似性和决策边界的判断。学生同时学习真实标签与教师分布,就有机会在较小参数规模下获得比独立训练更好的效果。
可以把整篇文章浓缩成下面这条链路:
教师模型输出知识↓软标签、logits、回答或中间特征↓学生模型模仿教师↓用更小的模型换取更低的部署成本
但蒸馏不是复制。学生模型的容量、蒸馏数据的覆盖范围、教师输出的质量以及训练目标的设计,共同决定了最终能够迁移多少能力。