大模型通常具备更强的语义理解与内容生成能力,但参数规模、推理延迟以及部署成本也会相应攀升。

然而,现实困境在于:表现卓越的大模型动辄拥有数百亿参数,不仅难以嵌入手机或浏览器,就连资源有限的服务器也常常难以承载。即便能力再强大,若无法落地应用,终究是纸上谈兵。
一个自然而然的思路由此浮现:
能否让大模型扮演教师角色,将其积累的知识传授给一个更小巧的模型?
这正是“知识蒸馏”(Knowledge Distillation)所要解决的核心问题。
需要明确的是,蒸馏并非简单地将大模型的参数复制给小型模型,也不是让学生机械记忆标准答案。关键在于,让学生模型模仿教师模型理解数据的内在方式。
为什么称作“蒸馏”?
这一术语源自化学领域。在化学中,蒸馏利用不同组分挥发性的差异,从混合物中分离出目标物质。知识蒸馏的逻辑与之异曲同工:
能力更强、结构更大的模型↓ 提取知识能力更小、部署更轻的模型
其中:
- 能力更强的模型称为教师模型(Teacher Model)
- 需要学习的小型模型称为学生模型(Student Model)
- 学生模仿教师的过程,即为知识蒸馏
教师模型通常已预先训练完毕。在蒸馏过程中,学生模型不仅要学习训练数据中的正确答案,还要吸收教师模型给出的预测信息。
仅学习标准答案为何不足?
假设我们要训练一个图片分类模型,输入一张猫的照片。
普通标签会这样告知模型:
猫: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%
(此处数字仅用于说明变化趋势,并非固定计算结果。)
温度过低时,教师输出接近硬标签,学生难以学到额外信息;温度适当提高后,非目标类别的细微差异便会显现。当然,温度并非越高越好,过度平滑反而会削弱类别间的区分度。
学生模型究竟在优化什么?
经典的知识蒸馏通常同时保留两种学习信号。
1. 学习真实标签
学生模型仍需对训练数据的标准答案负责——例如,这张图确实是一只猫。这部分通常采用普通的交叉熵损失。
2. 模仿教师分布
学生模型还需让自己的软化输出,尽可能接近教师模型的软化输出。这部分常用 KL 散度或交叉熵来衡量两个分布之间的差异。
整体目标可以简化为:
总损失= α × 学习真实答案+ β × 模仿教师分布
在常见实现中,蒸馏损失还会乘以 T²,以补偿温度变化带来的梯度缩放。
如此一来,学生既不会完全脱离真实数据去盲目模仿教师,也不会只盯着非黑即白的标准答案。
完整过程可以概括为:
同一批训练数据 ├──→ 教师模型 ──→ 软化后的教师分布 ──┐ │├─→ 计算损失 → 更新学生模型 └──→ 学生模型 ──→ 软化后的学生分布 ──┘ + 真实标签
教师模型一般只参与前向计算,不再更新参数;真正被训练的是学生模型。
用“学做菜”理解知识蒸馏
不妨将训练学生模型想象成培养一名新厨师。
第一种方法是只给他菜谱:
盐 3 克油 20 毫升翻炒 2 分钟
这类似于硬标签。新人知道最终该怎么做,但无法理解为何火候必须如此控制,也不知道食材状态变化时该如何调整。
第二种方法,是让经验丰富的厨师现场示范。
新人不仅能看到成品,还能观察大厨何时调火、如何判断成熟度、面对不同食材时如何随机应变。这些无法写入菜谱却能体现经验的信息,就好比教师模型概率分布中包含的暗知识。
知识蒸馏并不保证学生最终与老师完全一致,其目标是:借助更丰富的监督信号,让容量较小的学生尽可能学到老师的判断方式。
“收集大模型回答”都算经典知识蒸馏吗?
不一定。
在经典分类蒸馏中,训练者通常能够访问教师模型的 logits 或完整概率分布,再让学生直接拟合这些信息。
但通过大模型 API 获得的,往往只是一段最终回答:
问题 → 教师模型 → 文本答案
如果接口未提供 logits 或 token 概率,学生就无法看到教师完整的输出分布。这种利用教师生成内容训练学生的方法,更接近响应蒸馏(Response-based Distillation)或基于合成数据的蒸馏。
在大语言模型领域,常见的做法还包括:
- 让教师生成高质量问答数据
- 让学生模仿教师的回答风格与任务格式
- 在可访问时学习教师的 token 概率
- 对齐中间特征、隐藏状态或注意力信息
这些都体现了“教师向学生传递能力”的思路,但可获得的信息不同,训练方式也存在差异。
因此,知识蒸馏不能简单理解为“向大模型发请求并保存答案”。能否访问概率、训练数据如何构造、损失函数怎样设计,都会影响其属于哪种蒸馏方式。
知识蒸馏、微调与模型压缩有什么区别?
这几个概念经常同时出现,但解决问题的方式各不相同。
| 方法 | 核心操作 | 是否需要教师模型 | 主要目的 |
|---|---|---|---|
| 微调 | 用特定任务或领域数据继续训练模型 | 不一定 | 让模型适应新任务或新领域 |
| 知识蒸馏 | 让学生模型模仿教师模型 | 是 | 将教师能力迁移到更小模型 |
| 量化 | 用更低精度表示权重或计算 | 否 | 减少显存、存储和计算开销 |
| 剪枝 | 删除不重要的连接、通道或参数 | 否 | 降低模型规模与计算量 |
它们并不互斥。
一个模型可以先通过蒸馏得到更小的学生模型,再进行量化;也可以针对某个业务领域继续微调。实际部署中经常组合使用多种方法。
知识蒸馏能带来什么?
更低的推理成本
学生模型参数更少,通常需要更少的显存和计算资源,适合高并发服务。
更快的响应速度
较小的模型更容易降低推理延迟,可用于移动端、边缘设备和实时应用。
比单独训练小模型获得更好的效果
同样规模的学生模型,如果仅学习硬标签,获得的监督信息较为有限;加入教师信号后,往往能学习到更细致的决策边界。
利用未标注数据
教师模型可以为大量未标注样本生成软标签或回答,再将这些数据用于训练学生模型。
蒸馏也有明显限制
知识蒸馏并非无损复制。
学生容量决定能力上限
如果学生模型过小,没有足够的参数容量承载教师知识,即使训练数据很多,也无法完整复现教师能力。
教师的错误也会被传递
教师模型存在偏见、幻觉或错误时,学生可能将这些问题一并学走。教师输出并不天然等于正确答案。
训练数据覆盖范围很重要
学生只会在蒸馏数据覆盖的任务和分布上模仿教师。如果数据集中仅有数学题,学生不会因此自动获得教师在代码、写作和视觉理解方面的全部能力。
蒸馏仍然需要成本
生成训练数据、运行教师模型、保存输出以及训练学生模型都需要资源。它是在模型能力与部署成本之间权衡,并非零成本获取大模型能力。
数据与授权边界不能忽略
使用第三方模型生成训练数据时,还需遵守对应服务条款、数据许可和知识产权要求。技术上能够采集输出,不等于在任何场景下都可以直接用于训练。
总结
知识蒸馏的核心并非“把大模型缩小”,而是让学生模型学习教师模型提供的额外监督信息。
硬标签只告诉学生最终答案,软标签则能展现教师对类别相似性和决策边界的判断。学生同时学习真实标签与教师分布,便有机会在较小参数规模下获得比独立训练更好的效果。
可以将整篇文章浓缩成下面这条链路:
教师模型输出知识↓软标签、logits、回答或中间特征↓学生模型模仿教师↓用更小的模型换取更低的部署成本
但蒸馏并非复制。学生模型的容量、蒸馏数据的覆盖范围、教师输出的质量以及训练目标的设计,共同决定了最终能够迁移多少能力。
