天天看點

深度學習模型壓縮

模型壓縮

對于複雜問題模組化時,深度學習模型在容納更多參數的情況下,效果一般更好,但是模型占記憶體大,預測時間長的,往往限制其在小型或普通配制的硬體上使用。一般使用模型壓縮方法給模型減肥,主要方法總結如下。

模型剪枝

移除對結果作用很小的參數權重,如接近0的參數。具體如去掉某些卷積核,或者卷積核中的某些權重,還有對通通道的減枝,對層的減枝,對注意力頭的減枝等。

![[Pasted image 20220925094745.png]]

模型量化

減少存儲權重所需的比特數,比如将 float32 降到 int8,基于KMeans的量化方案等等(将訓練好的所有參數分成幾簇,然後把權重轉換成簇索引)。

參數共享

通過共享參數,達到減少網絡參數的目的。一個不熟悉的詞可由常用詞定義,或者用普通單詞的嵌入的稀疏組合;又如ALBERT可跨層共享所有參數。

低秩分解

低秩分解的方法運用了矩陣分解和矩陣乘法的結合律。把較大的卷積核分解為兩個級聯的行卷積核和列卷積核。比如:将一個3×3的卷積層,替換為一個3×1的卷積層加上一個1×3的卷積核。

知識蒸餾

  • 第一次提出知識蒸餾

    外鍊:​​​論文閱讀_神經網絡知識蒸餾_DK​​

  • 第一次将知識蒸餾用于自然語言處理

    外鍊:​​​論文閱讀_BERT知識蒸餾​​

  • 針對Transformer結構使用知識蒸餾

    外鍊:​​​論文閱讀_模型蒸餾_TinyBERT​​

  • 另一篇基于Transformer結構的優化,更易用

    外鍊:​​​論文閱讀_知識蒸餾_MobileBERT​​

  • 結合元學習和知識蒸餾

    外鍊:​​​論文閱讀_知識蒸餾_Meta-KD​​

  • 包含蒸餾源碼的工具包

    外鍊:​​​EasyNLP​​

參考

繼續閱讀