LeViT

LeViT: a Vision Transformer in ConvNet’s Clothing for Faster Inference

https://github.com/facebookresearch/LeViT

https://mp.weixin.qq.com/s/XPN_9w8doyAdGQJft6BR1Q

https://arxiv.org/abs/2104.01136v2

摘要:我們設(shè)計了一系列圖像分類架構(gòu)摸柄,優(yōu)化了在高速狀態(tài)下準確度和效率之間的權(quán)衡颤练。我們的工作利用了基于注意的架構(gòu)的最新發(fā)現(xiàn),這種架構(gòu)在高度并行處理硬件上具有競爭力驱负。我們回顧了卷積神經(jīng)網(wǎng)絡(luò)大量文獻中的原理嗦玖,將其應(yīng)用于Transformer,特別是分辨率降低的激活圖跃脊。我們還介紹了注意力偏置宇挫,這是一種在視覺Transformer中整合位置信息的新方法。

因此酪术,我們提出了LeVIT:一種用于快速推理圖像分類的混合神經(jīng)網(wǎng)絡(luò)器瘪。我們考慮不同的硬件平臺上的不同的效率措施,以便最好地反映廣泛的應(yīng)用場景绘雁。我們的大量實驗驗證了我們的技術(shù)選擇娱局,并表明它們適用于大多數(shù)架構(gòu)∵制撸總體而言衰齐,LeViT在速度/精度權(quán)衡方面明顯優(yōu)于現(xiàn)有的ConvNet和vision transformers。例如继阻,在80%的ImageNet top-1精度下耻涛,LeViT比CPU上的EfficientNet快5倍

1????引言

Transformer神經(jīng)網(wǎng)絡(luò)最初用于自然語言處理應(yīng)用[1]。目前瘟檩,它們在該領(lǐng)域的大多數(shù)應(yīng)用中占據(jù)主導(dǎo)地位抹缕。他們處理可變大小的token?嵌入序列,這些序列被饋送到殘差的架構(gòu)墨辛。該模型包括兩類殘差塊:多層感知器(MLP)和原始類型的層:自注意卓研,它允許通過兩個線性函數(shù)組合輸入中的所有token對。這與僅限于固定大小鄰域的一維卷積方法形成對比。

最近奏赘,vision transformer(ViT)架構(gòu)[2]在與大規(guī)模數(shù)據(jù)集預(yù)訓(xùn)練的速度-精度權(quán)衡中獲得了最新的圖像分類結(jié)果寥闪。僅在ImageNet[4]上訓(xùn)練ViT模型時,數(shù)據(jù)高效圖像Transformer[3]獲得了具有競爭力的性能磨淌。它還引入了適用于高通量推理的較小模型疲憋。

在本文中,我們探索了設(shè)計空間梁只,以便在中小型架構(gòu)領(lǐng)域提供比ViT/DeiT模型更好的折衷方案缚柳。我們特別感興趣的是優(yōu)化性能-精度折衷,如圖1所示的Imagenet-1k-val的吞吐量(圖像/秒)性能[5]搪锣。

雖然許多工作[6秋忙、7、8构舟、9灰追、10]旨在減少分類器和特征提取器的內(nèi)存占用,但推理速度同樣重要旁壮,高吞吐量對應(yīng)更好的能效监嗜。在這項工作中谐檀,我們的目標是開發(fā)一個基于Vision Transformer的模型系列抡谐,在GPU、常規(guī)Intel CPU和移動設(shè)備中常見的ARM硬件等高并行架構(gòu)上具有更好的推理速度桐猬。我們的解決方案重新引入卷積組件麦撵,代替學(xué)習(xí)卷積特性的Transformer組件。特別是溃肪,我們將Transformer的統(tǒng)一結(jié)構(gòu)替換為具有池化的金字塔免胃,類似于LeNet[11]架構(gòu)。因此我們稱之為LeViT惫撰。

對于給定的計算復(fù)雜度羔沙,Transformer比卷積結(jié)構(gòu)更快,這有令人信服的原因厨钻。大多數(shù)硬件加速器(GPU扼雏、TPU)都經(jīng)過優(yōu)化以執(zhí)行大型矩陣乘法。在Transformer中夯膀,注意和MLP塊主要依賴于這些操作诗充。相反,卷積需要復(fù)雜的數(shù)據(jù)訪問模式诱建,因此它們的操作通常受到IO限制蝴蜓。這些注意事項對于我們探索速度/精度權(quán)衡非常重要。

這篇論文的貢獻是使ViT模型在寬度和空間分辨率方面縮小的技術(shù):

?????多級Transformer結(jié)構(gòu),將注意力用作下采樣機制茎匠;

?????計算效率高的圖塊描述符(descriptor)格仲,可減少第一層中的特征數(shù)量;

?? ? 可學(xué)習(xí)的汽抚、每頭平移不變的注意偏差抓狭,取代ViT的位置嵌入;

?????重新設(shè)計的注意力MLP塊造烁,在給定計算時間內(nèi)提高網(wǎng)絡(luò)容量否过。

2????相關(guān)工作

從LeNet[11]衍生出來的卷積網(wǎng)絡(luò)隨著時間的推移已經(jīng)發(fā)生了實質(zhì)性的演變[12,13,14,15,16,17]。最新的架構(gòu)系列側(cè)重于在效率和性能之間找到一個良好的平衡點[18,17,19]惭蟋。例如苗桂,EfficientNet[17]家族是通過仔細設(shè)計單個組件,然后在FLOPs約束下搜索超參數(shù)而發(fā)現(xiàn)的告组。

Transformer煤伟。

Vaswani等人[1]首先為機器翻譯引入了transformer架構(gòu)。Transformer編碼器主要依賴于與前饋層結(jié)合的自注意操作木缝,為學(xué)習(xí)長距離依賴提供了一種強大而明確的方法便锨。Transformer隨后被用于NLP任務(wù),在各種基準上提供最先進的性能[20,21]我碟。已經(jīng)有很多嘗試將transformer架構(gòu)應(yīng)用于圖像[22,23]放案,首先是將其應(yīng)用于像素。由于二次計算復(fù)雜性和注意機制涉及的參數(shù)數(shù)量矫俺,大多數(shù)作者[23,24]最初考慮的是小尺寸圖像吱殉,如CIFAR或Imagenet64[25]±逋校混合文本和圖像嵌入已經(jīng)使用帶有檢測邊界框的Transformer作為輸入[26]友雳,即大部分圖像處理在卷積域中完成。

視覺Transformer(ViT)[2]铅匹。

有趣的是押赊,這種Transformer架構(gòu)非常接近最初的NLP版本,沒有顯式卷積(只是將固定大小的圖像塊線性化為向量)包斑,但它在圖像分類方面與最先進的技術(shù)競爭流礁。ViT在JFT300M(非公開,盡管在Imagenet-21k上的訓(xùn)練也會產(chǎn)生有競爭力的結(jié)果)等大型標記數(shù)據(jù)集上進行預(yù)訓(xùn)練時舰始,可獲得良好的性能崇棠。

除了強大的數(shù)據(jù)增強外,這種預(yù)訓(xùn)練的必要性可歸因于Transformer的built-in結(jié)構(gòu)比卷積少丸卷,特別是它們沒有歸納偏置來聚焦附近的圖像元素枕稀。作者假設(shè)需要一個大而多樣的數(shù)據(jù)集來正則化訓(xùn)練。

在DeiT[3]中,對大型預(yù)訓(xùn)練數(shù)據(jù)集的需求被學(xué)生-教師設(shè)置和更強的數(shù)據(jù)增強和正則化所取代萎坷,如隨機深度[27]或重復(fù)擴充[28,29]凹联。教師是一個卷積神經(jīng)網(wǎng)絡(luò),“幫助”學(xué)生網(wǎng)絡(luò)獲得卷積的歸納偏差哆档。此后蔽挠,視覺Transformer已成功應(yīng)用于更廣泛的計算機視覺任務(wù),包括目標檢測[30]瓜浸、語義分割[31]和圖像檢索[32]澳淑。

位置編碼。

Transformer以一個集合作為輸入插佛,因此對輸入的順序是不變的杠巡。然而,無論是在語言還是在圖像中雇寇,輸入都來自于一個順序很重要的結(jié)構(gòu)氢拥。原始Transformer[1]將絕對非參數(shù)位置編碼與輸入合并。其他作品已經(jīng)用參數(shù)編碼[33]取代了它們锨侯,或者采用了基于傅立葉的核化版本[22]嫩海。絕對位置編碼對輸入集強制執(zhí)行固定大小,但有些作品使用相對位置編碼[34]囚痴,對token之間的相對位置進行編碼叁怪。在我們的工作中,我們將這些顯式位置編碼替換為隱式編碼空間信息的位置偏差渡讼。

沿著其它機制的注意力骂束。

有幾項工作包括了為視覺設(shè)計的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中的注意機制[35,36,37,38]耳璧。該機制用于按通道捕獲補充卷積層的交叉特征信息[39成箫、40、41]旨枯,選擇網(wǎng)絡(luò)不同分支中的路徑[42]蹬昌,或?qū)烧呓Y(jié)合起來[43]。例如攀隔,Hu等人[44]的SE網(wǎng)絡(luò)有一個類似注意的模塊皂贩,用于模擬層特征之間的通道關(guān)系。Li等人[37]利用網(wǎng)絡(luò)分支之間的注意機制來適應(yīng)神經(jīng)元的感受野昆汹。

最近明刷,Transformer的出v現(xiàn)導(dǎo)致了混合架構(gòu),受益于其他模塊满粗。Bello[45]提出了一種帶有位置注意成分的近似內(nèi)容注意辈末。Child等人[23]觀察到網(wǎng)絡(luò)中的許多早期層學(xué)習(xí)本地連接的模式,類似于卷積。這表明挤聘,由transformers和convnets設(shè)計的混合架構(gòu)是一個引人注目的設(shè)計選擇轰枝。最近的一些作品為不同的任務(wù)探索了這一途徑[46,47]。在圖像分類方面组去,最近與我們并行的一項工作是金字塔視覺Transformer(PVT)[48]鞍陨,其設(shè)計深受ResNet的啟發(fā)。它主要用于處理對象和實例分割任務(wù)从隆。

與我們的工作同時诚撵,Yuan等人[49]提出了Tokens-to-Tokens-ViT(T2T-ViT)模型。與PVT類似键闺,它的設(shè)計依賴于在每一層之后通過聚合相鄰的token來重新標記輸出砾脑,這樣token的數(shù)量會逐漸減少。此外艾杏,Yuan等人[49]研究了CNN[44韧衣、50、51]中架構(gòu)設(shè)計選擇的集成购桑,這可以提高視覺Transformer的性能和效率畅铭。正如我們將看到的,這些最新的方法沒有我們在準確性和推理時間之間的權(quán)衡上的工作那么集中勃蜘。他們在這一平衡方面沒有競爭力硕噩。

3????動機

在本節(jié)中,我們將討論Transformer圖塊投影層的seemly卷積行為缭贡。然后炉擅,我們在標準卷積結(jié)構(gòu)(ResNet-50)上進行Transformer(DeiTS)的“嫁接實驗”辉巡。該分析得出的結(jié)論將激勵我們在第4節(jié)中進行后續(xù)設(shè)計選擇独榴。

3.1 ViT架構(gòu)中的卷積

ViT的patch extractor是一個16x16卷積,步幅為16嫡丙。此外莹汤,圖塊提取器的輸出乘以可學(xué)習(xí)的權(quán)重快鱼,以形成第一層自注意的qkv嵌入纲岭,所以我們可以認為這些也是輸入的卷積函數(shù)抹竹。像DeiT[3]和PVT[48]這樣的變體也是如此。在圖2中止潮,我們將DeiT的注意力權(quán)重的第一層可視化窃判,按注意力頭進行分解。這比Dosovitskiy等人[2]描述的主成分更直接喇闸。人們可以觀察到卷積結(jié)構(gòu)固有的典型模式:注意力集中在特定的模式(低頻顏色/高頻灰度)袄琳,這些模式類似于Gabor濾波器窿凤。

在卷積mask有重疊(編者注:卷積核大小>滑動步幅)的卷積中,卷積mask的空間平滑度來自重疊:附近的像素接收大致相同的梯度跨蟹。對于ViT卷積雳殊,沒有重疊(編者注:ViT中,核=16窗轩,滑動步幅=16)夯秃。平滑度mask可能是由數(shù)據(jù)增加引起的:當圖像顯示兩次時,稍微平移痢艺,相同的梯度通過每個濾波器仓洼,因此它學(xué)習(xí)這種空間平滑度。因此堤舒,盡管Transformer結(jié)構(gòu)中沒有“歸納偏置”色建,但訓(xùn)練確實產(chǎn)生了類似于傳統(tǒng)卷積層的濾波器。

3.2????初步實驗:嫁接

ViT圖像分類器[2]的作者嘗試將Transformer層堆疊在傳統(tǒng)的ResNet-50上舌缤。在這種情況下箕戳,ResNet充當Transformer層的特征提取器,梯度可以通過兩個網(wǎng)絡(luò)傳播回來国撵。然而陵吸,在他們的實驗中,Transformer層數(shù)是固定的(例如介牙,12層用于ViT-base)壮虫。

在本小節(jié)中,我們研究了在類似計算預(yù)算下环础,將Transformer與卷積網(wǎng)絡(luò)混合的可能性:我們探討了在改變卷積階段數(shù)和Transformer層的數(shù)量時獲得的權(quán)衡囚似。我們的目標是在控制運行時間時評估卷積和Transformer混合的變化。

嫁接线得。

嫁接結(jié)合了ResNet-50和DeiT-Small饶唤。這兩個網(wǎng)絡(luò)具有相似的運行時。

我們裁剪了ResNet-50的上層框都,同樣減少了DeiT層的數(shù)量(同時保持Transformer和MLP塊的數(shù)量相同)搬素。由于裁剪后的ResNet生成的激活映射比DeiT輸入的14×14激活映射更大呵晨,因此我們在它們之間引入了一個池化層魏保。在初步實驗中,我們發(fā)現(xiàn)平均池的性能最好摸屠。在卷積層和Transformer層堆棧的接口處引入了位置嵌入和分類標記(classification token)谓罗。對于ResNet-50階段,我們使用ReLU激活單元[52]和批量標準化[53]季二。

結(jié)果檩咱。

表1總結(jié)了結(jié)果揭措。嫁接的架構(gòu)比單獨使用DeiT和ResNet-50產(chǎn)生更好的結(jié)果。參數(shù)最少而模型最高的模型是具有兩個階段的ResNet50刻蚯,因為它沒有包括計算量很大的卷積第三階段绊含。請注意,在本實驗中炊汹,訓(xùn)練過程類似于DeiT:300時代躬充,我們在ImageNet上測量top-1驗證精度,并將速度作為一個GPU每秒可以處理的圖像數(shù)讨便。

我們在圖3中所示的一個有趣的觀察結(jié)果是充甚,訓(xùn)練期間嫁接模型的收斂似乎類似于早期時期的convnet,然后切換到類似于DeiT-S的收斂速度霸褒。一個假設(shè)是卷積層由于其強烈的歸納偏置(明顯的平移不變性)伴找,有能力在前幾層更高效地學(xué)習(xí)到low-level信息的表示。它們快速依賴于有意義的圖塊嵌入废菱,這可以解釋第一個epoch的更快收斂技矮。

討論。

在運行時控制的情況下殊轴,在Transformer下方插入卷積級似乎是有益的穆役。對于嫁接架構(gòu)的最精確變體,大部分處理仍在Transformer堆棧中完成梳凛。因此耿币,下一節(jié)的重點是降低Transformer的計算成本。為此韧拒,Transformer架構(gòu)需要與卷積階段更緊密地合并淹接,而不僅僅是嫁接。

4? ? 模型

在本節(jié)中叛溢,我們將描述LeViT架構(gòu)的設(shè)計過程以及所采取的權(quán)衡塑悼。圖4總結(jié)了該架構(gòu)。

4.1 LeViT的設(shè)計原則

LeViT建立在ViT[2]架構(gòu)和DeiT[3]訓(xùn)練方法的基礎(chǔ)上楷掉。我們合并了被證明對卷積架構(gòu)有用的組件厢蒜。第一步是獲得兼容的表示。不考慮分類嵌入的作用烹植,ViT是一個處理激活映射的層堆棧斑鸦。實際上,中間的“token”嵌入可以看作是FCN架構(gòu)(BCHW格式)中的傳統(tǒng)C×H×W激活映射草雕。因此巷屿,應(yīng)用于激活映射(池、卷積)的操作可以應(yīng)用于DeiT的中間表示墩虹。

在這項工作中嘱巾,我們優(yōu)化了計算的架構(gòu)憨琳,不一定要最小化參數(shù)的數(shù)量。使ResNet[14]系列比VGG網(wǎng)絡(luò)[13]更高效的設(shè)計決策之一是在其前兩個階段應(yīng)用強大的分辨率降低旬昭,且計算預(yù)算相對較小篙螟。當激活映射到達ResNet的參數(shù)量很多的第三階段時,其分辨率已經(jīng)縮小到足以將卷積應(yīng)用于小激活映射问拘,從而降低了計算成本闲擦。

4.2 ????LeViT部件

圖塊嵌入(Patch embedding)。

第3節(jié)中的初步分析表明场梆,當對Transformer組的輸入應(yīng)用小型convnet時墅冷,可以提高精度。

在LeViT中或油,我們選擇對輸入應(yīng)用4層3×3卷積(步幅2)寞忿,以執(zhí)行分辨率降低。通道數(shù)為C=3顶岸、32腔彰、64、128辖佣、256霹抛。這減少了Transformer下層的激活映射輸入,而不會丟失顯著信息卷谈。LeViT-256的圖塊提取器將圖像形狀(3杯拐,224,224)轉(zhuǎn)換為(256世蔗、14端逼、14),具有184 MFLOP污淋。為了進行比較顶滩,ResNet-18的前10層使用1042 MFLOP執(zhí)行相同的降維。

沒有分類token寸爆。

為了使用BCHW張量格式礁鲁,我們刪除了分類標記。與卷積網(wǎng)絡(luò)類似赁豆,我們將其替換為最后一個激活映射上的平均池化仅醇,從而生成用于分類器的嵌入。對于訓(xùn)練期間的蒸餾歌憨,我們?yōu)榉诸惡驼麴s任務(wù)分別訓(xùn)練頭着憨。在測試時,我們平均兩個頭的輸出务嫡。實際上甲抖,LeViT可以使用BNC或BCHW張量格式實現(xiàn),以更高效的為準心铃。

歸一化層和激活准谚。

ViT架構(gòu)中的FC層相當于1×1卷積。ViT在每個注意和MLP單元之前使用layer norm去扣。對于LeViT柱衔,每次卷積后都會進行batch nom。在[54]之后愉棱,與殘差連接相連的每個批標準化權(quán)重參數(shù)都初始化為零唆铐。batch nom可以與前面的卷積合并進行推理,這是相對于layer norm的運行時優(yōu)勢(例如奔滑,在EfficientNet B0上艾岂,此融合將GPU上的推理速度提高了一個因子2)。雖然DeiT使用GELU函數(shù)朋其,但LeViT的所有非線性激活都是Hardswish[19]王浴。

多分辨率金字塔。

卷積架構(gòu)構(gòu)建為金字塔梅猿,其中激活映射的分辨率隨著處理期間通道數(shù)量的增加而降低氓辣。在第3節(jié)中,我們使用ResNet-50級對Transformer堆棧進行預(yù)處理袱蚓。

LeViT將ResNet階段集成到Transformer架構(gòu)中钞啸。在階段內(nèi)部,該架構(gòu)類似于一個視覺Transformer:一個具有交替MLP和激活塊的殘差結(jié)構(gòu)喇潘。在下文中爽撒,我們回顧了與經(jīng)典設(shè)置相比,注意塊(圖5)的修改[1]响蓉。

下采樣硕勿。

在LeViT階段之間,收縮注意塊(shrink attention block)減小激活圖的大蟹慵住:在Q變換之前應(yīng)用下采樣源武,然后傳播到軟激活的輸出。這將大小為(C想幻,H粱栖,W)的輸入張量映射為大小為(C’,H/2脏毯,W/2)C’>C的輸出張量闹究。由于尺度的變化,使用此注意塊時沒有殘差連接食店。為了防止信息丟失渣淤,將注意頭的數(shù)量定為C/D赏寇。

用注意偏置取代位置嵌入

Transformer結(jié)構(gòu)中的位置嵌入是一個位置相關(guān)的可訓(xùn)練參數(shù)向量,在將標記嵌入輸入Transformer塊之前添加到標記嵌入中价认。如果不存在嗅定,則Transformer輸出將獨立于輸入標記的排列。位置嵌入的燒蝕導(dǎo)致分類精度急劇下降[55]用踩。

然而渠退,位置嵌入僅包含在注意塊序列的輸入上。因此脐彩,由于位置編碼對于更高的層也很重要碎乃,因此它很可能保留在中間表示中,并且不必要地使用表示容量惠奸。

因此梅誓,我們的目標是在每個注意塊中提供位置信息,并在注意機制中顯式地注入相對位置信息:我們只需在注意映射中添加注意偏差晨川。一個注意力頭h\in [N]中证九,兩個像素(x,y)\in [H]\times  [W](x’,y’)\in [H]\times  [W]之間的標量注意力值計算為:

A_{(x,y),(x’,y’)}^h = Q_{(x,y),:} \bullet K_{(x’,y’),:} +B_{\vert x-x’\vert ,\vert y-y’ \vert }^h? ??(1)

第一個項是經(jīng)典注意。第二個是平移不變的注意力偏置共虑。對應(yīng)于不同的像素偏移愧怜,每個頭有H\times W個參數(shù)。將差異x-x’y-y’對稱化鼓勵模型使用翻轉(zhuǎn)不變性進行訓(xùn)練妈拌。

更小的鍵

偏置項減少了對鍵進行位置信息編碼的壓力拥坛,因此我們減小了鍵矩陣相對于值矩陣的大小。如果鍵的維度是D∈\left\{  {16,32}\right\} 尘分,那么值V的維度是2D猜惋。限制鍵的維度可以減少計算key productQK^T所需的時間。

對于沒有殘差連接的下采樣層培愁,我們將V的維度設(shè)置為4D著摔,以防止信息丟失。

注意激活定续。

在使用常規(guī)的線性投影組合不同頭的輸出之前谍咆,我們對乘積A^hV使用Hardwish激活函數(shù)。這類似于ResNet瓶頸殘差塊私股,即V是1×1卷積的輸出摹察,A^hV對應(yīng)于空間卷積,投影是另一個1×1卷積倡鲸。

減少MLP塊供嚎。

ViT中的MLP殘差塊是一個線性層,它將嵌入維度增加了因子4,接著應(yīng)用非線性克滴,然后再使用另一個非線性將維度縮減回原來大小逼争。對于vision架構(gòu),MLP在運行時和參數(shù)方面通常比注意塊更昂貴偿曙。對于LeViT氮凝,“MLP”是一個1×1卷積羔巢,然后是通常的批量歸一化望忆。為了降低該階段的計算成本,我們將卷積的展開因子從4減少到2竿秆。一個設(shè)計目標是注意塊和MLP塊消耗大約相同數(shù)量的FLOPs启摄。

4.3 LeViT系列模型

LeViT模型可以通過改變計算階段的大小來產(chǎn)生一系列速度-精度權(quán)衡。我們通過輸入到第一個Transformer的通道數(shù)來識別它們幽钢,例如歉备,LeViT-256在Transformer級的輸入上有256個通道。表2顯示了如何為我們在本文中評估的模型設(shè)計階段匪燕。

表2:LeViT模型蕾羊。每個階段由若干對注意塊和MLP塊組成。N:頭數(shù)帽驯,C:通道數(shù)量龟再,DQK運算符的輸出維數(shù)。將階段分開的是收縮注意塊尼变,其值C利凑、C’分別取自上面和下面的行。概率為p的Drop path應(yīng)用于每個殘差連接嫌术。步幅為2的塊中的N值為C/D哀澈,以彌補殘差連接的不足。每個注意塊后面都有一個擴展因子為2的MLP






5個實驗

5.1實驗背景

數(shù)據(jù)集和評估度气。

我們在最接近我們的方法的DeiT工作上模擬我們的實驗割按。它建立在Pytork[56]和Timm庫[57]的基礎(chǔ)上。我們在ImageNet-2012數(shù)據(jù)集上進行訓(xùn)練磷籍,并對其驗證集進行評估适荣。我們不會在這項工作中使用更多的訓(xùn)練數(shù)據(jù)。

資源消耗择示。

普遍接受的推斷速度度量單位是乘加運算(又稱觸發(fā)器)束凑,因為浮點矩陣乘法和卷積可以表示為乘加運算。

但是栅盲,某些操作汪诉,尤其是非線性激活,不執(zhí)行乘加操作。在觸發(fā)器計數(shù)(或計數(shù)為單個觸發(fā)器)中扒寄,它們通常被忽略鱼鼓,因為假定它們的成本可以忽略,即高階矩陣乘法和卷積的成本该编。然而迄本,對于少數(shù)通道,像GELU這樣復(fù)雜激活的運行時間與卷積的運行時間相當课竣。此外嘉赎,根據(jù)所使用的硬件和API,使用相同數(shù)量的觸發(fā)器的操作效率可能會有所不同于樟。

因此公条,我們還報告了參考硬件上的原始計時,如最近的論文[2,58]迂曲。Transformer的效率幾乎完全依賴于大降維矩陣乘法靶橱。

硬件。

在這項工作中路捧,我們在PyTorch中運行所有實驗关霸,因此我們依賴于該API中可用的優(yōu)化。為了獲得更多的客觀計時杰扫,我們在三個不同的硬件平臺上計時推斷队寇,每個平臺對應(yīng)一個用例:

?一個16GB NVIDIA Volta GPU(峰值性能為12 TFLOP/s)。這是一個典型的訓(xùn)練加速器涉波。

?2.0GHz的Intel Xeon 6138 CPU英上。這是數(shù)據(jù)中心中的典型服務(wù)器,對傳入圖像流執(zhí)行特征提取啤覆。PyTorch使用MKL和AVX2指令(16個矢量寄存器苍日,每個256位)對此配置進行了優(yōu)化。

?ARM重力2 CPU(亞馬遜C6g實例)窗声。對于移動電話和其他邊緣設(shè)備正在運行的處理器類型來說相恃,它是一個很好的模型。Gravion2有32個內(nèi)核笨觅,支持帶有32個128位向量寄存器(NEON)的NEON向量指令集拦耐。

在GPU上,我們在大圖像批上運行計時见剩,因為這對應(yīng)于典型的用例杀糯;在DeiT之后,我們使用適合內(nèi)存的兩個batchsize的最大功率苍苞。在CPU平臺上固翰,我們在單個線程中測量推斷時間狼纬,模擬多個線程處理單獨的輸入圖像流的設(shè)置。

很難分離硬件和軟件的影響骂际,因此我們使用標準PyTorch工具(justin time編譯器疗琉,不同的優(yōu)化配置文件)試驗了幾種優(yōu)化網(wǎng)絡(luò)的方法。

5.2訓(xùn)練LeViT

我們使用32個GPU歉铝,在3到5天內(nèi)完成1000次訓(xùn)練盈简。這比卷積網(wǎng)絡(luò)的常規(guī)計劃要多,但視覺Transformer需要長時間的訓(xùn)練太示,例如柠贤,1000個歷元的訓(xùn)練DeiT在300個歷元中提高了2個top-1精度點。為了使訓(xùn)練正規(guī)化先匪,我們使用蒸餾驅(qū)動訓(xùn)練种吸,類似于DeiT弃衍。這意味著LeViT使用兩個具有交叉熵損失的分類頭進行訓(xùn)練呀非。第一個負責(zé)人接受groundtruth課程的監(jiān)督,第二個負責(zé)人接受ImageNet上訓(xùn)練的RegNetY-16GF[18]模型的監(jiān)督镜盯。事實上岸裙,LeViT的訓(xùn)練時間主要取決于教師的推理時間。

5.3速度-精度權(quán)衡

表3顯示了我們通過LeViT獲得的速度精度折衷速缆,圖1中繪制了一些顯著的數(shù)字降允。我們將其與最新技術(shù)中的兩種競爭性架構(gòu)進行比較:作為強卷積基線的效率網(wǎng)[17],以及類似地艺糜,作為強僅Transformer架構(gòu)的效率網(wǎng)[3]剧董。這兩條基線都在以下條件下進行訓(xùn)練,以最大限度地提高其準確性破停。例如翅楼,我們將其與1000個時代訓(xùn)練的神進行比較。

在操作點的范圍內(nèi)真慢,我們認為毅臊,LeVIT架構(gòu)遠遠優(yōu)于Transformer和卷積變體。LeViT-384在精確度上與Deit不相上下黑界,但使用了一半的失敗次數(shù)管嬉。差距擴大,以獲得更快的操作點:LeViT-128S與DeiT Tiny不相上下朗鸠,使用的觸發(fā)器數(shù)量減少了4倍蚯撩。

運行時度量密切跟蹤這些趨勢。例如烛占,LeViT-192和LeViT-256的精度與EfficientNet B2和B3大致相同胎挎,但在CPU上分別快5倍和7倍。在ARM平臺上,float32操作的優(yōu)化程度不如Intel呀癣。然而美浦,速度-精度的權(quán)衡仍然對LeViT有利。

5.4與最新技術(shù)的比較

表4報告了其他基于Transformer的架構(gòu)的結(jié)果项栏,以與LeViT進行比較(表3)浦辨。由于我們的方法專門用于高通量模式,因此我們不包括非常大和緩慢的模型[61,62]沼沈。

我們在FLOPs精度權(quán)衡方面進行了比較流酬,因為其他工作都是最新的,不一定提供參考模型列另,我們可以根據(jù)這些模型對推斷進行計時芽腾。所有Token-to-Token ViT[49]變型比LeViT-384多5倍的觸發(fā)器,比LeViT的精度更高的參數(shù)页衙。瓶頸Transformer[46]和“視覺Transformer”[47](不要與ViT混淆)都是通用架構(gòu)摊滔,也可用于檢測和對象分割。在相當?shù)木认碌昀郑瑑烧叨急萀eViT-192慢5倍左右艰躺。金字塔視覺Transformer[48]也是如此(表中未報告),但其設(shè)計目標不同眨八。與這些架構(gòu)相比腺兴,LeViT的優(yōu)勢在于它受益于類似于DeiT的蒸餾,這使得它在僅在ImageNet上進行訓(xùn)練時更加準確廉侧。與LeViT相近的兩種架構(gòu)是基于池的vision transformer(PiT)[59]和CvT[60]页响,ViT的變體具有金字塔結(jié)構(gòu)。PiT是最有希望的一種段誊,它包含了許多DeiT的優(yōu)化成分闰蚕,但仍然比LeViT慢1.2到2.4倍。

交互評估枕扫。

在表3中陪腌,我們評估了替代測試集、Imagenet Real[63]和Imagenet V2匹配頻率[64]上的LeViT烟瞧。這兩個數(shù)據(jù)集使用與ImageNet相同的類集和訓(xùn)練集诗鸭。Imagenet Real重新評估了標簽,每個圖像可能有幾個類別参滴。Imagenet-V2(在我們的例子中是匹配頻率)使用不同的測試集强岸。測量兩者的性能以驗證hyperparameters調(diào)整沒有導(dǎo)致過擬合到ImageNet的驗證集是很有趣的。因此砾赔,對于在ImageNet驗證中具有同等精度的模型蝌箍,我們在替代測試集上測量分類性能青灼。LeViT-256和EfficientNet B3:LeViT變體在-Real上獲得相同的分數(shù),但在-V2上稍差(-0.6)妓盲。LeViT-384和DeiT Small:LeViT在-Real(-0.2)和-V2(-0.4)上稍差杂拨。盡管在這些評估中,LeViT的準確度相對較低悯衬,但與EfficientNet和DeiT相比弹沽,速度-準確度權(quán)衡仍然成立。

5.5燒蝕

為了評估LeViT的性能筋粗,我們使用默認設(shè)置進行實驗策橘,并一次替換一個參數(shù)。我們訓(xùn)練LeViT-128S模型和許多變體娜亿,以評估與ViT/DeiT相關(guān)的設(shè)計變更丽已。實驗只進行了100次訓(xùn)練,以擴大差異并縮短訓(xùn)練時間买决。對于更大的模型和更長的訓(xùn)練計劃沛婴,結(jié)論仍然存在。我們一次更換一個組件策州,當網(wǎng)絡(luò)需要返工時瘸味,我們確保觸發(fā)器計數(shù)保持大致相同(詳見附錄a.2)。表5顯示够挂,所有更改都會降低精度:

A1-

沒有金字塔形狀的燒蝕會直接堆積注意力和MLP(像DeiT)。然而藕夫,為了保持觸發(fā)器計數(shù)與基線相似孽糖,網(wǎng)絡(luò)寬度減小,導(dǎo)致網(wǎng)絡(luò)具有少量參數(shù)毅贮,導(dǎo)致最終精度非常低办悟。這表明LeViT中分辨率的降低是控制計算復(fù)雜度的主要工具。

A2-

沒有PatchConv:我們用一個大小為16的卷積來移除四個預(yù)處理卷積滩褥。這對參數(shù)的數(shù)量幾乎沒有影響病蛉,但觸發(fā)器的數(shù)量減少了10%。這對準確性有很大的負面影響瑰煎。這可以解釋铺然,因為在低容量區(qū)域,卷積是壓縮3·162=768維圖塊輸入的有效方法酒甸。

A3-

在沒有BatchNorm的情況下魄健,我們將BatchNorm替換為在ViT/DeiT架構(gòu)中使用的預(yù)激活的LayerNorm。這稍微減慢了模型的速度插勤,因為需要在測試時計算批次統(tǒng)計數(shù)據(jù)沽瘦。刪除BatchNorm也會刪除殘差連接的零初始化革骨,這會中斷訓(xùn)練。

A4-

從RegNetY-16GF教師模型中刪除硬蒸餾的使用會降低性能析恋,如DeiT所示良哲。

A5-

無注意偏差燒蝕將注意偏差組件替換為Transformer堆棧(如DeiT)輸入上添加的經(jīng)典位置嵌入。讓每一個注意力集中的人學(xué)習(xí)一種獨立的偏見似乎是有用的助隧。

A6-

我們使用DeiT樣式塊臂外,即Q、K和V都具有尺寸D=C/N喇颁,MLP塊具有膨脹系數(shù)4漏健。

A7-

除了softmax非線性之外,LeViT還增加了額外的Hardswish非線性橘霎。除去它蔫浆,無注意激活消融會降低性能,表明額外的非線性有助于學(xué)習(xí)分類類別邊界姐叁。

6結(jié)論

本文介紹了LeViT瓦盛,一種受卷積方法啟發(fā)的Transformer結(jié)構(gòu)。LeViT的準確性主要源于DeiT中的訓(xùn)練技術(shù)外潜。它的速度來自一系列精心控制的設(shè)計選擇原环。與其他用于數(shù)據(jù)中心或移動電話特征提取的高效神經(jīng)網(wǎng)絡(luò)相比,LeViT在可比精度下的速度快1.5到5倍处窥。因此嘱吗,據(jù)我們所知,它在高速領(lǐng)域的精確性和精確性之間的權(quán)衡方面開創(chuàng)了一種新的技術(shù)狀態(tài)滔驾。相應(yīng)的PyTorch代碼和型號可在https://github.com/ facebookresearch/LeViT

在本附錄中谒麦,我們報告了更多細節(jié)和結(jié)果。附錄A詳細說明了組成塊的時間安排哆致,并提供了有關(guān)消融的更多細節(jié)绕德。我們在附錄B中提供了注意力偏差的可視化。

附錄

詳細分析

A.1分組計時

在本節(jié)中摊阀,我們將從詳細的運行時分析的角度比較DeiT和LeViT塊之間的設(shè)計差異耻蛇。我們在補充表6中并排測量其組成部分的運行時間。對于DeiT Tiny胞此,我們將GELU激活替換為Hardswish臣咖,否則它將主宰運行時。

對于DeiT豌鹤,我們考慮了一個從DeiT極小的街區(qū)亡哄。對于LeViT,我們考慮從LeVIT256的第一階段的塊布疙。雖然LeViT寬33%(C=256 vs C=192)蚊惯,但兩者都以14×14的分辨率運行愿卸,運行時間也相當。請注意截型,階段1是LeViT-256最昂貴的部分趴荸。在第2和第3階段,由于分辨率降低宦焦,成本較低(參見主要論文的圖4)发钝。

LeViT計算注意力QKT的時間較少,但在隨后的矩陣積AV上花費的時間較多波闹。盡管具有更大的塊寬度C酝豪,LeViT在MLP組件上花費的時間更少,因為擴展因子從4降低到2精堕。

A.2關(guān)于我們消融的更多細節(jié)

在這里孵淘,我們在主要論文的第5.6節(jié)和表4中給出了燒蝕實驗的更多細節(jié)。

A1–沒有金字塔形狀歹篓。

我們測試了LeViT金字塔結(jié)構(gòu)的效果瘫证,我們用分辨率為14×14的深度為11的單級替換了三級。

為了保持觸發(fā)器計數(shù)庄撮,我們?nèi)=19背捌,N=3,C=2=114洞斯。

A6–無更寬的擋塊毡庆。

與DeiT相比,LeViT塊相對較寬巡扇,具有較小的鍵數(shù)和MLP擴展因子扭仁。為了測試這一變化,我們修改了LeViT-128S厅翔,使其具有更傳統(tǒng)的塊,同時保留了觸發(fā)器的數(shù)量搀突。因此刀闷,對于這三個階段,我們?nèi)仰迁,K甸昏,V的維數(shù)D=30,C=ND=120徐许,180施蜜,240。與DeiT一樣雌隅,MLP膨脹比為4翻默。在子采樣層中缸沃,我們分別使用N=4C/D=16和24。

視覺化:注意偏差

注意偏差映射自Eqn修械。本文中的1只是二維地圖趾牧。因此,我們可以將它們可視化肯污,見圖6翘单。它們可以被解讀為處于某個相對位置的兩個像素之間的注意量。偏置的最低值足夠低(-20)以抑制兩個像素之間的注意蹦渣,因為它們被輸入到softmax哄芜。我們可以觀察到,一些頭部是相當均勻的柬唯,而其他頭部則專注于附近的像素(例如认臊,大多數(shù)注意力縮小的頭部)。一些是明顯定向的权逗,例如美尸,階段2/塊1的頭1和4分別處理垂直和水平相鄰的像素。第2級塊4的頭1具有特定的周期2模式斟薇,這可能是由于其輸出被饋送到下一個收縮塊中的子采樣濾波器师坎。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市堪滨,隨后出現(xiàn)的幾起案子胯陋,更是在濱河造成了極大的恐慌,老刑警劉巖袱箱,帶你破解...
    沈念sama閱讀 212,383評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遏乔,死亡現(xiàn)場離奇詭異,居然都是意外死亡发笔,警方通過查閱死者的電腦和手機盟萨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,522評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來了讨,“玉大人捻激,你說我怎么就攤上這事∏凹疲” “怎么了胞谭?”我有些...
    開封第一講書人閱讀 157,852評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長男杈。 經(jīng)常有香客問我丈屹,道長,這世上最難降的妖魔是什么伶棒? 我笑而不...
    開封第一講書人閱讀 56,621評論 1 284
  • 正文 為了忘掉前任旺垒,我火速辦了婚禮彩库,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘袖牙。我一直安慰自己侧巨,他們只是感情好,可當我...
    茶點故事閱讀 65,741評論 6 386
  • 文/花漫 我一把揭開白布鞭达。 她就那樣靜靜地躺著司忱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪畴蹭。 梳的紋絲不亂的頭發(fā)上坦仍,一...
    開封第一講書人閱讀 49,929評論 1 290
  • 那天,我揣著相機與錄音叨襟,去河邊找鬼繁扎。 笑死,一個胖子當著我的面吹牛糊闽,可吹牛的內(nèi)容都是我干的梳玫。 我是一名探鬼主播,決...
    沈念sama閱讀 39,076評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼右犹,長吁一口氣:“原來是場噩夢啊……” “哼提澎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起念链,我...
    開封第一講書人閱讀 37,803評論 0 268
  • 序言:老撾萬榮一對情侶失蹤盼忌,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后掂墓,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谦纱,經(jīng)...
    沈念sama閱讀 44,265評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,582評論 2 327
  • 正文 我和宋清朗相戀三年君编,在試婚紗的時候發(fā)現(xiàn)自己被綠了跨嘉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,716評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡吃嘿,死狀恐怖偿荷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情唠椭,我是刑警寧澤,帶...
    沈念sama閱讀 34,395評論 4 333
  • 正文 年R本政府宣布忍饰,位于F島的核電站贪嫂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏艾蓝。R本人自食惡果不足惜力崇,卻給世界環(huán)境...
    茶點故事閱讀 40,039評論 3 316
  • 文/蒙蒙 一斗塘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧亮靴,春花似錦馍盟、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,798評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至搓侄,卻和暖如春瞄桨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背讶踪。 一陣腳步聲響...
    開封第一講書人閱讀 32,027評論 1 266
  • 我被黑心中介騙來泰國打工竹挡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留科盛,地道東北人。 一個月前我還...
    沈念sama閱讀 46,488評論 2 361
  • 正文 我出身青樓,卻偏偏與公主長得像鳄抒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子箱残,可洞房花燭夜當晚...
    茶點故事閱讀 43,612評論 2 350

推薦閱讀更多精彩內(nèi)容