效率新秀 | 詳細(xì)解讀:如何讓EfficientNet更加高效、速度更快


1簡介
近年來,許多研究致力于提高圖像分類訓(xùn)練和推理的效率。這種研究通常集中于提高理論效率,通常以每個(gè)FLOP的ImageNet驗(yàn)證精度來衡量。然而,事實(shí)證明,這些理論上的改進(jìn)在實(shí)踐中很難實(shí)現(xiàn),特別是在高性能訓(xùn)練加速器上。
在這項(xiàng)工作中,作者關(guān)注的是在一個(gè)新的加速器類Graphcore IPU上提高最先進(jìn)的EfficientNet模型的實(shí)際效率。本文主要通過以下方式擴(kuò)展這類模型:
將Depthwise CNN推廣為Group CNN; 添加proxy-normalized激活,以使batch normalization性能與batch-independent statistics相匹配; 通過降低訓(xùn)練分辨率和低成本的微調(diào)來減少計(jì)算量。

作者發(fā)現(xiàn)這3種方法都提高了訓(xùn)練和推理的實(shí)際效率。
2研究背景
2.1 Efficient CNNs分析
在CNN的發(fā)展過程中,實(shí)際訓(xùn)練效率的提高是創(chuàng)新的重要力量。比如說,AlexNet的成功很大一部分因素便得益于GPU加速,ResNet的成功不僅可以歸因于其良好的性能,而且其在GPU上的高吞吐量也相對比較高。
最近,在理論效率方面也取得了重大改進(jìn)。最引人注目的創(chuàng)新是在空間操作中引入Group卷積和Depthwise卷積。ResNet-50單獨(dú)引入Group卷積可以提高理論效率。類似地,通過將Group規(guī)模減少到1,即利用Depthwise卷積,相對于原始的CNN模型也實(shí)現(xiàn)了理論效率的提高。特別是,該方法為實(shí)現(xiàn)基于“mobile”級別的落地應(yīng)用提供了可能。
通過使用NAS直接減少FLOPs進(jìn)一步提高了這些理論上的效率增益。這帶來了整個(gè)模型尺度范圍內(nèi)的效率提高,從mobile-sized的模型如MobileNetV3和MNasNet 到大型模型如NASNet和AmoebaNet。
值得注意的是,在ImageNet模型的最高精度前100名的所有NAS模型都使用了某種形式的Group卷積或Depthwise卷積,進(jìn)一步突出了這些操作相對于CNN操作的優(yōu)勢,在高效的MNasNet基礎(chǔ)上,EfficientNet進(jìn)一步改進(jìn)了訓(xùn)練方法并擴(kuò)展到更大的模型,以在FLOP范圍內(nèi)實(shí)現(xiàn)SOTA性能。
雖然低功耗cpu的高效模型通常能實(shí)現(xiàn)實(shí)際改進(jìn),但這些模型通常難以將理論收益轉(zhuǎn)化為高性能硬件上更高的訓(xùn)練吞吐量。例如,雖然EfficientNets在理論訓(xùn)練效率方面遠(yuǎn)遠(yuǎn)優(yōu)于ResNets,但當(dāng)考慮到GPU上的實(shí)際訓(xùn)練效率時(shí)經(jīng)常被發(fā)現(xiàn)表現(xiàn)不佳。最近的一些工作也已經(jīng)開始使用NAS來優(yōu)化GPU的實(shí)際效率。
2.2 硬件角度考慮與分析
在研究模型的實(shí)際效率時(shí),了解它所運(yùn)行的硬件的特征是很重要的。關(guān)于這個(gè)問題的討論通常主要集中在峰值計(jì)算速率上,以每秒浮點(diǎn)運(yùn)算(FLOPS)衡量,這是計(jì)算操作的理論最大速率。雖然峰值率是需要考慮的一個(gè)重要因素,但了解實(shí)現(xiàn)峰值率所需的假設(shè)也同樣重要,例如,計(jì)算的結(jié)構(gòu)和數(shù)據(jù)的可用性。
計(jì)算結(jié)構(gòu)很重要,因?yàn)楝F(xiàn)代硬件通常使用向量指令,允許用一條指令計(jì)算給定長度的點(diǎn)積。然而,如果計(jì)算的體系結(jié)構(gòu)不能使這些向量指令被填滿,那么FLOPs就可能被浪費(fèi)掉。此外,如果數(shù)據(jù)不能立即在計(jì)算引擎上獲得,那么將需要循環(huán)來移動(dòng)它。這種操作將高度依賴于內(nèi)存的帶寬或者位寬。
對內(nèi)存帶寬的依賴依賴于模型,可以通過計(jì)算與數(shù)據(jù)傳輸?shù)谋嚷蕘肀碚?,即算術(shù)arithmetic intensity——在這種情況下,低arithmetic intensity強(qiáng)度的操作更依賴于內(nèi)存帶寬。對于一個(gè)簡單的Group卷積,arithmetic intensity強(qiáng)度隨著Group大小、Kernel大小、field大小和Batch大小單調(diào)地增加。值得注意的是,這意味著Group卷積和Depthwise卷積在Group較小時(shí)的效率更可能受到可用內(nèi)存帶寬的限制。
在這項(xiàng)工作中,作者使用了一種新的硬件加速器Graphcore IPU。這種加速器與通常用于神經(jīng)網(wǎng)絡(luò)訓(xùn)練的GPU有很大的區(qū)別。IPU計(jì)算在芯片上分布在1472個(gè)核心中,盡管它的指令仍然是向量化的,但要充分利用計(jì)算引擎,只需要16項(xiàng)的點(diǎn)積即可。這有助于減少對計(jì)算結(jié)構(gòu)的依賴。此外,IPU擁有超過900MB的高帶寬片上內(nèi)存,遠(yuǎn)遠(yuǎn)超過其他硬件。這大大降低了低arithmetic intensity強(qiáng)度操作的代價(jià)。
為了最大化IPU上的性能,保持盡可能多的工作內(nèi)存(例如芯片上的激活狀態(tài))變得非常重要。這自然促進(jìn)了更小批次的使用、內(nèi)存節(jié)約優(yōu)化和分布式處理的創(chuàng)新形式。同時(shí),它確實(shí)需要重新考慮使用BN,因?yàn)樵谝曈X模型中,最常見的歸一化方法它很依賴于大的Batchsize。
3本文方法
3.1 改用Group卷積
NAS方法傾向于將它們的spatial卷積分組,通常分組大小為G=1(Depthwise卷積)。而Depthwise卷積具有很低的FLOP和參數(shù),使用G>1作為一個(gè)更大的Group將更有效地利用現(xiàn)代硬件加速器:
(i) 增加arithmetic intensity強(qiáng)度; (ii) 增加點(diǎn)積的長度(用于卷積),允許使用更大的向量指令。
作者的目的是研究在EfficientNet模型中增加spatial卷積的Group大小所涉及的權(quán)衡問題。單單增加G就會(huì)增加參數(shù)量和FLOPs。因此,為了保持相似的模型復(fù)雜度,作者相應(yīng)地降低了擴(kuò)展比(擴(kuò)展比定義為輸入到first pointwise CNN和spatial CNN之間的通道比)。這類似于ResNeXt的Flop等效擴(kuò)展。
因此,對于相同的FLOP具有更大G的網(wǎng)絡(luò)將更窄,更窄的網(wǎng)絡(luò)模型將通過減少存儲(chǔ)激活狀態(tài)的大小和使用更大的BatchSize而獲得計(jì)算優(yōu)勢。請注意,雖然這種補(bǔ)償?shù)哪康氖潜3挚侳LOPs和參數(shù)量,但為簡單起見,作者只在全局級別更改擴(kuò)展比率。因此,并不需要保持與深度完全相同的參數(shù)和FLOPs分布。
與EfficientNet一樣,其他NAS派生的架構(gòu)通常只使用depthwise卷積,這表明depthwise卷積在驗(yàn)證準(zhǔn)確性方面是最優(yōu)的。在ResNeXts中,在保持總FLOPs的同時(shí)增加G會(huì)導(dǎo)致驗(yàn)證準(zhǔn)確性下降。這也表明與類似G>1的網(wǎng)絡(luò)對比G=1的vanilla EfficientNet將實(shí)現(xiàn)更高的準(zhǔn)確度。然而,作者希望改進(jìn)的網(wǎng)絡(luò)提供更好的性能和訓(xùn)練時(shí)間之間的權(quán)衡。因此對EfficientNet B0和B2的Group規(guī)模在G=1和G=64之間進(jìn)行了測試。
3.2 Batch-Independent Normalization
BN的問題在哪?
我們都知道BN通常應(yīng)用于沒有歸一化的pre-activations X進(jìn)而產(chǎn)生歸一化pre-activations Y,然后再進(jìn)行仿射變換和非線性,最終產(chǎn)生post-activations Z。形式上,每個(gè)通道c:

式中BN的歸一化確保了Y被規(guī)范化,這意味著每個(gè)通道c的均值和單位方差都為零,因此BN對于將模型擴(kuò)展到大型和深度模型是成為了可能:
通過確保非線性在每個(gè)通道中“sees”接近歸一化的數(shù)據(jù)分布,可以有效地形成非線性的分布。因此,額外的層可以增加表達(dá)能力,網(wǎng)絡(luò)可以有效地利用其整個(gè)深度。這與會(huì)“see”一個(gè)“collapsed”的數(shù)據(jù)分布的情況相反,這樣它會(huì)在一階上很好地近似于一個(gè)關(guān)于這個(gè)分布的線性函數(shù);
通過保證不同通道的方差接近相等,網(wǎng)絡(luò)可以有效地利用其整個(gè)帶寬。這與一種情況相反,在這種情況下,一個(gè)單一的通道會(huì)任意支配其他渠通道,從而成為唯一的通道被后續(xù)層“seen”。
盡管這一基本原則取得了實(shí)際的成功應(yīng)用,但BN對小batchsize數(shù)據(jù)的依賴有時(shí)會(huì)產(chǎn)生問題。最值得注意的是,當(dāng)batchsize較小或數(shù)據(jù)集較大時(shí),來自小batchsize統(tǒng)計(jì)數(shù)據(jù)中噪聲的正則化可能會(huì)過大或不必要,從而導(dǎo)致性能下降。
突破點(diǎn)在哪?
為了解決這些問題,研究者們也提出了各種Batch-Independent相關(guān)的歸一化技術(shù):層歸一化(LN)、組歸一化(GN)、實(shí)例歸一化(IN)、權(quán)重歸一化(WN)、權(quán)重標(biāo)準(zhǔn)化(WS)、在線歸一化(ON)、濾波器響應(yīng)歸一化(FRN)、EvoNorm等。雖然這些技術(shù)在其他環(huán)境中很有用,但在本工作中,沒有一種技術(shù)能夠縮小與大 Batch BN的性能差距,重點(diǎn)關(guān)注在ImageNet上使用RMSProp訓(xùn)練的EfficientNets。
這也促使作者重新思考如何執(zhí)行獨(dú)立于batch的Norm,并在工作中提出Proxy Normalized Activations。在本研究中,作者提出了一個(gè)假設(shè),即除了提高對小batch的依賴外,與batch無關(guān)的歸一化還應(yīng)保持每個(gè)通道中歸一化預(yù)激活Y的BN原則。
這一假設(shè)的第1個(gè)理由是BN的歸納偏差。第2個(gè)理由是,在更實(shí)際的層面上,BN被用于架構(gòu)搜索,比如產(chǎn)生了EfficientNet模型系列的搜索。因此,堅(jiān)持相同的標(biāo)準(zhǔn)化原則可以避免重新執(zhí)行這些搜索。
為了保留BN原則,同時(shí)消除對Batchsize的依賴,作者擴(kuò)展的工作如下:
(i)將Eq.(1)的BN步驟替換為基于LN或GN的Batch無關(guān)的標(biāo)準(zhǔn)化步驟;
(ii)將式(2)的激活步驟替換為proxy-normalized activation步驟。
這一步通過將與同化,使歸一化,其中是一個(gè)高斯proxy變量,具有均值和方差,如果選擇LN作為Batch無關(guān)的歸一化,對于每個(gè)batch元素b和通道c,這表示為:

其中,,是X的batch元素b在空間和通道維度上的均值和標(biāo)準(zhǔn)差。
當(dāng)與LN結(jié)合時(shí),這種激活的proxy標(biāo)準(zhǔn)化(PN)迭代確保預(yù)激活Y保持接近于標(biāo)準(zhǔn)化(論文中有推導(dǎo))。
3.3 Image分辨率
引入全局平均池化允許CNN對任意分辨率的輸入進(jìn)行操作。雖然這已經(jīng)在圖像分割等任務(wù)中得到了探索,但在圖像分類中,其影響仍有待更加深入的挖掘。EfficientNet模型將圖像分辨率作為一個(gè)可調(diào)的超參數(shù),使用更大的圖像來訓(xùn)練更大的網(wǎng)絡(luò)。Hoffer等人同時(shí)對多個(gè)圖像尺寸的網(wǎng)絡(luò)進(jìn)行訓(xùn)練發(fā)現(xiàn):
i) 大分辨率可以加速訓(xùn)練以達(dá)到目標(biāo)精度 ii) 大分辨率可以提高相同訓(xùn)練的最終性能。
或許與目標(biāo)最接近的是,Howard建議從低分辨率圖像開始訓(xùn)練,在訓(xùn)練過程中逐步增加圖像的大小,以減少總的訓(xùn)練時(shí)間。
Touvron等人研究表明,少量的微調(diào)可以使網(wǎng)絡(luò)收斂的更好。微調(diào)步驟只需要對網(wǎng)絡(luò)的最后部分起作用,而且只需要幾個(gè)epoch就可以提高總體精度。因此,與其他訓(xùn)練相比,微調(diào)的計(jì)算成本幾乎可以忽略不計(jì)。
從這一研究中獲得了靈感,研究了在低分辨率圖像上訓(xùn)練的網(wǎng)絡(luò)的微調(diào),并從效率的角度將其推廣到更大的分辨率。在訓(xùn)練過程中使用較小的圖像可以使用更少的內(nèi)存更快地訓(xùn)練出一個(gè)給定的模型,或者在相同的時(shí)間內(nèi)訓(xùn)練一個(gè)較大的模型。為了測試這一想法,作者在固有的EfficientNet圖像大小以大約為原來像素?cái)?shù)的一半進(jìn)行訓(xùn)練,這里表示為半分辨率。結(jié)果與EfficientNet模型的FLOPs大致相當(dāng)。

然后,微調(diào)和測試的圖像尺寸范圍高達(dá)700x700。在選擇用于驗(yàn)證的精確分辨率時(shí),注意到性能可能會(huì)受到混疊效應(yīng)的影響。這種人工干擾是由于非對稱下采樣層的位置造成的,其中輸入的維度是奇數(shù),這取決于輸入分辨率在不同的深度上決定的。作者還發(fā)現(xiàn)在訓(xùn)練和測試之間保持這些降采樣層的位置一致是很重要的。這可以通過選擇測試分辨率來實(shí)現(xiàn),使,其中n是模型中的下采樣層數(shù)(對于EfficientNet, n=5)。
4實(shí)驗(yàn)
4.1 Group卷積的影響

通過上表可以看出雖然組大小為G=4的情況下在這些測試中獲得了最好的準(zhǔn)確性,但發(fā)現(xiàn)組大小為G=16的增加的計(jì)算效益在實(shí)踐中產(chǎn)生了比較好的權(quán)衡。
4.2 Proxy-Normalized Activations的影響


從表中可以看出,對于B0和B2,在G=16上直接比較2種方法時(shí),LN+PN得到的準(zhǔn)確率與BN得到的準(zhǔn)確率最匹配。
4.3 分辨率的影響


4.4 推理效率

5參考
[1].Making EfficientNet More Efficient
6推薦閱讀

最強(qiáng)Transformer | 太頂流!Scaling ViT將ImageNet Top-1 Acc刷到90.45%啦?。?!

讓檢測告別遮擋 | 詳細(xì)解讀NMS-Loss是如何解決目標(biāo)檢測中的遮擋問題?

即插即用 | 卷積與Self-Attention完美融合X-volution插入CV模型將帶來全任務(wù)的漲點(diǎn)(文末附論文)
本文論文原文獲取方式,掃描下方二維碼
回復(fù)【MEF】即可獲取論文
長按掃描下方二維碼添加小助手。
可以一起討論遇到的問題
聲明:轉(zhuǎn)載請說明出處
掃描下方二維碼關(guān)注【集智書童】公眾號,獲取更多實(shí)踐項(xiàng)目源碼和論文解讀,非常期待你我的相遇,讓我們以夢為馬,砥礪前行!

