链载Ai

标题: 大模型知识蒸馏指南 [打印本页]

作者: 链载Ai    时间: 昨天 17:08
标题: 大模型知识蒸馏指南

最近wsdm cup到了瓶颈,租卡跑算力成本太高,而lmsys比赛的微调结果也没啥可抄的了,所以只能回头看看top方案,研究了一下阳哥的《Distill is all you need》,和第二名tascj对于训练推理的科技与狠活,有些感觉,伴随着deepseek的大火,蒸馏和强化学习又被端上了台面,我对强化学习暂时没什么兴趣,不过蒸馏跟我最近看的内容相关,在网上搜了一圈关于deepseek针对蒸馏的策略,好像没有过多内容介绍,于是想着总结找到的一些资料。

什么是模型蒸馏?

模型蒸馏即知识蒸馏(Knowledge Distillation),是一种模型压缩和加速技术。在深度学习中,大型深度神经网络虽性能优异,但因计算复杂度高、存储需求大,难以部署在资源受限设备上。模型蒸馏通过构建师生架构,让小的学生模型学习大的教师模型的知识,使学生模型在保持较小规模的同时,尽可能接近教师模型的性能。其核心组件包括知识(如教师模型的 logits、中间层特征等)、蒸馏算法(用于指导知识转移)和师生架构(决定知识传递方式)。

这里可以看比较主流的一张图,出自2021年综述:《Knowledge Distillation: A Survey》,对近年的Distillation做了一个详细概括,Knowledge Distillation的流程可以理解为:

图中除了loss之后会详细说明,唯一的未知点可能在于soft targets,它是经过softmax的下一层级结果logits(原始分数),公式为:

其中是温度系数,从公式中能很明显看出当值较大时,Softmax 输出的概率分布会更加平滑,每个类别的概率值相对更接近;值较小时,概率分布会更尖锐,高概率类别的概率值远高于其他类别。这些 soft targets 会传递给学生模型,学生模型在学习过程中不仅学习真实的hard targets信息,还能从教师模型的 soft targets 中获取类别之间的关联等知识,帮助其更好地训练和泛化。

hard targets 与 soft targets的区别可以从下面的四分类图中很形象的看出:

知识蒸馏有什么意义

如何做知识蒸馏

做知识蒸馏的方式有非常多,从训练方案流程来看,就有离线蒸馏、在线蒸馏和自蒸馏等,从算法更新角度上,还有对抗蒸馏、多教师蒸馏等,这里我就不用豆包在灌水了,想查一大片说明,直接以bert时代的蒸馏开始看。

unsetunsettinybertunsetunset

TinyBERT是一种轻量级的预训练语言模型,由华为和华中科技大学提出。它通过知识蒸馏技术,将BERT模型的知识迁移到一个更小的模型中,从而实现了模型体积的大幅减小和推理速度的提升。在当时,它提出了两阶段transformer蒸馏方案:在大规模语料上首先进行通用MLM任务的蒸馏,在下游任务时,先学好老师模型,再进行蒸馏,具体如下图:

关于Transformer层蒸馏,主要包括注意力attn的蒸馏和隐藏层hidn的蒸馏:

关于损失函数,TinyBert的蒸馏loss为:

  1. 第一项:词向量层损失






欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5