博客專欄

EEPW首頁 > 博客 > 麻省理工最新研究 | 自動為目標任務(wù)和硬件定制高效CNN結(jié)構(gòu)

麻省理工最新研究 | 自動為目標任務(wù)和硬件定制高效CNN結(jié)構(gòu)

發(fā)布人:CV研究院 時間:2020-09-23 來源:工程師 發(fā)布文章

1600825554948809.jpg

導(dǎo) 讀

NAS受限于其過高的計算資源需求,仍無法在大規(guī)模任務(wù)上直接進行神經(jīng)網(wǎng)絡(luò)的學習。

今天分享的這篇文章主要解決NAS代理機制下無法搜索到全局最優(yōu)的問題,改進搜索策略,一定程度上解決資源消耗的問題。其主要是基于DARTs改的,那就先談?wù)凞ARTs的一些問題:

·  只搜索cell,然后不斷的堆疊起來,實際上只要網(wǎng)絡(luò)堆疊的夠深,性能并不會太差;

·  一些operation的結(jié)構(gòu)參數(shù)非常接近,比如兩個op的結(jié)構(gòu)參數(shù)分別是20.2%,20.1%,似乎選擇20.2%和20.1% 并沒有太大的差別;

·  一開始是在整個Net上進行訓(xùn)練,但是選取的時候只是選擇一個子網(wǎng)絡(luò),中間可能會出現(xiàn)一些問題。

作者提出了ProxylessNAS,第一個在沒有任何Proxy的情況下直接在ImageNet量級的大規(guī)模數(shù)據(jù)集上搜索大設(shè)計空間的的NAS算法,并首次專門為硬件定制CNN架構(gòu),作者還將模型壓縮(減枝、量化)的思想與NAS進行結(jié)合,把NAS的計算成本(GPU時間和內(nèi)存)降低到與常規(guī)訓(xùn)練相同的規(guī)模,同時保留了豐富的搜索空間,并將神經(jīng)網(wǎng)絡(luò)的硬件性能(延時,能耗)也直接納入到優(yōu)化目標中。

引言

目前一個普遍的做法是在一個小型的Proxy任務(wù)上進行網(wǎng)絡(luò)學習,然后再遷移到目標任務(wù)上。這樣的Proxy包括:1) 訓(xùn)練極少量輪數(shù);2)在較小的網(wǎng)絡(luò)下學習一個結(jié)構(gòu)單元,然后通過重復(fù)堆疊同樣的block構(gòu)建一個大的網(wǎng)絡(luò);3) 在小數(shù)據(jù)集(如:CIFAR)上進行搜索。然而,這些在 Proxy 上優(yōu)化的網(wǎng)絡(luò)結(jié)構(gòu)在目標任務(wù)上并不是最優(yōu)的。

作者最后提出的ProxylessNAS在CIFAR-10和ImageNet的實驗驗證了「直接搜索」和「為硬件定制」的有效性。在CIFAR-10上,作者新提出的模型僅用5.7M參數(shù)就達到了2.08%的測試誤差。對比之前的最優(yōu)模型AmoebaNet-B,ProxylessNAS僅用了六分之一的參數(shù)量就達到了更好的結(jié)果。在ImageNet上,ProxylessNAS比MobilenetV2高了3.1%的Top-1正確率,并且在GPU上比MobilenetV2快了20%。在同等的top-1準確率下(74.5%以上),ProxylessNAS的手機實測速度是當今業(yè)界標準MobileNetV2的1.8倍。在用ProxylessNAS來為不同硬件定制神經(jīng)網(wǎng)絡(luò)的同時,作者發(fā)現(xiàn)各個平臺上搜索到的神經(jīng)網(wǎng)絡(luò)在結(jié)構(gòu)上有很大不同。這些發(fā)現(xiàn)為之后設(shè)計高效CNN結(jié)構(gòu)提供新的思路。

相關(guān)背景

近期研究中,神經(jīng)結(jié)構(gòu)搜索(NAS)已經(jīng)在各種深度學習任務(wù)(如圖像識別)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計自動化方面取得了很大成功。然而,傳統(tǒng)NAS算法的計算量巨大,如NASNet需要10^4 GPU hours來運行。以DARTs為代表的Differentiable NAS雖減少了計算需求,可隨著搜索空間線性增長的內(nèi)存成了新的瓶頸。由于這些局限,之前的NAS都利用了Proxy任務(wù),例如僅訓(xùn)練少量Epoch,只學習幾個Block,在較小的數(shù)據(jù)集上搜索(如CIFAR)再遷移。這些Proxy任務(wù)上優(yōu)化的結(jié)構(gòu),并不一定在目標任務(wù)上是最佳的。同時為了實現(xiàn)可轉(zhuǎn)移性,這些方法往往僅搜索少數(shù)結(jié)構(gòu)Block,然后重復(fù)堆疊。這限制了塊的多樣性,并導(dǎo)致性能上的損失。依賴Proxy同時也意味著無法在搜索過程中直接權(quán)衡延遲等硬件指標。

因此,作者提出了一個簡單而有效的方案來解決上述限制,稱為ProxylessNAS,其直接在目標任務(wù)和硬件上學習結(jié)構(gòu)而不依賴于Proxy。作者還移除了先前NAS工作中的重復(fù)塊的限制:所有stage都可以自由的選擇最適合的模塊,并允許學習和指定所有塊。為此,將體系結(jié)構(gòu)搜索的計算成本(GPU時間和內(nèi)存)降低到相同水平的常規(guī)訓(xùn)練,為了直接在目標硬件上學習專用網(wǎng)絡(luò)結(jié)構(gòu),在搜索時我們也考慮了硬件指標。

1600825610969288.jpg

在CIFAR-10和ImageNet上的實驗中,從直接性和專業(yè)性的角度出發(fā),提出的新方法可以獲得較強的實證結(jié)果。在CIFAR-10上,新模型僅需5.7M參數(shù)即可達到2.08%的測試誤差。在ImageNet上,新模型比MobileNetV 2提高了3.1%,獲得了75.1%的top-1精度,同時速度為1.2倍。主要的貢獻可歸納如下:

·  ProxylessNAS是第一個在沒有任何代理的情況下直接學習大規(guī)模數(shù)據(jù)集上的CNN結(jié)構(gòu)的NAS算法,同時仍然允許大的候選集并消除重復(fù)塊的限制。它有效地擴大了搜索空間,實現(xiàn)了更好的性能;

·  為NAS提供了一種新的路徑級剪裁視角,顯示了NAS與模型壓縮之間的緊密聯(lián)系。通過使用path-level binarization將內(nèi)存消耗節(jié)省一個數(shù)量級;

·  提出了一種新的基于梯度的方法(作為一個正則函數(shù)),來處理硬件目標(如:延遲)。針對不同的硬件平臺:CPU/GPU/FPGA/TPU/NPU,ProxylessNAS實現(xiàn)了針對目標硬件CNN結(jié)構(gòu)定制。據(jù)所知,這是第一個來研究不同硬件結(jié)構(gòu)下的專用神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的文章;

·  廣泛的實驗證明了Directness和Specialization的優(yōu)勢。它在不同硬件平臺延遲限制下,在CIFAR-10和ImageNet上實現(xiàn)了最好的性能。作者還分析了專用于不同硬件平臺的高效CNN模型的偏好,指出不同硬件平臺需要不同的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)。

技術(shù)方法

Over-parameterized網(wǎng)絡(luò)的構(gòu)建

首先描述了具有所有候選路徑的over-parameterized網(wǎng)絡(luò)的構(gòu)造,然后介紹了如何利用二值化的體系結(jié)構(gòu)參數(shù)將訓(xùn)練over-parameterized網(wǎng)絡(luò)的內(nèi)存消耗降低到與常規(guī)訓(xùn)練相同的水平。提出了一種基于梯度的二值化結(jié)構(gòu)參數(shù)訓(xùn)練算法。最后,提出了兩種處理不可微目標(如延遲)的技術(shù),用于在目標硬件上專門化神經(jīng)網(wǎng)絡(luò)。

1600825667443835.jpg

學習BINARIZED PATH

為了減少內(nèi)存占用,在訓(xùn)練over-parameterized網(wǎng)絡(luò)時,只保留一條路徑。與Courbariaux等人不同。對單個權(quán)重進行二值化后,對整個路徑進行二值化。引入n個實值結(jié)構(gòu)參數(shù){αI},然后將實值路徑權(quán)重轉(zhuǎn)換為二進制門:

1600825702281671.jpg

然而直接去訓(xùn)練這樣一個over-parameterized網(wǎng)絡(luò)是有問題的,因為其GPU顯存會隨著候選操作的數(shù)量線性增長。這里,作者就利用到路徑級二值化的思想來解決這個問題:即將路徑上的架構(gòu)參數(shù)二值化,并使得在訓(xùn)練過程中只有一個路徑處于激活狀態(tài)。這樣一來GPU顯存的需求就降到和正常訓(xùn)練一個水平。在訓(xùn)練這些二值化的架構(gòu)參數(shù)的時候,作者采用類似BinaryConnect的思想,使用對應(yīng)的Binary Gate的梯度來更新架構(gòu)參數(shù):

1600825721387729.jpg

為了解決這個問題,考慮將從n個候選對象中選擇一條路徑的任務(wù)分解為多個二進制選擇任務(wù)。直覺是,如果一條道路是在某一特定位置上的最佳選擇,那么與任何其他路徑相比,它應(yīng)該是更好的選擇。

HANDLING NON-DIFFERENTIABLE HARDWARE METRICS

除了準確率之外,在設(shè)計高效神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的時侯,延遲是另一個非常重要的目標。與可以使用損失函數(shù)的梯度優(yōu)化的準確率不同,延遲這一指標是不可微的。在本節(jié)中,我們提出了兩種算法來處理這種不可微分的目標。

1600825745779417.jpg

通過將縮放因子λ2(>0)乘以控制精度和延遲之間的權(quán)衡,將網(wǎng)絡(luò)的預(yù)期延遲合并到正常的損失函數(shù)中。最后的損失函數(shù)如上圖所示(右)。

對于二進制參數(shù),我們有以下更新:

1600825768482626.jpg

實驗結(jié)果

1600825790632754.jpg

在CIFAR-10和ImageNet上進行了實驗。不同于之前的NAS工作,作者直接在目標數(shù)據(jù)集上進行神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)學習,為目標硬件進行優(yōu)化,同時允許每一個block自由地選擇操作。

在ImageNet上的結(jié)果

1600825821879430.jpg

在移動端,與MobilenetV2相比,提出的ProxylessNAS在維持同等的延遲的前提下,TOP-1準確率提升了2.6%。此外,在各個不同的延遲設(shè)定下,新模型大幅優(yōu)于MobilenetV2:為了達到74.6%的精度,MobilenetV2需要143ms的推理時間,而新模型僅需要78ms(1.83x)。

與MnasNet相比,新模型在提升0.6%Top-1的同時保持略低的推理時間。值得一提的是,新模型所消耗的搜索資源要比Mnas少得多(1/200)。

1600825845496851.jpg

下圖展示了在三個硬件平臺上搜索到的CNN模型的詳細結(jié)構(gòu):GPU/CPU/Mobile。

我們注意到,當針對不同平臺時,網(wǎng)絡(luò)結(jié)構(gòu)呈現(xiàn)出不同的偏好:

1)GPU模型短而寬,尤其是在feature map較大時;

2)GPU模型更喜歡大MBConv操作(如:7x7 MBConv6),而CPU模型則傾向于小操作。這是因為GPU比CPU有更高的并行度,因此它可以更好地利用大MBConv。

另一個有趣的觀察是,當特征圖被下采樣時,所有的網(wǎng)絡(luò)結(jié)構(gòu)都傾向于選擇一個更大的MBConv。這可能是因為MBConv操作有利于網(wǎng)絡(luò)在下采樣時保留更多信息。值得注意的是,這是之前強制block之間共享結(jié)構(gòu)的NAS方法無法發(fā)現(xiàn)的。

1600825868762539.jpg

END

論文: https://arxiv.org/pdf/1812.00332.pdf

代碼:https://github.com/MIT-HAN-LAB/ProxylessNAS

*博客內(nèi)容為網(wǎng)友個人發(fā)布,僅代表博主個人觀點,如有侵權(quán)請聯(lián)系工作人員刪除。



關(guān)鍵詞:

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉