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