0. 這篇文章干了啥?
基于Transformer的模型已經(jīng)成為各個(gè)領(lǐng)域的主流選擇,包括自然語(yǔ)言處理(NLP)和計(jì)算機(jī)視覺(jué)(CV)領(lǐng)域。大部分擁有數(shù)十億參數(shù)的大型模型都基于Transformer架構(gòu),但其異常龐大的規(guī)模給實(shí)際開(kāi)發(fā)帶來(lái)了挑戰(zhàn)。例如,GPT-3模型有1750億個(gè)參數(shù),需要約350GB的存儲(chǔ)空間(float16)。參數(shù)的數(shù)量龐大以及相關(guān)的計(jì)算開(kāi)銷要求設(shè)備具有極高的存儲(chǔ)和計(jì)算能力。直接部署這樣的模型會(huì)產(chǎn)生巨大的資源成本,特別是在手機(jī)這樣的邊緣設(shè)備上的模型部署變得不切實(shí)際。
模型壓縮是減少Transformer模型開(kāi)發(fā)成本的有效策略,包括修剪、量化、知識(shí)蒸餾、高效架構(gòu)設(shè)計(jì)等各種類別。網(wǎng)絡(luò)修剪直接刪除冗余組件,如塊、注意力頭、FFN層或個(gè)別參數(shù)。通過(guò)采用不同的修剪粒度和修剪標(biāo)準(zhǔn),可以派生出不同的子模型。量化通過(guò)用較低位表示模型權(quán)重和中間特征來(lái)減少開(kāi)發(fā)成本。例如,當(dāng)將一個(gè)全精度模型(float32)量化為8位整數(shù)時(shí),存儲(chǔ)成本可以減少四分之一。根據(jù)計(jì)算過(guò)程,可以分為后訓(xùn)練量化(PTQ)或量化感知訓(xùn)練(QAT),其中前者只產(chǎn)生有限的訓(xùn)練成本,對(duì)于大型模型更有效。知識(shí)蒸餾作為一種訓(xùn)練策略,將知識(shí)從大模型(教師)轉(zhuǎn)移到較小模型(學(xué)生)。學(xué)生通過(guò)模擬模型的輸出和中間特征來(lái)模仿教師的行為。還可以直接降低注意力模塊或FFN模塊的計(jì)算復(fù)雜性來(lái)產(chǎn)生高效的架構(gòu)。
因此,這篇文章全面調(diào)查了如何壓縮Transformer模型,并根據(jù)量化、知識(shí)蒸餾、修剪、高效架構(gòu)設(shè)計(jì)等對(duì)方法進(jìn)行分類。在每個(gè)類別中,分別研究了NLP和CV領(lǐng)域的壓縮方法。
下面一起來(lái)閱讀一下這項(xiàng)工作~
作者:Yehui Tang, Yunhe Wang, Jianyuan Guo, Zhijun Tu, Kai Han, Hailin Hu, Dacheng Tao
2. 摘要
基于Transformer架構(gòu)的大型模型在人工智能領(lǐng)域中發(fā)揮著日益重要的作用,特別是在自然語(yǔ)言處理(NLP)和計(jì)算機(jī)視覺(jué)(CV)領(lǐng)域。模型壓縮方法降低了它們的內(nèi)存和計(jì)算成本,這是在實(shí)際設(shè)備上實(shí)現(xiàn)Transformer模型的必要步驟。鑒于Transformer的獨(dú)特架構(gòu),具有替代注意力和前饋神經(jīng)網(wǎng)絡(luò)(FFN)模塊,需要特定的壓縮技術(shù)。這些壓縮方法的效率也至關(guān)重要,因?yàn)橥ǔ2滑F(xiàn)實(shí)在整個(gè)訓(xùn)練數(shù)據(jù)集上重新訓(xùn)練大型模型。這項(xiàng)調(diào)查全面審查了最近的壓縮方法,重點(diǎn)關(guān)注它們?cè)赥ransformer模型中的應(yīng)用。壓縮方法主要分為剪枝、量化、知識(shí)蒸餾和高效架構(gòu)設(shè)計(jì)。在每個(gè)類別中,我們討論了CV和NLP任務(wù)的壓縮方法,突出了共同的基本原理。最后,我們深入探討了各種壓縮方法之間的關(guān)系,并討論了該領(lǐng)域的進(jìn)一步發(fā)展方向。
3. 壓縮方法總結(jié)
Transformer模型的代表性壓縮方法總結(jié)。
基于Transformer的視覺(jué)模型的不同PTQ(Post-training quantization)和QAT(Quantization-aware training)方法的比較。W/A表示權(quán)重和激活度的位寬,結(jié)果顯示在ImageNet-1k驗(yàn)證集上的精確度最高。*代表混合精度。
4. 模型量化
量化(Quantization)是在各種設(shè)備上部署 Transformer 的關(guān)鍵步驟,特別是在為低精度算術(shù)設(shè)計(jì)專用電路的 GPU和 NPU 上。在量化過(guò)程中,浮點(diǎn)張量被轉(zhuǎn)換為具有相應(yīng)量化參數(shù)(比例因子 s和零點(diǎn) z)的整數(shù)張量,然后整數(shù)張量可以被量化回浮點(diǎn)數(shù),但與原始相比會(huì)導(dǎo)致一定的精度誤差。
Transformer量化總結(jié)。頂部展示了計(jì)算機(jī)視覺(jué)和自然語(yǔ)言處理現(xiàn)有作品中解決的不同問(wèn)題,底部顯示了標(biāo)準(zhǔn)transformer塊的正常INT8推理過(guò)程。
在NVIDIA A100-80GB GPU上使用Faster Transformer時(shí)ViT和OPT的推理延遲。
5. 知識(shí)蒸餾
知識(shí)蒸餾(Knowledge distillation,KD)旨在通過(guò)從教師網(wǎng)絡(luò)中蒸餾或傳遞知識(shí)來(lái)訓(xùn)練學(xué)生網(wǎng)絡(luò)。這篇文章主要關(guān)注的蒸餾方法是:實(shí)現(xiàn)緊湊學(xué)生模型的,同時(shí)與繁重的教師模型相比保持令人滿意的性能。學(xué)生模型通常具有較窄且較淺的架構(gòu),使它們更適合部署在資源有限的系統(tǒng)上。并主要介紹基于 logits 的方法(在 logits 級(jí)別傳遞知識(shí))以及基于 hint 的方法(通過(guò)中間特征傳遞知識(shí))。
用于大型Transformer模型的知識(shí)蒸餾分類。
與以前基于transformer的語(yǔ)言模型蒸餾方法的比較,GLUE得分是8個(gè)任務(wù)的平均值。
6. 模型剪枝
模型剪枝包括修剪和模型訓(xùn)練的順序,結(jié)構(gòu)規(guī)范以及確定修剪參數(shù)的方式。下面總結(jié)了Transformer模型剪枝方法的分類。
視覺(jué)轉(zhuǎn)換庫(kù)典型剪枝方法的比較。
大型語(yǔ)言Transformer上典型剪枝方法的比較。
幾種具有代表性的基于Transformer的LLM和LVM的模型卡,帶有公開(kāi)的配置詳細(xì)信息。
從訓(xùn)練并行化(TP)、推理成本(時(shí)間)和內(nèi)存復(fù)雜性(內(nèi)存)進(jìn)行模型比較。N和d分別表示序列長(zhǎng)度和特征維數(shù)。
7. 其他壓縮方法
除了量化、蒸餾、修剪和新穎的網(wǎng)絡(luò)架構(gòu)之外,還有幾種其他模型壓縮和加速方法。
張量分解。 張量或矩陣分解旨在將大張量或矩陣分解為較小的張量或矩陣,以節(jié)省參數(shù)數(shù)量和計(jì)算成本。這種方法首先被引入到全連接層和卷積網(wǎng)絡(luò)的壓縮中。至于大型語(yǔ)言模型,張量分解被用于簡(jiǎn)化模型的權(quán)重或嵌入層。
早期退出。 早期退出可以動(dòng)態(tài)為每個(gè)輸入樣本分配不同的資源并保持原始性能,這在信息檢索系統(tǒng)和卷積網(wǎng)絡(luò)中已經(jīng)成功使用。許多早期退出技術(shù)已被提出用于僅編碼器的變壓器。早期退出的關(guān)鍵問(wèn)題是確定何時(shí)退出?,F(xiàn)有的作品主要利用內(nèi)在的置信度度量、提前路由或訓(xùn)練一個(gè)早期退出分類器。
猜測(cè)采樣。 猜測(cè)采樣是一種特殊的Transformer解碼加速方法,通過(guò)并行計(jì)算幾個(gè)令牌來(lái)進(jìn)行。在大型語(yǔ)言模型中,解碼K個(gè)令牌需要模型的K次運(yùn)行,這是緩慢的。利用從較小模型生成的參考令牌,猜測(cè)采樣并行運(yùn)行這些令牌可以顯著加快解碼過(guò)程。此外,拒絕方案可以保持原始LLM的分布,從而理論上實(shí)現(xiàn)猜測(cè)采樣的無(wú)損。
8. 總結(jié) & 未來(lái)趨勢(shì)
這篇綜述系統(tǒng)地調(diào)查了Transformer模型的壓縮方法。與其他架構(gòu)(如CNN或RNN)不同,Transformer具有獨(dú)特的架構(gòu)設(shè)計(jì),具有替代注意力和FFN模塊,因此需要專門定制的壓縮方法以獲得最佳的壓縮率。此外,對(duì)于這些大型模型,壓縮方法的效率變得特別關(guān)鍵。某些模型壓縮技術(shù)需要大量的計(jì)算資源,這可能對(duì)這些龐大的模型來(lái)說(shuō)是不可行的。本調(diào)查旨在涵蓋與Transformer相關(guān)的大部分最近的工作,并闡述其壓縮的全面路線圖。隨后,深入探討了各種方法之間的相互關(guān)系,解決了后期挑戰(zhàn),并概述了未來(lái)研究的方向。
不同壓縮方法之間的關(guān)系。 不同的壓縮方法可以一起使用,以獲得極其高效的架構(gòu)。常見(jiàn)的順序是首先定義一個(gè)具有高效操作的新架構(gòu)。然后刪除多余的組件(例如注意力頭、層),以獲得一個(gè)較小的模型。對(duì)于實(shí)際硬件實(shí)現(xiàn),將權(quán)重或激活量量化為較低的位數(shù)是必不可少的。所需位數(shù)的選擇不僅取決于誤差的容忍度,還取決于硬件設(shè)計(jì)。例如,
訓(xùn)練高效的壓縮策略。 與壓縮傳統(tǒng)模型不同,對(duì)壓縮方法的計(jì)算成本的重視程度增加了。目前,大型Transformer正在使用大量的計(jì)算資源在龐大的數(shù)據(jù)集上進(jìn)行訓(xùn)練。例如,Llama2在數(shù)千個(gè)GPU上訓(xùn)練了2萬(wàn)億個(gè)令牌,持續(xù)了幾個(gè)月。在預(yù)訓(xùn)練期間使用相當(dāng)?shù)挠?jì)算資源進(jìn)行微調(diào)是不切實(shí)際的,特別是當(dāng)原始數(shù)據(jù)通常是不可訪問(wèn)的。因此,訓(xùn)練后的高效壓縮方法的可行性變得更加可行。然而,對(duì)于較低的位數(shù)(例如4位),量化模型仍然會(huì)遭受顯著的性能降低。值得注意的是,極低位模型,例如二進(jìn)制Transformer,在傳統(tǒng)的小型模型中已經(jīng)得到了廣泛的探索,但在大型模型的背景下仍然相對(duì)未知。
對(duì)于修剪來(lái)說(shuō), 后期訓(xùn)練的挑戰(zhàn)與修剪粒度緊密相關(guān)。盡管非結(jié)構(gòu)化的稀疏性可以在最小微調(diào)要求下實(shí)現(xiàn)高壓縮率,但類似的策略難以轉(zhuǎn)移到結(jié)構(gòu)性修剪中。直接刪除整個(gè)注意力頭或?qū)訉?dǎo)致模型架構(gòu)的重大改變和因此準(zhǔn)確性的顯著降低。如何識(shí)別有效權(quán)重以及如何有效地恢復(fù)性能都是洞察力方向。識(shí)別有效權(quán)重和恢復(fù)表示能力的有效策略是解決這些挑戰(zhàn)的關(guān)鍵研究方向。
超越Transformer的高效架構(gòu)。 在現(xiàn)實(shí)世界的應(yīng)用中,Transformer架構(gòu)的輸入上下文可以延伸到極長(zhǎng)的長(zhǎng)度,包括NLP中的序列文本(例如,一本擁有數(shù)十萬(wàn)字的書(shū))或CV中的高分辨率圖像?;A(chǔ)注意力機(jī)制對(duì)輸入序列長(zhǎng)度的復(fù)雜度呈二次復(fù)雜度,對(duì)于長(zhǎng)序列輸入構(gòu)成了重大的計(jì)算挑戰(zhàn)。許多研究通過(guò)減少注意力的計(jì)算成本來(lái)解決這個(gè)問(wèn)題,采用了稀疏注意力、局部注意力等技術(shù)。然而,這些注意力壓縮策略通常會(huì)損害表示能力,導(dǎo)致性能下降。
新興的架構(gòu), 如RWKV和RetNet采用了類似于RNN的遞歸輸出生成,有效地將計(jì)算復(fù)雜度降低到O(N)。這一發(fā)展有望在探索更高效模型的過(guò)程中進(jìn)一步發(fā)展。對(duì)于計(jì)算機(jī)視覺(jué)任務(wù),即使是沒(méi)有注意力模塊的純MLP架構(gòu)也可以實(shí)現(xiàn)SOTA性能。過(guò)仔細(xì)研究它們的效率、泛化性和擴(kuò)展能力,探索新的高效架構(gòu)是有希望的。
審核編輯:黃飛
-
變壓器
+關(guān)注
關(guān)注
159文章
7524瀏覽量
136338 -
編碼器
+關(guān)注
關(guān)注
45文章
3667瀏覽量
135237 -
gpu
+關(guān)注
關(guān)注
28文章
4774瀏覽量
129351 -
人工智能
+關(guān)注
關(guān)注
1796文章
47666瀏覽量
240274 -
自然語(yǔ)言處理
+關(guān)注
關(guān)注
1文章
619瀏覽量
13646
原文標(biāo)題:GPU不夠用?網(wǎng)絡(luò)不夠快?一文看懂Transformer壓縮技巧!
文章出處:【微信號(hào):3D視覺(jué)工坊,微信公眾號(hào):3D視覺(jué)工坊】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論