知识蒸馏(Knowledge Distillation)是一种模型压缩与迁移方法:训练一个小模型(学生)去模仿一个大模型(教师)的输出,而不只是拟合原始标签。结果是在体积大幅缩小的同时保住大部分能力,让模型能跑在手机、边缘设备和低成本服务器上。本文把原理、做法和取舍一次讲清。
为什么需要知识蒸馏
大模型能力越强,推理越贵:显存占用高、延迟大、单 token 成本高。很多场景并不需要全知全能,只要在特定任务上够用就行,比如端侧翻译、客服问答、内容分类。直接用小模型从头训,效果往往差一截;而蒸馏能借教师的经验把小模型拉起来。它和 全量微调 思路不同:微调是让模型适配数据,蒸馏是让小模型学大模型的思考方式。
蒸馏的核心机制:从硬标签到软标签
普通训练用硬标签,图片是猫就标 1,其余标 0 。蒸馏用的是教师模型输出的软标签:它给猫 0.9 、狗 0.08 、狐狸 0.02,这些非零概率携带了类别之间的关系,狗比卡车更像猫。学生通过匹配这种概率分布,学到比硬标签更丰富的结构信息。关键是温度(Temperature):把 softmax 调软,让小概率差异放大,再在学生端用同样温度对齐,最后推理时温度归 1 。
三种常见蒸馏方式
- Logits 蒸馏:直接让学生匹配教师的输出概率分布,最常见、最易上手。
- 特征蒸馏:让学生中间层的特征图去逼近教师对应层,适合视觉模型,能学到更细的表示。
- 自蒸馏与离线蒸馏:没有现成大模型时,用同一个网络的不同阶段互教,或用强数据增强版本教弱版本。
实践中还常配合 量化 一起用:先蒸馏出小模型,再做 INT8 量化,体积和速度进一步下探,端侧落地更稳。
实操:把大模型蒸馏成小模型的步骤
下面这套流程在开源大模型当教师时最常用,核心是先有底线、再追软标签、最后量化。
蒸馏、微调与量化有什么不同
三者常被混用,但目的不同。微调改的是知识适配,在已有能力上接私有数据;量化改的是存储与计算精度,几乎不动能力;蒸馏改的是模型容量,用大模型教小模型。工程上它们可以串联:先微调教师,再蒸馏学生,最后量化部署。
落地取舍与风险
蒸馏不是免费午餐。学生容量太小会学不下教师的知识;教师本身的错误也会被一并传下去;数据分布偏移时,软标签可能误导学生。建议先用一小批验证集对比学生与教师的差距,确认收益大于成本再全量。
- 选教师与学生:教师用效果最好的大模型,学生选参数量小 4 到 10 倍、结构尽量兼容的网络。
- 预热学生:先用硬标签正常训几轮,让学生有个底线,避免一开始就追软标签追崩。
- 加温度对齐:用高温 softmax 软化教师输出,学生同温度匹配软分布,损失加权硬标签加软标签。
- 降温评估:推理温度归 1,在验证集上对比学生与教师的准确率、延迟与体积。
- 量化部署:达标后做 INT8 量化,压到端侧或低成本实例上线。
常见问题
“知识蒸馏和微调有什么区别?”
“小模型一定能通过蒸馏追上大模型吗?”
“蒸馏一定要自己有大模型吗?”
“蒸馏后的小模型怎么部署最省?”






评论 (0)