模型蒸馏:让小模型「偷师」大模型,把强者经验压进手机
大模型贵、小模型笨,蒸馏让小模型学走大模型的「隐藏知识」。本文用师徒制讲清软标签与温度的作用,以及 QLoRA+蒸馏如何把几百亿参数压到手机本地跑的取舍。

大模型聪明但贵,小模型便宜却常犯傻。有没有办法让小模型「偷师」大模型?这就是模型蒸馏(Distillation)在干的事。
经典做法像师徒制。先用大模型(教师)对训练数据产出「软标签」——不是简单的「这是猫 / 不是猫」,而是「猫 0.7、狗 0.2、狐狸 0.1」这种带温度的概率分布。这些软标签藏着教师模型学到的「类与类之间的微妙关系」:猫和狗比猫和汽车更近。小模型(学生)在学习时,不只拟合正确答案,还去贴近教师的软标签,于是把那些「隐藏知识」一并学走。
训练目标通常是两者的加权:
loss = alpha * KL(学生软标签, 教师软标签) + (1 - alpha) * CE(学生输出, 真实标签)
训练时有个关键旋钮叫「温度(temperature)」:调高温度,软标签更平滑,类间关系更明显,学生更容易学到;预测时再把温度调回 1。
现实里蒸馏为什么香?比如把几百亿参数的模型压到几亿,塞进手机本地跑,隐私不出设备、还免了每次调用的服务器账单。QLoRA + 蒸馏的组合,已经能让一张普通显卡「炼」出可用的小模型;更有「无数据蒸馏」,用教师自己生成训练样本,连原始数据都不需要。
当然有代价:学生上限受教师天花板限制,且教师本身得够强、够稳。
实操上,温度常取 2~4 来生成软标签,学生用同样的温度去匹配,推理时再归 1;教师越强、与学生差距越大,蒸馏收益越明显,但教师的错误也会被一并「传染」下来。典型的 DistilBERT 就是用蒸馏把 BERT 压到约 40% 的体积、保留近 97% 的效果,成了不少生产环境的默认选择。
蒸馏不是点金术,是「把强者的经验压缩给弱者」的实在工程。



