模型壓縮可減少受訓神經網路的冗餘,由於幾乎沒有 bert 或者 bert-large 模型可直接在 gpu 及智慧型手機上應用,因此模型壓縮方法對於 bert 的未來的應用前景而言,非常有價值。
一、壓縮方法
1、剪枝——即訓練後從網路中去掉不必要的部分。
這包括權重大小剪枝、注意力頭剪枝、網路層以及其他部分的剪枝等。還有一些方法也通過在訓練期間採用正則化的方式來提公升剪枝能力(layer dropout)。
2、權重因子分解——通過將引數矩陣分解成兩個較小矩陣的乘積來逼近原始引數矩陣。
這給矩陣施加了低秩約束。權重因子分解既可以應用於輸入嵌入層(這節省了大量磁碟記憶體),也可以應用於前饋/自注意力層的引數(為了提高速度)。
3、知識蒸餾——又名「student teacher」。
在預訓練/下游資料上從頭開始訓練乙個小得多的 transformer,正常情況下,這可能會失敗,但是由於未知的原因,利用完整大小的模型中的軟標籤可以改進優化。
一些方法還將bert 蒸餾成如lstms 等其他各種推理速度更快的架構。另外還有一些其他方法不僅在輸出上,還在權重矩陣和隱藏的啟用層上對 teacher 知識進行更深入的挖掘。
4、權重共享——模型中的一些權重與模型中的其他引數共享相同的值。
例如,albert 對 bert 中的每個自注意力層使用相同的權重矩陣。
5、量化——截斷浮點數,使其僅使用幾個位元(這會導致捨入誤差)。
模型可以在訓練期間,也可以在訓練之後學習量化值。
6、預訓練和下游任務——一些方法僅僅在涉及到特定的下游任務時才壓縮 bert,也有一些方法以任務無關的方式來壓縮 bert。
二、**一覽
(原英文標題見文章尾部)
三、結果比較
在這裡將盡我所能的對這些**的觀點進行解讀,同時主要關注以下指標:引數縮減,推理加速 1 和準確性 2,3。
若需要選乙個贏家,我認為是 albert,distilbert,mobilebert,q-bert,layerdrop和rpp。你也可以將其中一些方法疊加使用 4,但是有些剪枝相關的**,它們的科學性要高於實用性,所以我們不妨也來驗證一番:
最後的話:
1、請注意,並非所有壓縮方法都能使模型更快。眾所周知,非結構化剪枝很難通過 gpu 並行來加速。其中一篇**認為,在 transformers 中,計算時間主要由 softmax 計算決定,而不是矩陣乘法。
2、如果我們能拿出乙個數字來記錄我們真正關心的事情,那將會很棒,就像 f1。
3、其中一些百分比是根據 bert-large 而不是 bert-base 衡量的,僅供參考。
4、不同的壓縮方法如何互動,是乙個開放的研究問題。
[1] compressing bert: studying the effects of weight pruning on transfer learning
[2] are sixteen heads really better than one?
[3] pruning a bert-based question answering model
[4] reducing transformer depth on demand with structured dropout
[5] reweighted proximal pruning for large-scale language representation
[6] structured pruning of large language models
[7] albert: a lite bert for self-supervised learning of language representations
[8] extreme language model compression with optimal subwords and shared projections
[9] distilbert, a distilled version of bert: smaller, faster, cheaper and lighter
[10] distilling task-specific knowledge from bert into ****** neural networks
[11] distilling transformers into ****** neural networks with unlabeled transfer data
[12] attentive student meets multi-task teacher: improved knowledge distillation for pretrained models
[13] patient knowledge distillation for bert model compression
[14] tinybert: distilling bert for natural language understanding
[15] mobilebert: task-agnostic compression of bert by progressive knowledge transfer
[16] q8bert: quantized 8bit bert
[17] q-bert: hessian based ultra low precision quantization of bert 雷鋒網雷鋒網雷鋒網
via
**:
關於IIS,你要知道的。
什麼是iis?iis是internet information server internet資訊服務 英文全稱的縮寫,是微軟公司主推的web伺服器。iis並不是一種程式語言,它只是一種 環境 一種讓asp語言執行的環境。是一種web 網頁 服務元件,用來搭載 執行程式的平台。iis的作用是什麼?專...
Sybase IQ,你需要知道的基礎
sybase iq,你需要知道的基礎 第一,知道iq跟其它的關係型資料庫相比,它的主要特徵是什麼?包括查詢快 資料壓縮比高 load快,但是插入更新慢,不太適合資料老是變化,它是按列儲存的。這時候你就知道它適做dss 決策支援系統 資料集市,資料倉儲,它不適合oltp。適合olap。第二,知道iq自...
Sybase IQ,你需要知道的基礎
sybase iq,你需要知道的基礎 第一,知道iq跟其它的關係型資料庫相比,它的主要特徵是什麼?包括查詢快 資料壓縮比高 load快,但是插入更新慢,不太適合資料老是變化,它是按列儲存的。這時候你就知道它適做dss 決策支援系統 資料集市,資料倉儲,它不適合oltp。適合olap。第二,知道iq自...