FastFormers:實(shí)現(xiàn)Transformers在CPU上223倍的推理加速
點(diǎn)擊上方,選擇星標(biāo)或置頂,不定期資源大放送
!
閱讀大概需要5分鐘
Follow小博主,每天更新前沿干貨
作者:Parth Chokhra
編譯:ronghuaiyang
使用多頭注意力的Transform在cpu上實(shí)現(xiàn)222倍的加速。

自BERT緊隨Transformer誕生以來,幾乎在所有與語言相關(guān)的任務(wù)中都占據(jù)著主導(dǎo)地位,無論是問答、情感分析、文本分類還是文本生成。與RNN和LSTM不一樣的是,RNN和LSTM的梯度消失問題阻礙了長數(shù)據(jù)序列的學(xué)習(xí),而transformer在所有這些任務(wù)上都有更好的準(zhǔn)確性。也不像Transformers,RNN和LSTM是不可擴(kuò)展的,因?yàn)樗鼈儽仨毧紤]到前一個神經(jīng)元的輸出。
現(xiàn)在Transformers的主要問題是它們在訓(xùn)練和推理方面都是高度密集的計算。而訓(xùn)練部分可以通過使用預(yù)訓(xùn)練的語言模型(由大型公司如谷歌,F(xiàn)acebook和OpenAI??開放源代碼)并在我們的數(shù)據(jù)集上微調(diào)它們來解決?,F(xiàn)在,后一個問題由FastFormers解決了,有一套方法可以實(shí)現(xiàn)基于Transformers的模型在各種NLU任務(wù)上的高效推理。
“將這些建議的方法應(yīng)用到SuperGLUE基準(zhǔn)測試中,與開箱即用的CPU模型相比,作者能夠?qū)崿F(xiàn)9.8倍到233.9倍的加速。在GPU上,我們也實(shí)現(xiàn)了12.4倍的加速。" — FastFormers
論文FastFormers: Highly Efficient Transformer Models for Natural Language Understanding主要關(guān)注于為Transformer模型提供高效推理,使其能夠在大規(guī)模生產(chǎn)場景中部署。作者特別關(guān)注推斷時間效率,因?yàn)樗饕刂浦a(chǎn)部署的成本。在這篇博客中,我們將回顧本文所要解決的所有問題和挑戰(zhàn)。
那么他們是如何解決Transformers高效率推理時間的問題的呢?
它們主要利用知識蒸餾、結(jié)構(gòu)化剪枝和模型量化三種方法。
第一步,知識蒸餾,減少模型深度和隱藏狀態(tài)的大小,而不影響精度。
第二,結(jié)構(gòu)化修剪,通過減少自注意力頭的數(shù)量,減少模型的大小,同時試圖保持準(zhǔn)確性。
最后,模型量化,通過優(yōu)化利用硬件加速能力使模型可以更快的執(zhí)行。CPU上采用8bit量化方法,GPU上將所有模型參數(shù)轉(zhuǎn)換為16位浮點(diǎn)數(shù)據(jù)類型,最大限度地利用高效Tensor Cores。
深入介紹
知識蒸餾:知識蒸餾指的是模型壓縮的思想,使用一個更大的已經(jīng)訓(xùn)練有素的網(wǎng)絡(luò)教一個較小的網(wǎng)絡(luò),一步一步地,確切地做什么得到較小的模型。雖然大模型比小模型具有更高的知識容量,但這一容量可能沒有得到充分利用。即使模型只利用了很少的知識能力,它在計算上也可能是昂貴的。知識蒸餾將知識從一個大模型轉(zhuǎn)移到一個小模型而不失去有效性。由于較小的模型評估成本較低,它們可以部署在功能較弱的硬件上,比如智能手機(jī)。
知識蒸餾方法:特別使用了兩種方法,即特定于任務(wù)的和與任務(wù)無關(guān)的蒸餾。
在任務(wù)細(xì)化過程中,作者按照TinyBERT提出的步驟,將教師模型細(xì)化為更小的學(xué)生模型。在與任務(wù)無關(guān)的蒸餾方法中,作者直接對一般蒸餾模型進(jìn)行微調(diào),以針對特定的任務(wù)進(jìn)行調(diào)優(yōu)。
知識蒸餾結(jié)果:在實(shí)驗(yàn)中,作者觀察到,蒸餾模型在蒸餾到另一種模型類型時,不能很好地工作。因此,作者限制了我們的設(shè)置,以避免將Roberta模型蒸餾為BERT模型,反之亦然。通過驗(yàn)證數(shù)據(jù)集上的教師模型,我們匯總了對任務(wù)進(jìn)行知識蒸餾的結(jié)果。(學(xué)生指蒸餾模型)

神經(jīng)網(wǎng)絡(luò)剪枝:神經(jīng)網(wǎng)絡(luò)剪枝是一種壓縮方法,包括從訓(xùn)練模型中刪除權(quán)值。在農(nóng)業(yè)中,修剪是指砍掉植物不必要的枝干。在機(jī)器學(xué)習(xí)中,剪枝是去除不必要的神經(jīng)元或權(quán)重。神經(jīng)網(wǎng)絡(luò)剪枝技術(shù)可以使訓(xùn)練網(wǎng)絡(luò)的參數(shù)減少90%以上,在不影響精度的前提下減少存儲需求,提高推理的計算性能。這有助于減小經(jīng)過訓(xùn)練的神經(jīng)網(wǎng)絡(luò)的大小或能量消耗,并有助于使推理更有效。剪枝使網(wǎng)絡(luò)更高效、更輕。

結(jié)構(gòu)化剪枝方法:我們的結(jié)構(gòu)化剪枝方法的第一步是識別多頭注意力中最不重要的頭和前饋層中最不重要的隱藏狀態(tài)。
計算重要性得分的一階方法,利用一階梯度信息代替了基于幅度的剪枝。 在進(jìn)行重要性評分計算之前,作者在每個注意力頭中添加了一個mask變量,用于注意力頭的梯度計算。然后在整個驗(yàn)證數(shù)據(jù)集上前后遍歷模型,積累梯度的絕對值。然后,這些累積的值被用作重要分?jǐn)?shù),我們用它來排序注意力頭和中間隱藏狀態(tài)的重要性。 根據(jù)目標(biāo)模型的大小,從網(wǎng)絡(luò)中選擇給定數(shù)量的頂部heads和頂部隱藏狀態(tài)。一旦排序和選擇步驟完成,作者重新組合和連接剩余的head和隱藏狀態(tài),從而得到一個較小的模型。當(dāng)對head和隱藏狀態(tài)進(jìn)行剪枝時,作者在不同的層中使用相同的剪枝率。這使得進(jìn)一步的優(yōu)化能夠與修剪后的模型無縫地工作。 在實(shí)驗(yàn)中,作者發(fā)現(xiàn),經(jīng)過修剪后的模型經(jīng)過新一輪的知識蒸餾后,可以獲得更好的精度。因此,將知識蒸餾再次應(yīng)用到模型中。
模型量化:量化是指在比浮點(diǎn)精度更低的位寬下執(zhí)行計算和存儲張量的技術(shù)。量化模型對用整數(shù)而不是浮點(diǎn)值的張量執(zhí)行部分或全部操作。這允許一個更緊湊的模型表示,并在許多硬件平臺上使用高性能向量化操作。
在CPU上的8bit量化矩陣乘法:由于減少了CPU指令數(shù)量,8bit量化矩陣乘法與32位浮點(diǎn)運(yùn)算相比帶來了顯著的速度提升。
16bitGPU模型轉(zhuǎn)換:V100 GPU支持Transformer架構(gòu)的完整16bit操作。另外,16bit浮點(diǎn)運(yùn)算除了具有較小的值范圍外,不需要對輸入和輸出進(jìn)行特殊處理。由于Transformer模型是受內(nèi)存帶寬限制的工作負(fù)載,這種16bit模型轉(zhuǎn)換帶來了相當(dāng)顯著的速度增益。觀察到大約3.53倍的加速,取決于模型設(shè)置。
除了結(jié)構(gòu)優(yōu)化和數(shù)值優(yōu)化,作者還利用各種方法進(jìn)一步優(yōu)化計算,特別是多進(jìn)程優(yōu)化和計算圖優(yōu)化。
組合起來的結(jié)果
下面的表格說明了結(jié)果是多么有效:

總結(jié)
本文介紹了FastFormers,它能對基于Transformer的模型在各種NLU任務(wù)上實(shí)現(xiàn)高效的推理時間性能。論文FastFormers的作者表明,利用知識蒸餾、結(jié)構(gòu)化剪枝和數(shù)值優(yōu)化可以大幅提高推理效率。我們表明,這種改進(jìn)可以達(dá)到200倍的加速,并在22倍的能耗下節(jié)省超過200倍的推理成本。

英文原文:https://medium.com/ai-in-plain-english/fastformers-233x-faster-transformers-inference-on-cpu-4c0b7a720e1
由于微信平臺算法改版,公號內(nèi)容將不再以時間排序展示,如果大家想第一時間看到我們的推送,強(qiáng)烈建議星標(biāo)我們和給我們多點(diǎn)點(diǎn)【在看】。星標(biāo)具體步驟為:
(1)點(diǎn)擊頁面最上方“深度學(xué)習(xí)自然語言處理”,進(jìn)入公眾號主頁。
(2)點(diǎn)擊右上角的小點(diǎn)點(diǎn),在彈出頁面點(diǎn)擊“設(shè)為星標(biāo)”,就可以啦。
感謝支持,比心
。
投稿或交流學(xué)習(xí),備注:昵稱-學(xué)校(公司)-方向,進(jìn)入DL&NLP交流群。
方向有很多:機(jī)器學(xué)習(xí)、深度學(xué)習(xí),python,情感分析、意見挖掘、句法分析、機(jī)器翻譯、人機(jī)對話、知識圖譜、語音識別等。
記得備注呦
整理不易,還望給個在看!


