大模型蒸馏:知识迁移
知识蒸馏(Knowledge Distillation)由 Hinton 等人在 2015 年提出,思路是让参数量小的「学生」模型去模仿参数量大的「教师」模型的输出,从而把能力迁移到更轻量的模型上。在大模型时代,它成为把顶尖模型能力「下放」到端侧与低成本部署的关键手段,既能缩减体积,又能在很大程度上保留原模型的判断质量。
是什么
传统训练只让学生匹配数据的硬标签(0 或 1)。蒸馏额外让学生匹配教师的「软标签」——也就是各类别上的概率分布。软标签携带了「猫比狗更像老虎」这类结构信息,比硬标签信息更丰富,因此学生能从教师的泛化中学到更多。
为什么有效
教师模型在大规模数据上学会了平滑的类别关系,这些关系通过 soft targets 传递给学生。学生在更少参数下也能逼近教师行为,得到体积小、速度快、仍可用的模型。相比从头训练,蒸馏相当于站在教师肩膀上,显著降低小模型达到可用门槛所需的数据与算力。
怎么做
核心是让学生输出与教师输出之间的 KL 散度尽量小,以下为 PyTorch 中的软化温度写法:
import torch.nn.functional as F
def soft_logits(logits, T):
return F.log_softmax(logits / T, dim=-1)
loss = F.kl_div(soft_logits(student, T),
soft_logits(teacher, T).detach(),
reduction="batchmean") * (T * T)
温度 T 越高,分布越平滑,学生能看到更多「暗知识」;但过高会抹平差异,需要实验选取。
代表方法
- DistilBERT(Sanh 等, 2019)把 BERT 蒸馏为参数量约 40% 的版本,保留大部分语言理解能力。
- 大模型领域也常用「蒸馏数据」方式,用教师生成训练样本再训练学生。
- 还可结合硬标签与软标签做联合损失,平衡准确率与泛化。
注意点
- 温度 T 过高会抹平差异,过低则蒸馏信号不足,需要实验选取。
- 学生容量过小会学不下教师的知识,存在能力上限。
- 教师若本身有偏差,学生也会继承,需关注数据质量与对齐。
实践建议
落地蒸馏时,建议先用教师模型在目标任务上生成高质量样本,再让学生在这些样本上微调,这比只用软标签更稳。温度 T 建议从 2 到 4 起步做网格搜索,观察验证集表现。若学生容量远小于教师,可先用中等规模模型做过渡蒸馏。此外蒸馏并非总能超越同规模从头训练,需与直接训练做对照;中文等特定语种若教师以英文为主,软标签迁移可能打折,建议补充本语种数据再评测。最后务必在真实业务数据上做端到端评测,确认延迟与准确率平衡后再决定是否上线。
小结
知识蒸馏用教师的软标签指导学生,让小模型在更少参数下继承大模型的能力。它是端侧与低成本部署大模型的重要手段,关键在温度选择、容量匹配与数据质量。
参考与延伸阅读
- Hinton 等「Distilling the Knowledge in a Neural Network」(2015)。已核验。https://arxiv.org/abs/1503.02531
- Sanh 等「DistilBERT」(2019)。已核验。https://arxiv.org/abs/1910.01108
- Hugging Face 蒸馏相关博客与模型库。已核验。https://huggingface.co/docs/transformers/index