在相同準確率下,實際參數(shù)量的壓縮,相對之前方法最大可以提高超120倍。
這就是滴滴實習(xí)生提出的自動結(jié)構(gòu)化減枝壓縮算法框架帶來的性能提升,名為AutoCompress。
核心在于自動化的去尋找深度模型剪枝中的超參數(shù),去除模型中不同層的參數(shù)冗余。
在CIFAR和ImageNet數(shù)據(jù)集的大量測試表明,AutoCompress的效果顯著超過各種神經(jīng)網(wǎng)絡(luò)壓縮方法與框架。
這一研究也被AAAI2020接收。
研究人員表示,這一研究能替代人工設(shè)計的過程,并實現(xiàn)超高的壓縮倍率,滿足嵌入式端上運行深度模型的實時性能需求。
他們是如何實現(xiàn)的?我們下面一一解讀。
近年來,隨著深度神經(jīng)網(wǎng)絡(luò)模型性能不斷刷新,模型的骨干網(wǎng)絡(luò)參數(shù)量愈發(fā)龐大,存儲和計算代價不斷提高,從而導(dǎo)致難以部署在資源受限的嵌入式平臺上。
深度神經(jīng)網(wǎng)絡(luò)模型壓縮技術(shù),成為解決這一問題不可或缺的關(guān)鍵,也成為近年來研究熱點之一。
也出現(xiàn)了不少方法,其中之一便是結(jié)構(gòu)化剪枝(structured pruning),能夠在平臺層面上,解決硬件執(zhí)行效率低,內(nèi)存訪問效率差,計算平行度不高問題,從而受到了學(xué)術(shù)界與工業(yè)界的重視。
但它也有“硬傷”,在算法實現(xiàn)過程中涉及到到大量的超參數(shù)設(shè)置。比如如何確定模型的壓縮維度,或者如何確定模型中每層的壓縮比例等等。
這都需要專家們一點點“掉頭發(fā)”地去設(shè)計指導(dǎo),而且人工上去設(shè)計這些超參數(shù)的過程冗長且復(fù)雜。
效果也不一定好,畢竟這在很大程度上還依賴于相關(guān)人員的參數(shù)調(diào)節(jié)經(jīng)驗。
然后就有研究人員心思開始活泛起來了,能不能自動設(shè)置超參數(shù)?如果實現(xiàn)了,將能夠大幅度提高算法實現(xiàn)效率,想想都挺讓人激動。
于是就有人開始干起來了,比如MIT、CMU和谷歌的研究學(xué)者們提出了一種名為AMC的方法,利用了深度增強學(xué)習(xí)(Deep Reinforcement Learning (DRL))的方法去決策每層的剪枝比例。
雖然實現(xiàn)了自動化調(diào)參的設(shè)想,但也有一些局限性。
一方面,這個研究只采用了單一的輸出通道(filter)剪枝維度;另外一方面,為了得到稀疏化模型,其所采用的剪枝方法僅僅是在模型訓(xùn)練過程中引入一個靜態(tài)的正則項。
但更深層次的局限性在于,其所采用的基于DRL框架的剪枝方法,本質(zhì)上與剪枝問題難以兼容。在結(jié)果中,最高壓縮率只有非結(jié)構(gòu)化(non-structured)的5倍壓縮倍率。
滴滴的研究中,改進了這些不足,提出了一個通用流程(generic flow),專門用于神經(jīng)網(wǎng)絡(luò)權(quán)重剪枝問題超參數(shù)設(shè)置自動化過程。
整體上,一共分為4步。先是行為抽樣(步驟1),然后快速評估(步驟2),接著確定決策(步驟3),最后是剪枝操作(步驟4)。
基于上述通用流程,并針對之前方法的局限性,通過綜合現(xiàn)有的深度神經(jīng)網(wǎng)絡(luò)與機器學(xué)習(xí)框架,他們實現(xiàn)了目前最高效的深度神經(jīng)網(wǎng)絡(luò)自動化結(jié)構(gòu)化剪枝的通用框架,并命名AutoCompress。
那AutoCompress是如何工作的呢?論文中提到了三大新的設(shè)計:
(1)提出混合型的結(jié)構(gòu)化剪枝維度;(2)采用高效強大的神經(jīng)網(wǎng)絡(luò)剪枝算法ADMM(交替乘子優(yōu)化算法)對訓(xùn)練過程中的正則項進行動態(tài)更新;(3)利用了增強型引導(dǎo)啟發(fā)式搜索的方式進行行為抽樣。
基于這些新設(shè)計,他們提出的框架是這樣的:
整體上來說,AutoCompress框架進行模型自動化剪枝主要有兩個步驟,先是通過基于ADMM算法的結(jié)構(gòu)化剪枝,得到權(quán)重分布結(jié)構(gòu)性稀疏化的模型;
然后通過網(wǎng)絡(luò)結(jié)構(gòu)凈化(Purification)操作,將ADMM過程中無法完全刪除的一小部分冗余權(quán)重找到并刪除。
值得注意的是,這兩個步驟都是基于相同的啟發(fā)式搜索機制。
舉例來講,給定一個原始模型,他們會設(shè)置兩種目標函數(shù)——根據(jù)權(quán)重數(shù)量設(shè)置或根據(jù)運算量(FLOPs)設(shè)置。
搜索過程進行若干輪,比如第一輪目標為壓縮兩倍權(quán)重數(shù)量,第二輪為壓縮四倍權(quán)重數(shù)量。在每一輪搜索過程中,首先初始化一個行為(超參數(shù)),然后每次對行為進行一個擾動(超參數(shù)的小幅變化)生成新的行為。
根據(jù)模擬退火算法原理,評估兩個行為,如果新的行為評估結(jié)果優(yōu)于原結(jié)果則接受該行為,如果新的行為評估結(jié)果劣于原結(jié)果則以一定概率接受該行為。
每一輪算法中的溫度參數(shù)T會下降,直到T下降到某個閾值后即停止搜索。最后,根據(jù)搜索得到的超參數(shù),對神經(jīng)網(wǎng)絡(luò)進行結(jié)構(gòu)化剪枝操作。
效果如何?他們也進行了測試:
在VGG-16在CIFAR-10數(shù)據(jù)集上,結(jié)構(gòu)化剪枝壓縮率高達52.2倍,無精度損失,在 Samsung Galaxy S10智能手機上測試(使用代碼生成優(yōu)化版編譯器),其運行速度為2.7ms。
ResNet-18在CIFAR-10數(shù)據(jù)集上更是達到了54.2倍結(jié)構(gòu)化剪枝壓縮率無精度損失。
相比之前的方法,如果考慮到ResNet-18與ResNet-50本身的大小差距,可以在準確率有所上升的情況下比之前的方法減小120倍權(quán)重參數(shù)。
在ImageNet數(shù)據(jù)集上,VGG-16達到了6.4倍結(jié)構(gòu)化壓縮率,精度損失僅為0.6%,ResNet-18達到了3.3倍的結(jié)構(gòu)化壓縮率,無精度損失。
而且, AutoCompress框架也可以應(yīng)用于非結(jié)構(gòu)化剪枝,其壓縮結(jié)果使ResNet-50在ImageNet數(shù)據(jù)集上可以做到9.2倍無精度損失的壓縮,更能達到17.4倍的壓縮率,僅損失0.7%的精度。
所以,他們得出結(jié)論,與其他方法相比,AutoCompress的效果超過各種神經(jīng)網(wǎng)絡(luò)壓縮方法與框架,得到的高效神經(jīng)網(wǎng)絡(luò)模型可以在嵌入式移動系統(tǒng)中實現(xiàn)實時推理運算。
研究的第一作者,名為劉寧,是美國東北大學(xué)的在讀博士生,師從美國東北大學(xué)王言治教授。
高中時曾獲得北京市高中物理競賽二等獎,本科是電子信息工程專業(yè),曾獲得全國大學(xué)生物聯(lián)網(wǎng)競賽三等獎。
2015年在雪城大學(xué)獲得碩士學(xué)位。這次介紹的研究,是他2019年在滴滴實習(xí)時的成果之一,實習(xí)導(dǎo)師是滴滴智能控制首席科學(xué)家唐劍。
在滴滴實習(xí)之前,他也在網(wǎng)易、360實習(xí)過。
根據(jù)滴滴的報道,他也談到了自己的研究規(guī)劃:希望繼續(xù)在深度學(xué)習(xí)模型壓縮、設(shè)計上深入研究,把學(xué)習(xí)到的知識和研究成果應(yīng)用到現(xiàn)實場景。
目前,這個框架已經(jīng)在滴滴已經(jīng)得到了實際有效應(yīng)用。
聯(lián)系客服