兄弟们,模型蒸馏这玩意儿最近是真火。简单说,就是让一个“学生”小模型盯着“老师”大模型的输出学,不光学预测结果,还要学输出概率分布里的“暗知识”——比如分类任务里,老师对“猫”和“狗”的置信度可能接近,这种模糊信息才是精华。
实操上,核心就两步:
1️⃣ 训练时,用高温softmax让老师输出软标签,学生拿着软标签+真实标签混合学习,温度系数T一般设2-5,调太高会过于平滑。
2️⃣ 推演阶段,学生模型直接低温或常温运行,压缩率能达到90%以上,比如BERT蒸馏成DistilBERT,参数量砍半,精度只掉不到3%。
但别天真,蒸馏不是万能药。只适合分类、回归这类监督任务,生成式模型比如GPT系列,蒸馏效果差一截,因为自回归生成依赖完整上下文,压缩太狠容易丢长程依赖。另外,选老师要够强,否则学生就学到个半吊子。
最后泼盆冷水:有些厂子把蒸馏当“黑盒压缩”,直接蒸馏开源模型做商业产品,这倒无所谓。但别妄想靠蒸馏替代数据训练,它只是锦上添花,不是雪中送炭。
❓ 你们在落地蒸馏时,踩过哪些坑?比如温度设定、学生架构选择,还是蒸馏后部署时量化被反噬?聊聊真实部署经验。 |