天天看点

深度学习模型压缩

模型压缩

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

模型剪枝

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

![[Pasted image 20220925094745.png]]

模型量化

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

参数共享

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

低秩分解

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

知识蒸馏

  • 第一次提出知识蒸馏

    外链:​​​论文阅读_神经网络知识蒸馏_DK​​

  • 第一次将知识蒸馏用于自然语言处理

    外链:​​​论文阅读_BERT知识蒸馏​​

  • 针对Transformer结构使用知识蒸馏

    外链:​​​论文阅读_模型蒸馏_TinyBERT​​

  • 另一篇基于Transformer结构的优化,更易用

    外链:​​​论文阅读_知识蒸馏_MobileBERT​​

  • 结合元学习和知识蒸馏

    外链:​​​论文阅读_知识蒸馏_Meta-KD​​

  • 包含蒸馏源码的工具包

    外链:​​​EasyNLP​​

参考

继续阅读