模型压缩

模型压缩

对于复杂问题建模时,深度学习模型在容纳更多参数的情况下,效果一般更好,但是模型占内存大,预测时间长的,往往限制其在小型或普通配制的硬件上使用。一般使用模型压缩方法给模型减肥,主要方法总结如下。

模型剪枝

移除对结果作用很小的参数权重,如接近0的参数。具体如去掉某些卷积核,或者卷积核中的某些权重,还有对通通道的减枝,对层的减枝,对注意力头的减枝等。
![[Pasted image 20220925094745.png]]

模型量化

减少存储权重所需的比特数,比如将 float32 降到 int8,基于KMeans的量化方案等等(将训练好的所有参数分成几簇,然后把权重转换成簇索引)。

参数共享

通过共享参数,达到减少网络参数的目的。一个不熟悉的词可由常用词定义,或者用普通单词的嵌入的稀疏组合;又如ALBERT可跨层共享所有参数。

低秩分解

低秩分解的方法运用了矩阵分解和矩阵乘法的结合律。把较大的卷积核分解为两个级联的行卷积核和列卷积核。比如:将一个3×3的卷积层,替换为一个3×1的卷积层加上一个1×3的卷积核。

知识蒸馏

将 teacher 的能力蒸馏到 student上,最近看了一些论文总结如下:

  • 第一次提出知识蒸馏
    外链:论文阅读_神经网络知识蒸馏_DK
  • 第一次将知识蒸馏用于自然语言处理
    外链:论文阅读_BERT知识蒸馏
  • 针对Transformer结构使用知识蒸馏
    外链:论文阅读_模型蒸馏_TinyBERT
  • 另一篇基于Transformer结构的优化,更易用
    外链:论文阅读_知识蒸馏_MobileBERT
  • 结合元学习和知识蒸馏
    外链:论文阅读_知识蒸馏_Meta-KD
  • 包含蒸馏源码的工具包
    外链:EasyNLP

参考

一文详解文本深度学习模型的压缩

你可能感兴趣的:(模型压缩)