博客專欄

EEPW首頁 > 博客 > CVPR 2023|EfficientViT:讓ViT更高效部署實現(xiàn)實時推理(附源碼)

CVPR 2023|EfficientViT:讓ViT更高效部署實現(xiàn)實時推理(附源碼)

發(fā)布人:CV研究院 時間:2023-06-20 來源:工程師 發(fā)布文章

圖片

論文地址:https://arxiv.org/pdf/2305.07027.pdf項目代碼:https://github.com/microsoft/Cream/tree/main/EfficientViT

01

總  述


在今天分享中,研究者提出了一個名為EfficientViT的高速Vision transformers家族。我們發(fā)現(xiàn),現(xiàn)有transformer模型的速度通常受到內(nèi)存低效操作的限制,特別是MHSA中的張量整形和逐元函數(shù)。因此,研究者設(shè)計了一種具有三明治布局的新構(gòu)建塊,即在有效的FFN層之間使用單個存儲器綁定的MHSA,這在增強信道通信的同時提高了存儲器效率。

圖片

此外,研究者發(fā)現(xiàn)注意力圖在頭部之間具有高度相似性,導(dǎo)致計算冗余。為了解決這一問題,提出了一種級聯(lián)的組注意力模塊,該模塊為具有不同全特征分割的注意力頭提供反饋,這不僅節(jié)省了計算成本,而且提高了注意力的多樣性。

綜合實驗表明,EfficientViT優(yōu)于現(xiàn)有的高效模型,在速度和準(zhǔn)確性之間取得了良好的平衡。例如,EfficientViT-M5在精度上超過MobileNetV3 Large 1.9%,而在Nvidia V100 GPU和Intel Xeon CPU上的吞吐量分別高出40.4%和45.2%。與最近的高效型號MobileViT XXS相比,EfficientViT-M2實現(xiàn)了1.8%的卓越精度,同時在GPU/CPU上運行速度快5.8倍/3.7倍,轉(zhuǎn)換為ONNX格式時速度快7.4倍。

圖片


02

 背景


最近有幾項工作設(shè)計了輕便高效的Vision transformers模型。不幸的是,這些方法大多旨在減少模型參數(shù)或Flops,這是速度的間接指標(biāo),不能反映模型的實際推理吞吐量。例如,在Nvidia V100 GPU上,使用700M浮點的MobileViT XS比使用1220M浮點的DeiT-T運行得慢得多。盡管這些方法以較少的Flops或參數(shù)獲得了良好的性能,但與標(biāo)準(zhǔn)同構(gòu)或分級transformer(例如DeiT和Swin)相比,它們中的許多方法并沒有顯示出顯著的壁時鐘加速,并且沒有得到廣泛采用。

圖片

為了解決這個問題,研究者探討了如何更快地使用Vision transformers,試圖找到設(shè)計高效transformer架構(gòu)的原則?;谥髁鞯?span style="margin: 0px; padding: 0px; outline: 0px; max-width: 100%; letter-spacing: 0.8px; white-space: pre-wrap; text-indent: 32px; widows: 1; word-spacing: 1px; box-sizing: border-box !important; overflow-wrap: break-word !important;">Vision transformers DeiT和Swin,系統(tǒng)地分析了影響模型推理速度的三個主要因素,包括內(nèi)存訪問計算冗余參數(shù)使用。特別是,發(fā)現(xiàn)transformer模型的速度通常是內(nèi)存限制的。

基于這些分析和發(fā)現(xiàn),研究者提出了一個新的存儲器高效transformer模型家族,命名為EfficientViT。具體來說,設(shè)計了一個帶有三明治布局的新塊來構(gòu)建模型。三明治布局塊在FFN層之間應(yīng)用單個存儲器綁定的MHSA層。它減少了MHSA中內(nèi)存綁定操作造成的時間成本,并應(yīng)用了更多的FFN層來允許不同信道之間的通信,這更具內(nèi)存效率。然后,提出了一種新的級聯(lián)群注意力(CGA)模塊來提高計算效率。其核心思想是增強輸入注意力頭部的特征的多樣性。與之前對所有頭部使用相同特征的自我注意不同,CGA為每個頭部提供不同的輸入分割,并將輸出特征級聯(lián)到頭部之間。該模塊不僅減少了多頭關(guān)注中的計算冗余,而且通過增加網(wǎng)絡(luò)深度來提高模型容量。

圖片

輕量級CNN和ViT模型吞吐量和精度對比的展示

最后但同樣重要的是,通過擴大關(guān)鍵網(wǎng)絡(luò)組件(如價值預(yù)測)的通道寬度來重新分配參數(shù),同時縮小重要性較低的組件(如FFN中的隱藏維度)。這種重新分配最終提高了模型參數(shù)的效率。

圖片


03

 動機


Vision transformers加速

  • Memory Efficiency

圖片

內(nèi)存訪問開銷是影響模型速度的一個關(guān)鍵因素。Transformer中的許多運算符,如頻繁的整形、元素相加和歸一化,都是內(nèi)存效率低下的,需要跨不同內(nèi)存單元進(jìn)行耗時的訪問,如上圖,盡管有一些方法通過簡化標(biāo)準(zhǔn)softmax自注意的計算來解決這個問題,例如稀疏注意和低秩近似,但它們往往是以精度下降和加速度有限為代價的。

圖片

在這項工作中,研究者轉(zhuǎn)而通過減少內(nèi)存低效層來節(jié)省內(nèi)存訪問成本。最近的研究表明,內(nèi)存低效操作主要位于MHSA層,而不是FFN層。然而,大多數(shù)現(xiàn)有的ViT使用相等數(shù)量的這兩層,這可能無法實現(xiàn)最佳效率。因此,研究者探索了在具有快速推理的小模型中MHSA和FFN層的最優(yōu)分配。具體而言,將Swin-T和DeiT-T縮減為幾個推理吞吐量分別高1.25倍和1.5倍的小型子網(wǎng)絡(luò),并比較不同MHSA層比例的子網(wǎng)絡(luò)的性能。

  • Computation Efficiency

MHSA將輸入序列嵌入到多個子空間(頭)中,并分別計算注意力圖,這已被證明在提高性能方面是有效的。然而,注意力圖的計算成本很高,研究表明,其中一些并不重要。

為了節(jié)省計算成本,探討如何減少小型ViT模型中的冗余注意力。以1.25×推理加速訓(xùn)練寬度縮小的Swin-T和DeiT-T模型,并測量每個頭部和每個塊內(nèi)剩余頭部的最大余弦相似性。從下圖中,觀察到注意力頭部之間存在高度相似性,尤其是在最后一個塊中。

圖片

這一現(xiàn)象表明,許多頭部學(xué)習(xí)相同完整特征的相似投影,并產(chǎn)生計算冗余。為了明確鼓勵頭部學(xué)習(xí)不同的模式,應(yīng)用了一種直觀的解決方案,即只向每個頭部提供完整特征的一部分,這類似于DeiT-T中的組卷積思想。用改進(jìn)的MHSA訓(xùn)練縮小模型的變體,并計算圖中的保持相似性。研究表明,在不同的頭部中使用不同的通道分割特征,而不是像MHSA那樣對所有頭部使用相同的完整特征,可以有效地減少注意力計算冗余。

  • Parameter Efficiency

典型的ViT主要繼承了NLP transformer的設(shè)計策略,例如,使用Q、K、V投影的等效寬度,在階段上增加水頭,以及在FFN中將膨脹比設(shè)置為4。對于輕型車型,這些部件的配置需要仔細(xì)重新設(shè)計。受[Rethinking the value of network pruning]的啟發(fā),采用Taylor結(jié)構(gòu)修剪來自動查找Swin-T和DeiT-T中的重要成分,并探索參數(shù)分配的基本原理。修剪方法在一定的重新源約束下去除不重要的通道,并保留最關(guān)鍵的通道以最好地保持準(zhǔn)確性。它使用梯度和權(quán)重的乘積作為信道重要性,近似于去除信道時的損耗波動。

圖片


04

新框架


圖片

實驗可視化

圖片

圖片

圖片


*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



關(guān)鍵詞: AI

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉