機器之心專欄
作者:Wei Niu、Mengshu Sun等
來自美國東北大學(Northeastern University)的王言治研究組、威廉與瑪麗學院(William & Mary)的任彬研究組以及北卡羅來納州立大學(North Carolina State University)的慎熙鵬研究組提出了一種用于三維卷積神經(jīng)網(wǎng)絡(luò)(3D CNN)的模型壓縮和移動加速框架 RT3D。
本文提出了一種用于三維卷積神經(jīng)網(wǎng)絡(luò)(3D CNN)的模型壓縮和移動加速框架 RT3D,通過結(jié)合神經(jīng)網(wǎng)絡(luò)權(quán)重剪枝和編譯器代碼優(yōu)化技術(shù),使模型的端到端運行時間與目前支持 3D CNN 的移動框架相比速度提升高達 29.1 倍,準確性損失僅為 1%~1.5%。當在手機上采用 C3D 或 R(2+1)D 模型時,可以在 150ms 內(nèi)完成 16 幀視頻的計算。該工作由 CoCoPIE 團隊:美國東北大學(Northeastern University)的王言治研究組、威廉與瑪麗學院(William & Mary)的任彬研究組以及北卡羅來納州立大學(North Carolina State University)的慎熙鵬研究組共同完成,發(fā)表于第 35 屆美國人工智能協(xié)會年會(AAAI 2021)。
Model 與 codes 鏈接:https://github.com/CoCoPIE-Pruning/CoCoPIE-ModelZoo
現(xiàn)在大量移動設(shè)備配備了強大的高端移動 CPU 和 GPU,因此成為深度學習任務(wù)的重要載體。如圖 1 所示,最新的驍龍 690 SoC 芯片配備了一個 Adreno GPU, 一個 Hexagon DSP,以及 Kryo 多核 CPU。然而,目前的模型加速技術(shù)多應(yīng)用于 2D CNN 上,很難使 3D CNN 在移動設(shè)備上實時運行且保持較高精度,因為現(xiàn)存的商用移動設(shè)備的計算和存儲能力不能承載高度復(fù)雜的模型結(jié)構(gòu)和較高的模型維度。
圖 1 驍龍 690 移動 SoC 架構(gòu)
神經(jīng)網(wǎng)絡(luò)的權(quán)重剪枝技術(shù)在軟件層面上已被普遍應(yīng)用。然而,直接將 2D CNN 權(quán)重剪枝方法泛化到 3D CNN 并不足以使移動設(shè)備上的計算同時保持高并行度和高準確度。因此,我們提出了 RT3D,通過結(jié)合軟件上的權(quán)重剪枝技術(shù)和硬件上的編譯器代碼優(yōu)化技術(shù)在移動設(shè)備上實現(xiàn) 3D CNN 加速。其中權(quán)重剪枝又需要解決稀疏模式和剪枝算法兩個問題。
我們研究了兩種結(jié)構(gòu)化稀疏模式,即對移動端加速友好的樸素結(jié)構(gòu)化(Vanilla)稀疏和核組結(jié)構(gòu)化(Kernel Group Structured, KGS)稀疏。Vanilla 稀疏移除整組核,而 KGS 稀疏是一種更加細粒度的結(jié)構(gòu)化稀疏,充分利用了設(shè)備上的并行性,同時享有更高的靈活性。在剪枝算法方面,RT3D 引入了一種重新加權(quán)的正則化剪枝算法來實現(xiàn)所提出的稀疏模式,并和現(xiàn)存的啟發(fā)式及固定正則化的剪枝算法進行了比較。此外,在硬件方面,RT3D 采用了一個編譯器輔助的代碼生成框架,以將剪枝所帶來的計算量的減少轉(zhuǎn)換為移動設(shè)備上計算性能的增益。
該編譯器框架是通用的,支持稠密的(尚未壓縮的)和稀疏的 2D/3D 網(wǎng)絡(luò)的高效執(zhí)行。由稀疏性帶來的的運行時間加速倍率接近整個模型計算量(FLOPs)的壓縮率。與當前最先進的支持 3D CNN 的移動設(shè)備上框架相比,RT3D 展示了高達 29.1 倍的端到端運行時間加速,且準確率僅損失 1%~1.5%。當在手機上運行具有代表性的 C3D 和 R(2+1)D 模型時,16 幀視頻的運行時間可達到 150ms 以內(nèi)。如圖 2 所示,這是首次在現(xiàn)有移動設(shè)備上實現(xiàn)實時運行 3D CNN(此例使用了配備高通驍龍 865 處理器的三星 Galaxy S20)。
圖 2 實時 3D 行為識別
稀疏模式
為了有效減少 3D CNN 模型的整體計算量,我們將剪枝技術(shù)主要應(yīng)用于計算量較大的卷積層。圖 3 給出了兩種結(jié)構(gòu)化稀疏模式,其中(a)為樸素結(jié)構(gòu)化(Vanilla)稀疏,(b)為核組結(jié)構(gòu)化(KGS)稀疏。每個 3D 卷積層共包含五個維度,其權(quán)重張量沿著輸入通道和輸出通道兩個維度被分成多個卷積核組。圖中以每個核組包含 2×2 個核為例,被移除的權(quán)重用灰色表示。Vanilla 稀疏保留或移除整個核組,KGS 稀疏法則在同一核組的每個核中移除相同位置的權(quán)重。Vanilla 稀疏將 2D CNN 的結(jié)構(gòu)化稀疏模式泛化到 3D CNN 中,它可以借助編譯器優(yōu)化技術(shù)在設(shè)備上獲得直觀的運行加速,但同時會因整組核被移除導(dǎo)致模型準確率降低較多。而 KGS 稀疏有更高的細粒度以及靈活性,可以保證更高的準確率。
實際上,Vanilla 稀疏是 KGS 稀疏的一個特例,在相同壓縮比率下,只要借助有效的剪枝算法,KGS 稀疏法就能獲得比 Vanilla 稀疏法更高的模型準確率。此外,KGS 稀疏在設(shè)計上能與編譯器技術(shù)匹配以達到手機上的模型加速。卷積核組與輸入特征圖一起被轉(zhuǎn)化二維矩陣以進行矩陣乘法計算,如圖 3(b)所示。KGS 稀疏法相當于在核組內(nèi)部進行列剪枝,計算開銷很小并可借助編譯器進一步減小。對于兩種稀疏模式而言,被保留的權(quán)重組成的矩陣仍然能夠充分利用現(xiàn)有手機設(shè)備上有限的并行度,所以手機加速性能(FLOPs / 秒、幀 / 秒)能夠得到同等程度的提升。在實際操作中,卷積核組的大小需要根據(jù)手機上的單指令流多數(shù)據(jù)流(SIMD)并行度以及計算開銷來提前決定。
圖 3 兩種結(jié)構(gòu)化稀疏模式
模型壓縮的算法實現(xiàn)
近年來較為常見的剪枝算法大致可以分為兩大類,一類是啟發(fā)式剪枝算法,另一類是基于固定正則化的剪枝算法。前者往往會為神經(jīng)網(wǎng)絡(luò)中各部分權(quán)重分配 “重要性評分”,然后根據(jù)評分來對模型進行剪枝。貪心算法是這一類型算法中的一個代表。這類算法往往存在一個通病,它們會在壓縮的早期階段就削減掉模型中的大量權(quán)重,這會對神經(jīng)網(wǎng)絡(luò)準確度帶來較大的沖擊,使得壓縮比率有限。
第二類剪枝算法基于固定正則化,這種算法一般會在神經(jīng)網(wǎng)絡(luò)的損失函數(shù)中添加一個固定的正則化項,通過神經(jīng)網(wǎng)絡(luò)的反向傳播來實現(xiàn)權(quán)重矩陣的稀疏化,進而完成模型的裁剪。但基于固定正則化的剪枝算法存在局限性,在壓縮訓練的收斂過程中,所有權(quán)重會受到同等的懲罰,這會帶來潛在的模型精度損失。
為了克服先前算法的弊病,我們提出了一種新的算法:重加權(quán)正則化剪枝算法(Reweighted Regularization Pruning Algorithm)。不同于固定正則化剪枝為所有權(quán)重帶來相同的懲罰,重加權(quán)正則剪枝算法可以實現(xiàn)動態(tài)調(diào)節(jié)。特別是,對于那些較大且更加重要的權(quán)重,我們會減少對其的懲罰,對于那些較小且不重要的權(quán)重,我們會小幅度地增大對其的懲罰。而且這種算法以系統(tǒng)且漸進的方式執(zhí)行,這樣可以避免貪心算法在早期階段削減大量的權(quán)重對模型造成的破壞。除此之外,我們的算法不需要手動設(shè)置模型中每層的剪枝率,各部分的壓縮比率可以在訓練過程中自動調(diào)節(jié)。
圖 4 剪枝算法結(jié)構(gòu)分組示意圖,‖·‖g 表示對應(yīng)壓縮分組中的 L-g 范數(shù)
性能加速結(jié)果
我們在三種 3D CNN 模型(C3D,R(2+1)D 和 S3D)上測試了建議的兩種結(jié)構(gòu)化稀疏模式(即 Vanilla 和 KGS 稀疏模式)以及三種剪枝算法。除了提出的兩種稀疏模式之外,還實現(xiàn)了過濾器稀疏模式來進行對比,即以過濾器作為一個整體來進行裁剪,這是對 2D CNN 過濾器剪枝的直接實現(xiàn)。所有模型都在 Kinetics 數(shù)據(jù)集上進行了預(yù)訓練,并作為預(yù)訓練模型進行遷移學習,轉(zhuǎn)移到了 UCF101 和 HMDB51 數(shù)據(jù)集上。
表 1 在 UCF101 數(shù)據(jù)集上 3D CNN 壓縮結(jié)果比較
表 1 提供了在 UCF101 數(shù)據(jù)集上使用各種剪枝算法和稀疏模式對 C3D,R(2+1)D 模型的修剪結(jié)果。對于每種剪枝算法,在相同剪枝率下比較了三種稀疏模式(FLOPs 減少是基于模型整體而言的),并比較了兩種剪枝配置下的 KGS 壓縮結(jié)果。從表中可以看出,KGS 稀疏模式始終優(yōu)于 Vanilla 稀疏模式,這兩個方案的性能均優(yōu)于過濾器剪枝。重加權(quán)的正則化算法始終優(yōu)于其他兩個剪枝算法。如果使用加權(quán)加權(quán)正則化和 KGS 稀疏性方案,則在 2.6 倍剪枝倍率下,C3D 和 R(2+1)D 只有 1% 1.5%的精度損失。
表 2 移動 CPU 和 GPU 上的 RT3D,MNN 和 PyTorch 的運行時間比較。
接下來,我們將提出的 RT3D 與 MNN 和 PyTorch Mobile(PyTorch)的運行時間進行比較,來評估 RT3D 的實際加速效果。表 2 給出了端到端的 3D CNN 運行時間結(jié)果。RT3D(Dense)意為直接使用我們的編譯器對稠密的(尚未壓縮的)模型進行處理,RT3D(Sparse)意為在編譯器上運行的模型經(jīng)過了重加權(quán)正則化剪枝算法支持下的 KGS 稀疏結(jié)構(gòu)壓縮。MNN 尚不支持 R(2+1)D 和 S3D,所以這里不給出相關(guān)結(jié)果。
RT3D 在移動 CPU 和移動 GPU 上都支持稠密的(尚未壓縮的)和稀疏的 3D CNN,PyTorch 僅在 CPU 上支持稠密模型,而 MNN 僅在 CPU 上支持稠密 C3D 模型。對于稀疏模型,RT3D 使用帶有 KGS 稀疏性的重加權(quán)正則化剪枝算法修剪模型,修剪率分別為 C3D 3.6 倍,R(2+1)D 3.2 倍,S3D 2.1 倍(這里的剪枝率是對于模型的整體 FLOPs),準確度為 80.2%,92.0%和 90.2%。在表中,將 RT3D 的提速與 PyTorch 進行了比較。在所有情況下,RT3D 在移動 CPU 上均優(yōu)于 MNN 和 PyTorch。而在移動 GPU 上 RT3D 的效果更為出色。例如,對于 C3D,完全優(yōu)化的 RT3D(稀疏)在 CPU 上分別達到了 PyTorch 和 MNN 性能的 7.1 倍和 2.7 倍,在 GPU 上分別達到了 17.9 倍和 6.7 倍。值得注意的是,在移動 GPU 上,經(jīng)過全面優(yōu)化的 RT3D 在 C3D,R(2+1)D 和 S3D 上可以分別在 142 ms,141 ms 和 293 ms 內(nèi)完成 16 幀計算,從而實現(xiàn) 3D CNN 在移動設(shè)備上的實時運行。
表 3 Vanilla 和 KGS 稀疏模式之間的比較(基于 UCF101 數(shù)據(jù)集)
表三給出了燒燭研究的實驗結(jié)果。通過控制相同的剪枝 top-1 精度,在重加權(quán)正則加權(quán)算法下,我們還比較了 Vanilla 和 KGS 兩種稀疏模式的修剪率與運行時間。由表中數(shù)據(jù)我們可以看出,由于 KGS 的高靈活性和與編譯器級優(yōu)化的無縫匹配,在 C3D 和 R(2+1)D 上以相同的修剪精度實現(xiàn)了較高的剪枝率(在 FLOPs 中)和較低的計算延遲。
更廣泛的影響
RT3D 是第一個在移動設(shè)備上實時運行 3D CNN 且沒有明顯準確率損失的神經(jīng)網(wǎng)絡(luò)加速方案,在此之前只能通過移動設(shè)備上特定(而且更加昂貴)的硬件來實現(xiàn)。對于以往通過云計算的方式實現(xiàn)的行為檢測的機器學習應(yīng)用,RT3D 將會在移動設(shè)備上以邊緣計算的方式實現(xiàn)。這項技術(shù)不僅可以使數(shù)據(jù)隱私性得到了顯著增強,還可以極大地拓寬機器學習在其他領(lǐng)域的應(yīng)用。
百萬級文獻分析,十萬字深入解讀
2020-2021 全球AI技術(shù)發(fā)展趨勢報告
報告內(nèi)容涵蓋人工智能頂會趨勢分析、整體技術(shù)趨勢發(fā)展結(jié)論、六大細分領(lǐng)域(自然語言處理、計算機視覺、機器人與自動化技術(shù)、機器學習、智能基礎(chǔ)設(shè)施、數(shù)據(jù)智能技術(shù)、前沿智能技術(shù))技術(shù)發(fā)展趨勢數(shù)據(jù)與問卷結(jié)論詳解,最后附有六大技術(shù)領(lǐng)域5年突破事件、Synced Indicator 完整數(shù)據(jù)。
識別下方二維碼,立即購買報告。
THE END
轉(zhuǎn)載請聯(lián)系本公眾號獲得授權(quán)