好快好強(qiáng) | GPU端精度最高、速度最快的Backbone模型擔(dān)當(dāng)GENet
【Happy導(dǎo)語(yǔ)】該文是阿里巴巴提出了一種GPU端高效&高精度網(wǎng)路架構(gòu)設(shè)計(jì)新方案。不同于之前的MobileNet、EfficientNet以及RegNet等網(wǎng)絡(luò)采用相同的模塊構(gòu)建整個(gè)網(wǎng)絡(luò),該文對(duì)不同階段的模塊進(jìn)行分析并得出這樣的結(jié)論:在網(wǎng)絡(luò)的low-level階段采用BasicBlock,而在high-level階段采用Bottleneck/InvertedResidualBlock可以最大化的利用GPU并得到更快的推理速度與模型精度(精度高達(dá)81.3%且速度超快)。Happy建議對(duì)網(wǎng)絡(luò)架構(gòu)有興趣的朋友可以仔細(xì)看一下原文,文末附論文下載鏈接。
Abstract
在工業(yè)界大多算法均是基于GPU進(jìn)行推理,這就要求AI算法不僅應(yīng)當(dāng)具有高識(shí)別率,同時(shí)還要具有更低的推理延遲。盡管已有諸多研究嘗試優(yōu)化深度模型的架構(gòu)以進(jìn)行更有效的推理,然而它們并未充分利用現(xiàn)代GPU的架構(gòu)進(jìn)行快速推理,從而導(dǎo)致了次優(yōu)性能。
為解決上述問(wèn)題,作者在大量實(shí)驗(yàn)研究的基礎(chǔ)上提出了一種GPU端高效網(wǎng)絡(luò)設(shè)計(jì)的通用范式,該設(shè)計(jì)范式促使作者僅需要采用簡(jiǎn)單而輕量的NAS方法即可得到高效且高精度的GPU端網(wǎng)絡(luò)架構(gòu)?;谒O(shè)計(jì)的網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)范式,作者提出了一類GPU端高效的網(wǎng)絡(luò),稱之為GENet。
作者在多個(gè)GPU平臺(tái)與推理引擎下對(duì)所得到的網(wǎng)絡(luò)進(jìn)行了充分的評(píng)估,所提方法不僅在ImageNet上取得了不低于81.3%的top1精度,而且在GPU端比EfficientNet快6.4倍。與此同時(shí),所提方法同樣優(yōu)于其他效率高于EfficientNet的SOTA方法。
該文的主要貢獻(xiàn)有如下:
-
提出一種新穎的GPU端高效網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)空間; -
基于所設(shè)計(jì)網(wǎng)絡(luò)架構(gòu)范式,提出一種輕量而高效LLR-NAS(Local-Linear Regression NAS)方法進(jìn)行GPU端高效網(wǎng)絡(luò)架構(gòu)搜索; -
所得到的GENet不僅具有媲美EfficientNet的高精度,而且具有更快的推理速度。
Network Design Space
在這部分內(nèi)容中,我們將主要介紹一下如何一步步得到所提網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)空間。首先介紹一下主流網(wǎng)絡(luò)中常用的三種基本模塊,然后對(duì)其推理速度進(jìn)行了分析,最后基于實(shí)驗(yàn)分析得出網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)空間范式。
Basic Block and MasterNet Backbone
上圖a給出了目前網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)中的主流架構(gòu)(ResNet、ResNeSt、EfficientNet、RegNet、MobileNet等等均采用了類似的架構(gòu)體系)形態(tài),這也是該文的架構(gòu)形態(tài)。
作者將該架構(gòu)形態(tài)稱之為MasterNet,它的每個(gè)階段稱之為Super-Block,每個(gè)Super-Block由同類型的多個(gè)BasicBlock構(gòu)成,每個(gè)BasicBlock由深度、寬度以及stride等參數(shù)進(jìn)行描述。一般而言,Super-Block的第一個(gè)模塊采用stride=2進(jìn)行特征下采樣,后續(xù)模塊采用stride=1的模式。而MasterNet的第一層是一個(gè)stride=2的stem模塊;MasterNet的最后為GAPHead模塊(它包含一個(gè)全局均值池化與一個(gè)全連接層,用于分類)?,F(xiàn)有研究已經(jīng)證實(shí):上述網(wǎng)絡(luò)架構(gòu)形態(tài)足以得到GPU端的高性能低延遲的網(wǎng)絡(luò)架構(gòu)。而不同網(wǎng)絡(luò)架構(gòu)的關(guān)鍵區(qū)別在于BasicBlock的差異。而這也是本文的關(guān)注重點(diǎn)。
在BasicBlock方面,作者考慮了三種類型的模塊(見(jiàn)上圖b),分別如下:
-
XX-Block(ResNet18、ResNet34中的基本模塊); -
BL-Block(ResNet50、ResNet101中的基本模塊); -
DW-Block(MobileNetv2的基本模塊)。
上圖c則給出了上述模塊嵌入到殘差模塊中的示意圖以及stride=2時(shí)的模塊示意圖。
GPU Inference Latency
作者對(duì)上述三個(gè)模塊在GPU端的推理速度進(jìn)行可控實(shí)驗(yàn)分析,所有耗時(shí)實(shí)驗(yàn)均重復(fù)30次,剔除10最低與最高后進(jìn)行平均統(tǒng)計(jì)。作者在NVIDIA V100硬件平臺(tái)下采用FP16精度和 分辨率進(jìn)行實(shí)驗(yàn)。不同角度的實(shí)驗(yàn)分析如下。
-
BatchSize。下圖a給出l不同BatchSize下ResNet50、ResNet152、MobileNetV2、EfficientNet-B0的推理延遲。從圖中可以看到:推理延遲并非常數(shù),會(huì)隨BatchSize而變化,這是因?yàn)榇蟮腂atchSize允許GPU進(jìn)行并行計(jì)算從而更高效。因此,在進(jìn)行推理延遲對(duì)比時(shí)必須制定BatchSize,在該文中作者默認(rèn)設(shè)置BatchSize=64。事實(shí)上,這種推理耗時(shí)更符合實(shí)際需求,我們一般評(píng)價(jià)一個(gè)模型的速度看到是其吞吐量(一塊GPU倍充分利用時(shí)每秒鐘能處理多少?gòu)垐D片),而非一個(gè)樣例的一次推理。
-
FLOPs & Model Size。FLOPs是一種“流行”的用來(lái)評(píng)價(jià)模型效率的準(zhǔn)則。但是“FLOPs低不等于效率高”,上圖也說(shuō)明了這一點(diǎn)。盡管EfficientNet號(hào)稱具有非常低的FLOPs,但它的推理速度反而慢。同時(shí),推理速度也不與模型參數(shù)量存在線性關(guān)系。這一點(diǎn)其實(shí)在ShuffleNetV2、RegNet、OFANet等方法中均有闡述,感興趣的可以去看一下相關(guān)論文。
-
BasicBlocks。這里將對(duì)前面所提到的三種模塊進(jìn)行分析研究。在實(shí)驗(yàn)設(shè)計(jì)中,基于XX-Block的網(wǎng)絡(luò)包含5個(gè)XX-Block,而B(niǎo)L-Block與DW-Block的網(wǎng)絡(luò)則包含10個(gè)模塊。推理速度見(jiàn)下圖,從圖中可以看到:(1)DW-Block的推理速度要快于BB-Block;(2)當(dāng)r=1時(shí),BL-Block的推理速度要比XX-Block更慢(這個(gè)很正常,兩個(gè)r=1的BL-Block明顯比XX-Block大)。僅僅從上圖a和b出發(fā),可能采用BL-Block或者DW-Block更為合理(這也是ResNet與EfficientNet的設(shè)計(jì)范式)。
-
Model Capacity。作者認(rèn)為除了上述分析外,還有另外一個(gè)維度需要考慮,那就是Model Capacity,它將影響模型的擬合能力。關(guān)于Model Capacity的一個(gè)簡(jiǎn)單度量準(zhǔn)則是模型參數(shù)量。實(shí)驗(yàn)分析見(jiàn)上圖c和d,從中可以看到:在相同Model Capacity下,XX-Block事實(shí)上非常高效。從某種角度來(lái)講,BL-Block與DW-Block是XX-Block的低秩近似。但BL-Block與DW-Block接近滿秩近似時(shí),相應(yīng)模塊實(shí)際上是低效的。也就是說(shuō):BL/DW-Block是否比XX-Block更高效依賴于網(wǎng)絡(luò)的特定層是否傾向于低秩架構(gòu)。
Intrinsic Rank of Convolutional Layers
受啟發(fā)于上述分析,作者嘗試對(duì)不同階段的卷積進(jìn)行分析。主要針對(duì)ResNet18和ResNet34兩個(gè)網(wǎng)絡(luò)進(jìn)行了分析,因ResNet50等更深網(wǎng)路采用的BL-Block故而被排出在外。第三個(gè)網(wǎng)絡(luò)是作者手動(dòng)設(shè)計(jì)的網(wǎng)絡(luò),稱之為ProfilingNet132.三個(gè)網(wǎng)絡(luò)均在ImageNet數(shù)據(jù)集上訓(xùn)練360epoch。
下圖給出了不同階段最后一個(gè)卷積核的奇異值分布,注:奇異值進(jìn)行了歸一化處理。從圖中可以看出:high-level的奇異值衰減的更快,這也就意味著:應(yīng)當(dāng)在網(wǎng)絡(luò)的low-level階段采用XX-Block,而在網(wǎng)絡(luò)的high-level階段采用BL/DW-Block以最大化GPU推理效率。
GPU-Efficient Networks
前述實(shí)驗(yàn)給出了本文的核心:GPU端高效網(wǎng)絡(luò)設(shè)計(jì)范式。作者基于該先驗(yàn)信息設(shè)計(jì)GPU端高效網(wǎng)絡(luò)。作者首先采用手動(dòng)方式設(shè)計(jì)MasterNet,然后將其作為L(zhǎng)LR-NAS的初始網(wǎng)絡(luò)并進(jìn)行優(yōu)化。
Design MasterNet
為得到一個(gè)好的初始化架構(gòu),作者設(shè)計(jì)了20個(gè)網(wǎng)絡(luò)。所有網(wǎng)絡(luò)均具有0.34ms推理延遲(注:BatchSize=64,這也是ResNet50、EfficientNet的推理延遲)。作者在ImageNet上分別對(duì)這20個(gè)網(wǎng)絡(luò)訓(xùn)練120epoch。對(duì)于BL-Block,作者固定 ;對(duì)于DW-Block,作者固定 。實(shí)驗(yàn)結(jié)果見(jiàn)下表,注:這里僅提供了4個(gè)最佳。
注:上表第一列表示網(wǎng)絡(luò)ID,第二列表示模塊類型(C表示常規(guī)卷、X表示XX-Block,B表示BL-Block,D表示DW-Block),第三列表示不同階段的模塊數(shù),第四列表示不同階段的通道數(shù),第五列表示不同階段的stride信息,最后一列表示模型的精度。表中結(jié)果驗(yàn)證了前述分析結(jié)論,最佳的模型均為low-level階段采用XX-Block,在high-level采用BL/DW-Block。
作者選用Net1作為初始MasterNet,需要注意的是MasterNet的參數(shù)配置對(duì)應(yīng)并不大,因?yàn)楹竺孀髡邔⒉捎肗AS進(jìn)行最終模型的搜索。當(dāng)然Net2與Net3也是MasterNet的不錯(cuò)選擇。
Local Linear Regression NAS
作者提出采用NAS方式搜索MasterNet的結(jié)構(gòu),所用的NAS稱之為L(zhǎng)LR-NAS。假設(shè)MasterNet包含M的Super-Block ,每個(gè)Super-Block 可以參數(shù)化為 ( 分別表示深度、通道數(shù)以及模塊類型),除了模塊類型外,作者將不同核尺寸和 參數(shù)的模塊視作不同的模塊類型。
LLR-NAS的流程如下:
-
Distillation:對(duì)于 ,采用隨機(jī)模塊 進(jìn)行初始化,微調(diào)直至收斂并得到對(duì)應(yīng)網(wǎng)絡(luò)的驗(yàn)證精度 。重復(fù)該步驟直到每個(gè)類型的 包含N個(gè)微調(diào)精度 。 -
Regression:假設(shè) 表示MasterNet的精度,采用最小二乘進(jìn)行回歸估計(jì)偽梯度 ,。基于該偽梯度,我們就可以預(yù)測(cè)網(wǎng)絡(luò)結(jié)構(gòu)在不同參數(shù) 下的精度。 -
Selection:隨機(jī)生成大量結(jié)構(gòu) 并采用上述偽梯度計(jì)算其精度,最后選擇具有最佳推理速度的模型。
與此同時(shí),作者在不同分辨率輸入下采用上述偽梯度進(jìn)行最佳網(wǎng)絡(luò)架構(gòu)搜索,所選擇的架構(gòu)在對(duì)應(yīng)分辨率下進(jìn)行訓(xùn)練,最終選擇訓(xùn)練后具有最佳精度的模型作為對(duì)應(yīng)分辨率下的最優(yōu)模型。注:作者分別設(shè)置延遲耗時(shí)為0.34/0.2/0.1三種約束得到了GENet-Large/GENet-normal/GENet-light。
Experiment
在該部分內(nèi)容中,作者對(duì)比了ResNet、EfficientNet、MnasNet、MobileNetV2、DNANet、DFNet、OFANet以及RegNet等網(wǎng)絡(luò)架構(gòu)。
在ImageNet數(shù)據(jù)集上對(duì)比了模型精度,在LLR-NAS階段,隨機(jī)從訓(xùn)練集中采樣50000樣本作為驗(yàn)證集。每個(gè)SuperBlock以0.01學(xué)習(xí)率,BatchSize=256微調(diào)30epoch,卷積核尺寸可調(diào)空間 ,輸入分辨率可調(diào)空間 ,參數(shù)r的可調(diào)空間分別為 (對(duì)應(yīng)BL-Block)和 (對(duì)應(yīng)DW-Block),LLR-NAS階段在24V100GPU上訓(xùn)練60小時(shí)。而最終的模型訓(xùn)練480epoch,同時(shí)采用了標(biāo)簽平滑、mixup、random-erase、AutoAugment等訓(xùn)練技巧。
上表給出了GENet在不同約束下的網(wǎng)絡(luò)架構(gòu)配置信息,可以看到其中的DW-Block搜索的參數(shù) ,這與EfficientNet中的 完全不同。對(duì)比GENet的三種不同配置,可以看到:GENet-large網(wǎng)絡(luò)提升high-level階段的深度而降低了low-level階段的深度。最后兩行還給出了不同配置模型的FLOPs與分辨率輸入。
為評(píng)估所得到的網(wǎng)絡(luò)在GPU端的推理速度,作者考慮了三種配置:(1) NVIDIA V100-FP16(大多論文中常用配置);(2) NVIDIA T4-FP16+TensorRT(推理端評(píng)測(cè));(3) NVIDIA T4-INT8+TensorRT(推理端評(píng)測(cè),采用TensorRT內(nèi)置量化工具進(jìn)行INT8量化)。不同模型的精度與耗時(shí)見(jiàn)上圖,可以看到:GENet以明顯優(yōu)勢(shì)優(yōu)于其他網(wǎng)絡(luò)。在相同推理速度下,GENet-large以5.0%的指標(biāo)優(yōu)于EfficientNet-B0,達(dá)到了81.3%的精度且比EfficientNet-B3更快。盡管GENet是針對(duì)V100而優(yōu)化得到的,但它對(duì)于T4GPU同樣高效,這側(cè)面表明了GENet跨GPU平臺(tái)的遷移性能。
上表給出了不同網(wǎng)絡(luò)在相似精度下的推理延遲對(duì)比,可以看到:(1) 更高精度時(shí),GENet的優(yōu)勢(shì)更明顯。(2) 除了EfficientNet-B3與GENet-large外,其他網(wǎng)絡(luò)均無(wú)法達(dá)到超過(guò)81%的指標(biāo)。(3) 在T4+TensorRT+INT8配置(工業(yè)界常見(jiàn)配置)下,GENet-large以6.4倍的速度快于EfficientNet-B3,GENet-normal以6.8倍速度快于EfficientNet-B2,以4.2倍速度u快于OFANet。不同硬件下的精度與速度對(duì)比見(jiàn)下面三個(gè)圖。
Conclusion
阿里巴巴的研究員提出了一類針對(duì)GPU的高效網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)空間,結(jié)合該設(shè)計(jì)空間于半自動(dòng)NAS技術(shù)得到了GPU端高效網(wǎng)絡(luò)GENet。GENet傾向于在low-level階段使用全卷積,而在high-level階段使用深度分離卷積或者Bottleneck結(jié)構(gòu)。
最后作者通過(guò)實(shí)驗(yàn)證實(shí)了所提網(wǎng)絡(luò)架構(gòu)設(shè)計(jì)空間的優(yōu)異性能,在具有高精度的同時(shí)還具有高推理速度,你說(shuō)氣人不人。
