最近在搞模型部署优化,发现很多兄弟对大模型蒸馏有误解——以为就是拿Teacher模型教Student模型,简单一训完事。实际坑多得很,聊聊我踩过的经验。
**1. 蒸馏不是复制,是知识迁移**
常见误区:只拿Teacher输出做soft label训练。实战中,中间层特征对齐、注意力分布模仿、甚至logits的scale调整,都会影响蒸馏效果。我试过把Teacher的隐藏状态当正则项加进去,小模型在特定NLP任务上反而比Teacher还稳。
**2. 部署友好是关键**
蒸馏完模型,别忘了做量化+剪枝。我有个项目把770M参数的BERT蒸馏到110M,再INT8量化,推理速度提升6倍,准确率只掉0.3%。但注意:蒸馏后的Student对量化更敏感,得重新跑校准集。
**3. 分布式蒸馏的坑**
集群环境下,Teacher和Student同步策略很讲究。用异步更新容易发散,推荐同步梯度或EMA平滑。数据量不够?搞个离线伪标签生成流水线,比实时在线蒸馏省资源。
最后抛个问题:你们在蒸馏时,用的哪个损失函数组合?是只用KL散度,还是加了自蒸馏的对比学习?来评论区甩方案,我试过好用的开源工具也会分享 🔥 |