Skip to content

大模型知识蒸馏与压缩技术 ​

内容整理自学习笔记,仅供面试备考参考;不构成录用、培训或考试承诺。

1. 知识蒸馏和无监督样本训练是什么? ​

知识蒸馏 ​

知识蒸馏是利用大模型把一个大模型的知识压缩到一个小模型上。具体流程:

  1. 在一个训练集上得到一个非常好的较大的模型
  2. 把这个模型冻结,作为 Teacher 模型(也叫监督模型)
  3. 造一个较小参数的模型叫做 Student 模型
  4. 利用冻结的 Teacher 模型去训练 Student 模型

蒸馏方式对比 ​

方式说明
离线蒸馏Student 在训练集上的 loss 和与 Teacher 模型的 loss 作为总的 loss,一起优化
半监督蒸馏向 Teacher 模型输入一些 input 得到标签,然后把 input 和标签传给 Student 模型
自监督蒸馏直接不要 Teacher 模型,在最后几轮 epoch,把前面训练好的模型作为 Teacher 进行监督

常见应用:目前知识蒸馏的一个常见应用是对齐 ChatGPT。

无监督样本训练 ​

  • 如果是传统的无监督学习,那就是聚类、主成分分析等操作
  • 如果是指知识蒸馏的话,就是离线蒸馏的方式,只不过损失只有和 Teacher 的 loss

2. 对知识蒸馏知道多少,有哪些改进用到了? ​

知识蒸馏是一种通过将一个复杂模型的知识转移到一个简单模型来提高简单模型性能的方法。这种方法已经被广泛应用于各种深度学习任务中。

主要改进方向 ​

序号改进方向说明
1损失函数和温度参数使用不同类型的损失函数和温度参数来获得更好的知识蒸馏效果
2引入额外信息将相似性约束添加到模型训练中,提高蒸馏效果
3结合其他技术将蒸馏方法与多任务学习、迁移学习等技术结合使用,进一步改进效果

3. 谈一下对模型量化的了解? ​

模型量化是一种将浮点型参数转换为定点型参数的技术,以减少模型的存储和计算复杂度。

常见量化方法 ​

序号方法说明
1量化权重和激活值将它们转换为整数或小数
2使用更小的数据类型例如 8 位整数、16 位浮点数等
3使用压缩算法例如 Huffman 编码、可逆压缩算法等

权衡:模型量化可以减少模型的存储空间和内存占用,加速推理速度,但可能会对模型精度造成一定影响,需要仔细权衡精度和计算效率之间的平衡。

4. 模型压缩和加速的方法有哪些? ​

方法说明
参数剪枝(Parameter Pruning)删除模型中冗余的参数,减少模型大小。通常只有很少一部分参数对模型性能贡献较大
量化(Quantization)将浮点型参数转换为更小的整数或定点数,减小模型大小和内存占用,提高计算效率
知识蒸馏(Knowledge Distillation)利用较大、较准确的模型的预测结果来指导较小、较简单的模型学习,减小模型复杂度,提高泛化能力和推理速度
网络剪枝(Network Pruning)删除模型中冗余的神经元,与参数剪枝不同,可以删除神经元而不会删除对应的参数
蒸馏对抗网络(Distillation Adversarial Networks)在知识蒸馏基础上,通过对抗训练提高模型的鲁棒性和抗干扰能力
模型量化(Model Quantization)将权重和激活函数的精度从 32 位浮点数减少到更小位数,减小模型大小和计算开销
层次化剪枝(Layer-wise Pruning)对模型的不同层进行不同程度的剪枝,实现更高效的模型压缩和加速
低秩分解(Low-Rank Decomposition)将较大的权重矩阵分解为几个较小的权重矩阵,减少计算开销
卷积分解(Convolution Decomposition)将卷积层分解成几个更小的卷积层或全连接层,减小计算开销
网络剪裁(Network Trimming)对模型中一些不重要的连接进行剪裁,减小计算开销

5. 你了解的知识蒸馏模型有哪些? ​

模型说明
FitNets使用一个大型模型作为教师模型来指导一个小型模型的训练
Hinton 蒸馏使用一个大型模型的输出作为标签来指导一个小型模型的训练
Born-Again Network(BAN)同容量师生设定:先训教师,再让学生从教师软标签蒸馏,并可迭代互换角色;核心不是「少量数据重训」
TinyBERT使用一个大型 BERT 模型作为教师模型来指导一个小型 BERT 模型的训练