加速DeiT-S 60%+吞吐量!腾讯优图提出高性能Transformer加速方法
?PaperWeekly 原創(chuàng) ·?作者?|?小馬
單位?|?FightingCV公眾號(hào)運(yùn)營(yíng)者
研究方向?|?計(jì)算機(jī)視覺(jué)
寫(xiě)在前面
視覺(jué) Transformer(ViT)最近引起了非常大的熱度,但巨大的計(jì)算成本仍然是一個(gè)嚴(yán)重的問(wèn)題。由于 ViT 的計(jì)算復(fù)雜度相對(duì)于輸入序列長(zhǎng)度是呈二次關(guān)系的,因此減少計(jì)算的主流范式是減少 token 的數(shù)量。
現(xiàn)有的設(shè)計(jì)包括結(jié)構(gòu)化空間壓縮,使用漸進(jìn)收縮金字塔來(lái)減少大型特征映射的計(jì)算,以及動(dòng)態(tài)刪除冗余 token 的非結(jié)構(gòu)化 token 剪枝。然而,現(xiàn)有的 token 剪枝存在兩方面的局限性:1)由剪枝引起的不完全空間結(jié)構(gòu)與 Transformer 常用的結(jié)構(gòu)化空間壓縮不兼容 ;2)需要一個(gè)耗時(shí)的預(yù)訓(xùn)練階段 。
為了解決限制和擴(kuò)展 token 剪枝的適用場(chǎng)景,作者提出了 Evo-ViT,這是一種用于視覺(jué) Transformer 的自激勵(lì)的慢-快 token 進(jìn)化方法(self-motivated slow-fast token evolution approach) 。
具體來(lái)說(shuō),作者通過(guò)利用視覺(jué) Transformer 固有的全局類(lèi)注意來(lái)進(jìn)行非結(jié)構(gòu)化的實(shí)例級(jí) token 選擇。然后,作者用不同的計(jì)算路徑來(lái)更新所選的信息 token 和非信息 token,即慢-快更新(slow-fast updating) 。由于慢-快更新機(jī)制維持了空間結(jié)構(gòu)和信息流,Evo-ViT 可以從一開(kāi)始就加速 Transformer 的訓(xùn)練過(guò)程。
實(shí)驗(yàn)結(jié)果表明,該方法在保持圖像分類(lèi)性能的同時(shí),顯著降低了視覺(jué) Transformer 的計(jì)算開(kāi)銷(xiāo)。本文的方法將 DEIT-S 加速了 60% 以上的吞吐量,而只犧牲了 ImageNet-1K 上 0.4% 的 Top-1 精度,在精度和效率上都優(yōu)于當(dāng)前的 token 剪枝方法 。
論文標(biāo)題:
Evo-ViT: Slow-Fast Token Evolution for Dynamic Vision Transformer
論文地址:
https://arxiv.org/abs/2108.01390
代碼鏈接:
https://github.com/YifanXu74/Evo-ViT
Motivation
近年來(lái),視覺(jué) Transformer 在各種計(jì)算機(jī)視覺(jué)任務(wù)上表現(xiàn)出了強(qiáng)大的性能,如圖像分類(lèi),物體檢測(cè),實(shí)例分割。將 Transformer 引入計(jì)算機(jī)視覺(jué)的原因在于卷積神經(jīng)網(wǎng)絡(luò)(CNN)所缺乏的特性,特別是建模長(zhǎng)距離依賴(lài)關(guān)系的特性。然而,由于圖像包含大面積的低級(jí)紋理和無(wú)信息區(qū)域,因此對(duì)圖像 token 之間的長(zhǎng)期依賴(lài)關(guān)系進(jìn)行密集建模的計(jì)算效率是很低的 。
現(xiàn)有的方法遵循兩個(gè)方向來(lái)解決 ViT 中 token 之間的長(zhǎng)期依賴(lài)建模的低效問(wèn)題,如上圖所示。第一個(gè)方向(如第二條路徑所示),是基于局部空間先驗(yàn)進(jìn)行結(jié)構(gòu)化壓縮 ,如局部線性投影,Shift Windows 等。大多數(shù)具有深窄結(jié)構(gòu)的 Transformer 都在這 條pipeline 內(nèi)。然而,結(jié)構(gòu)化壓縮模型以相同的優(yōu)先級(jí)處理信息對(duì)象 token 和非信息背景 token 。
因此,第二個(gè)方向是?token 修剪 ,以非結(jié)構(gòu)化的方式識(shí)別和刪除非信息 token(如上圖的第一條路徑所示)。這種方法通常是根據(jù)預(yù)訓(xùn)練模型的誤差,來(lái)去除冗余的 token。也有方法提出了通過(guò)分層的方式去除冗余 token 來(lái)加速預(yù)訓(xùn)練的 Transformer 網(wǎng)絡(luò),并通過(guò)自蒸餾探索了一種數(shù)據(jù)端降采樣策略。盡管有顯著的加速,但這些非結(jié)構(gòu)化 token 剪枝方法由于其空間結(jié)構(gòu)和信息流不完整,存在兩方面的限制:不適用于結(jié)構(gòu)化的壓縮 Transformer,也不能從頭開(kāi)始訓(xùn)練 。
在本文中,第三條路徑如圖所示。作者提出從訓(xùn)練過(guò)程的一開(kāi)始,以動(dòng)態(tài)數(shù)據(jù)依賴(lài)的方式來(lái)處理低效問(wèn)題。作者認(rèn)為無(wú)信息的 token,它們對(duì)最終預(yù)測(cè)的貢獻(xiàn)很小,但計(jì)算占位符 token(placeholder token)的遠(yuǎn)程依賴(lài)時(shí),依舊會(huì)帶來(lái)計(jì)算成本。
不同于直接減少局部空間冗余的結(jié)構(gòu)化壓縮,作者提出以非結(jié)構(gòu)化和動(dòng)態(tài)的方式,將信息 token 與占位符 token區(qū)分開(kāi)來(lái),并使用不同的計(jì)算路徑更新兩種類(lèi)型的 token 。不同于在預(yù)訓(xùn)練的網(wǎng)絡(luò)中搜索冗余和剪枝,作者通過(guò)保留占位符 token,可以保持完整的空間結(jié)構(gòu)和信息流。通過(guò)這種方式,本文的方法可以從訓(xùn)練的一開(kāi)始就插入到各種 ViT 的結(jié)構(gòu)中,進(jìn)行加速 。
具體地說(shuō),本文提出了一種動(dòng)態(tài)的自激勵(lì) Evo-ViT 進(jìn)化方法。作者認(rèn)為,由于 Transformer 的類(lèi) token(class token)可以深入了解圖像 token 之間的全局依賴(lài)關(guān)系,并學(xué)習(xí)分類(lèi),因此它自然能夠區(qū)分信息 token 記和占位符 token,這都是自激勵(lì)的 。
以上圖中的 DeiT 為例,作者發(fā)現(xiàn) DeiT-T 的 class token 估計(jì)了每個(gè) token 對(duì)于依賴(lài)關(guān)系建模和最終分類(lèi)的重要性。特別是在更深的層(例如,layer10),class token 通常會(huì)用更高的 attention weight 增強(qiáng)信息性 token,這與可解釋的可視化結(jié)果非常相似。在淺層(例如第 5 層),class token 的注意力相對(duì)分散,但主要集中在信息區(qū)域。
因此,利用 class token 確定信息性 token 和占位符 token 的優(yōu)勢(shì),就可以保留占位符 token 確保 Transformer 淺層中的完整信息流動(dòng),以確保建模精度。確定這兩種 token 后,將以“慢-快”的方式更新它們。具體而言,占位符 token 被總結(jié)為一個(gè)代表性 token,該 token 通過(guò) Transformer 編碼器與信息性 token 以緩慢而精細(xì)的方式進(jìn)行更新進(jìn)化。然后,利用進(jìn)化的代表性 token 快速更新占位符 token 以獲得更多的代表性特征。
方法
3.1. Preliminaries
ViT 提出了一種簡(jiǎn)單的 token 化策略,該策略通過(guò)將圖像分為多個(gè) patch 并將每個(gè) patch 線性投影到 embedding 中來(lái)處理圖像。額外的類(lèi) token(CLS)被添加到序列中,并用作全局圖像表示。此外,由于 transformer 的編碼器中的自注意是位置不可知的,并且視覺(jué)應(yīng)用對(duì)位置信息的要求很高,因此 ViT 將位置 embedding 添加到每個(gè) token 中,包括 CLS token。之后,所有 token 通過(guò)堆疊的 transformer 編碼器傳遞,CLS token 用于最終分類(lèi)。
transformer 由一系列堆疊的編碼器組成,其中每個(gè)編碼器由兩個(gè)模塊組成,即多頭自注意(MSA)模塊和 feed forward network(FFN)模塊。FFN 模塊包含兩個(gè)帶有激活函數(shù)的線性變換。MSA 和 FFN 模塊都使用殘差連接和 LayerNorm(LN)。給定 ViT 的輸入 ,第 k 個(gè)編碼器的處理可以表示為:
自注意(SA)模塊使用三個(gè)可學(xué)習(xí)的線性映射,將輸入序列投影到 query、key、value 向量(即 、、)中。然后,通過(guò)以下方法計(jì)算序列中所有 value 的加權(quán)和:
值得注意的是,ViT 與 CNN 的一個(gè)非常不同的設(shè)計(jì)是 CLS token。CLS token 與每個(gè)編碼器上的 patch token 相互作用,并總結(jié)了最終用于所有 patch token 的表示。將 CLS token 和 patch token 之間的相似性分?jǐn)?shù)表示為類(lèi)注意力 ,計(jì)算表示為:
其中, ?是 CLS token 的 query 向量。
在 ViT 中,MSA 和 FFN 模塊的計(jì)算成本分別為 和 。對(duì)于剪枝方法,通過(guò)剪枝 η% 的 token,至少可以減少 FFN 和 MSA 模塊中 η% 的 FLOPS。本文的方法可以在達(dá)到相同的效率的同時(shí),更適用于從頭開(kāi)始訓(xùn)練的模型(而非對(duì)預(yù)訓(xùn)練好的模型進(jìn)行剪枝)。
3.2. Methodology
3.2.1. Overview
在本文中,作者的目標(biāo)是從 Transformer 訓(xùn)練過(guò)程開(kāi)始,解決每個(gè)輸入實(shí)例的低效建模問(wèn)題。如上圖所示,Evo-ViT 的 pipeline 主要包含兩個(gè)部分:結(jié)構(gòu)保留 token 選擇模塊(Structure preserving token selection) 和慢-快 token 更新模塊(slow-fast token updating module) 。在結(jié)構(gòu)保留 token 選擇模塊中,信息 token 和占位符 token 由全局類(lèi)注意力決定,并以不同的方式進(jìn)行更新。
3.2.2. Structure preserving token selection
在這項(xiàng)工作中,作者保留所有的 token,并動(dòng)態(tài)區(qū)分信息 token 和占位符 token,以實(shí)現(xiàn)完整的信息流。原因是修剪視覺(jué) Transformer 的淺層和中間層的 token 并不簡(jiǎn)單,特別是在訓(xùn)練過(guò)程的開(kāi)始。
作者用層間和層內(nèi)的方式來(lái)解釋這個(gè)問(wèn)題。首先,淺層和中間層通常呈現(xiàn)出快速增長(zhǎng)的特征表示能力。修剪 token 會(huì)帶來(lái)嚴(yán)重的信息丟失。作者使用中心核對(duì)齊(CKA)相似度測(cè)量每層中間 token 特征和動(dòng)態(tài) CLS token 的相似性。
結(jié)果如上圖(a)所示,當(dāng)模型越深時(shí),DeiT-T 的 token特征不斷更新,最終的 CLS token 特征與淺層的 token 特征有很大的不同。這表明,淺層或中間層的特征表示編碼不足,使得 token 剪枝相當(dāng)困難 。第二,token 在淺層之間的相關(guān)性較低。作者評(píng)估了 DeiT-S 模型中不同 patch token query 中關(guān)于網(wǎng)絡(luò)深度的皮爾遜相關(guān)系數(shù)(PCC),以顯示冗余。如上圖(b)所示,淺層的方差較大,證明了區(qū)分淺層特征冗余的難度較大 。
注意力權(quán)重是簡(jiǎn)單的方法來(lái)解釋一個(gè)模型的決策,并獲得關(guān)于 token 中信息傳播的 insights。作者發(fā)現(xiàn),全局類(lèi)注意能夠成為一個(gè)簡(jiǎn)單的度量,以幫助動(dòng)態(tài)區(qū)分視覺(jué) Transformer 中的信息 token 和占位符 token。在上圖中(a),信息 token 與最終的 CLS token 具有較高的 CKA 相關(guān)性,而占位符 token 具有較低的 CKA 相關(guān)性。
根據(jù)類(lèi)注意 ,作者選擇了 Top-k 個(gè)類(lèi)注意力得分的 token 作為信息 token。其余 N?k 個(gè) token 為包含較少信息的占位符 token。與 token 修剪不同,占位符 token 被保留并快速更新,而不是刪除 。
為了更好地捕獲不同層中 token 之間的底層信息,作者提出了一種全局類(lèi)注意。具體來(lái)說(shuō),作者設(shè)計(jì)了不同層次的類(lèi)注意之間的殘差連接,以促進(jìn)具有正則化效應(yīng)的注意信息流。表示如下:
其中 , 是第 k 層的全局類(lèi)注意, 是第 k 層的類(lèi)注意。
3.2.3. Slow-fast token updating
信息 token 和占位符 token 由全局類(lèi)的注意決定,接著作者提出以一種“慢-快”的方式更新 token,而不是直接刪除占位符 token。信息 token 通過(guò) MSA 和 FFN 模塊更新,而占位 token 總結(jié)為一個(gè)代表 token 并進(jìn)行更新。
對(duì)于 N 個(gè) patch token ,作者首先通過(guò)上述 token 選擇策略將它們分成 k 個(gè)信息 token 和 N?k 個(gè)占位符 token 。然后,將占位符 token 聚合為一個(gè)具有代表 token ,如下所示:
然后,將信息性 token 和代表性 token 分別輸入 MSA 和 FFN 模塊,更新過(guò)程計(jì)算如下:
因此,信息性 token 和代表性 token 以一種緩慢而復(fù)雜的方式進(jìn)行更新。
最后,通過(guò) 殘差的方式快速更新占位符 token :
因此,這里的占位符 token 通過(guò)代表性 token 進(jìn)行快速而簡(jiǎn)單的更新。
實(shí)驗(yàn)
4.1. Main Results
4.1.1 Comparisons with existing pruning methods
上表顯示了本文方法和現(xiàn)有剪枝方法的性能和吞吐量對(duì)比。
4.1.2 Comparisons with state-of-the-art ViT models
上表展示了本文方法和 SOTA 的視覺(jué) Transformer 的對(duì)比,可以看出,本文的方法在保證性能的情況下,能夠在很大程度上進(jìn)行加速。
4.2. Ablation Analysis
4.2.1 Effectiveness of each module
上表顯示了不同更新方式的性能對(duì)比,可以看出本文提出“慢-快”更新方式能夠具備性能上的優(yōu)勢(shì)。
4.2.2 Different Token Selection Strategy
此外,作者還對(duì)比了其他 token 選擇方法,來(lái)驗(yàn)證本文方法的有效性??梢钥闯?#xff0c;全局類(lèi)注意在準(zhǔn)確性和效率上都優(yōu)于其他選擇策略和常見(jiàn)的采樣方法。
4.2.3 Visualization
上圖展示了 token 選擇的可視化結(jié)果。結(jié)果表明,一些信息 token,在早期被確定為占位符 token。隨著訓(xùn)練 epoch 的增加,本文的方法在 token 選擇方面逐漸趨于穩(wěn)定。
4.2.4 Consistent keeping ratio
作者還設(shè)置了各層不同的 token 保持比,以研究 Evo-ViT 的最佳加速結(jié)構(gòu)。當(dāng)所有層的保持比設(shè)置為 0.5 時(shí),能夠獲得最佳的計(jì)算量-準(zhǔn)確率的 trade-off。
總結(jié)
在這項(xiàng)工作中,作者提出一種自激勵(lì)的慢-快 token 進(jìn)化(Evo-ViT)方法,來(lái)研究視覺(jué) Transformer 的效率。作者提出了一個(gè)保留 token 選擇和具有“慢-快”更新策略的結(jié)構(gòu),以充分利用完整的空間結(jié)構(gòu)和信息流。對(duì) DeiT 和 LeViT 的實(shí)驗(yàn)表明,所提出的 Evo-ViT 方法顯著加速了各種 Transformer 結(jié)構(gòu),同時(shí)保持了相似的分類(lèi)性能,特別是在密集輸入的情況下。
更多閱讀
#投 稿?通 道#
?讓你的文字被更多人看到?
如何才能讓更多的優(yōu)質(zhì)內(nèi)容以更短路徑到達(dá)讀者群體,縮短讀者尋找優(yōu)質(zhì)內(nèi)容的成本呢?答案就是:你不認(rèn)識(shí)的人。
總有一些你不認(rèn)識(shí)的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學(xué)者和學(xué)術(shù)靈感相互碰撞,迸發(fā)出更多的可能性。?
PaperWeekly 鼓勵(lì)高校實(shí)驗(yàn)室或個(gè)人,在我們的平臺(tái)上分享各類(lèi)優(yōu)質(zhì)內(nèi)容,可以是最新論文解讀,也可以是學(xué)術(shù)熱點(diǎn)剖析、科研心得或競(jìng)賽經(jīng)驗(yàn)講解等。我們的目的只有一個(gè),讓知識(shí)真正流動(dòng)起來(lái)。
📝?稿件基本要求:
? 文章確系個(gè)人原創(chuàng)作品,未曾在公開(kāi)渠道發(fā)表,如為其他平臺(tái)已發(fā)表或待發(fā)表的文章,請(qǐng)明確標(biāo)注?
? 稿件建議以?markdown?格式撰寫(xiě),文中配圖以附件形式發(fā)送,要求圖片清晰,無(wú)版權(quán)問(wèn)題
? PaperWeekly 尊重原作者署名權(quán),并將為每篇被采納的原創(chuàng)首發(fā)稿件,提供業(yè)內(nèi)具有競(jìng)爭(zhēng)力稿酬,具體依據(jù)文章閱讀量和文章質(zhì)量階梯制結(jié)算
📬?投稿通道:
? 投稿郵箱:hr@paperweekly.site?
? 來(lái)稿請(qǐng)備注即時(shí)聯(lián)系方式(微信),以便我們?cè)诟寮x用的第一時(shí)間聯(lián)系作者
? 您也可以直接添加小編微信(pwbot02)快速投稿,備注:姓名-投稿
△長(zhǎng)按添加PaperWeekly小編
🔍
現(xiàn)在,在「知乎」也能找到我們了
進(jìn)入知乎首頁(yè)搜索「PaperWeekly」
點(diǎn)擊「關(guān)注」訂閱我們的專(zhuān)欄吧
·
總結(jié)
以上是生活随笔為你收集整理的加速DeiT-S 60%+吞吐量!腾讯优图提出高性能Transformer加速方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 兼容模式怎么设置最好(兼容模式怎么设置)
- 下一篇: 广州是居民用电价格是多少?