999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

主流卷積神經(jīng)網(wǎng)絡(luò)的硬件設(shè)計(jì)與性能分析①

2020-03-23 06:04:08徐青青
關(guān)鍵詞:程序

徐青青, 安 虹, 武 錚, 金 旭

(中國科學(xué)技術(shù)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 合肥 230027)

1 概述

近些年來, 深度學(xué)習(xí)技術(shù)蓬勃發(fā)展, 廣泛應(yīng)用于各大領(lǐng)域并接連取得了突破性成就.卷積神經(jīng)網(wǎng)絡(luò)作為該領(lǐng)域中最具影響力的網(wǎng)絡(luò)結(jié)構(gòu)之一, 在計(jì)算機(jī)視覺領(lǐng)域中長期占據(jù)著主導(dǎo)地位, 相關(guān)技術(shù)趨向成熟.目前,卷積神經(jīng)網(wǎng)絡(luò)主要基于通用CPU 和GPU 進(jìn)行訓(xùn)練,而通用處理器在面對網(wǎng)絡(luò)訓(xùn)練的龐大計(jì)算需求時(shí), 表現(xiàn)出較低的能效比.而且, 隨著網(wǎng)絡(luò)結(jié)構(gòu)朝著更深更復(fù)雜的方向發(fā)展, 對硬件計(jì)算能力提出了越來越高的要求, 隨之出現(xiàn)了各種類型的專用處理器.為了對這類處理器進(jìn)行評估并指導(dǎo)其優(yōu)化設(shè)計(jì), 需要一套基準(zhǔn)測試程序作為指導(dǎo)標(biāo)準(zhǔn).

為此, 本文面向卷積神經(jīng)網(wǎng)絡(luò)提出了一套基準(zhǔn)測試程序.基準(zhǔn)測試程序的設(shè)計(jì)分為兩部分, 在為宏基準(zhǔn)測試程序選定好卷積神經(jīng)網(wǎng)絡(luò)后, 為了把握網(wǎng)絡(luò)的整體性能表現(xiàn), 本文從系統(tǒng)層面對網(wǎng)絡(luò)程序進(jìn)行評測.但是, 網(wǎng)絡(luò)結(jié)構(gòu)的復(fù)雜性使得難以對其進(jìn)行深入的微架構(gòu)性能分析和瓶頸定位, 這就需要對網(wǎng)絡(luò)中各個(gè)組成部分做進(jìn)一步的分析.考慮到卷積神經(jīng)網(wǎng)絡(luò)是由網(wǎng)絡(luò)層構(gòu)成的, 除了輸入層, 網(wǎng)絡(luò)訓(xùn)練過程中每個(gè)網(wǎng)絡(luò)層都是作用于相鄰層輸出的張量結(jié)果.將這些網(wǎng)絡(luò)層看做獨(dú)立的計(jì)算單元, 將其從網(wǎng)絡(luò)中抽取出來并為其提供輸入集, 使其成為完整的測試模塊, 構(gòu)建微基準(zhǔn)測試程序.由于不同的網(wǎng)絡(luò)層具有不同的程序特性, 包括計(jì)算特性和訪存特性等, 通過對這些程序獨(dú)立進(jìn)行分析, 明確各個(gè)網(wǎng)絡(luò)層的行為特征, 定位它們的性能瓶頸, 從而有針對性地進(jìn)行處理器的結(jié)構(gòu)設(shè)計(jì).

本文在給出基準(zhǔn)測試程序后, 在通用CPU 平臺上運(yùn)行基準(zhǔn)測試程序, 從系統(tǒng)和微架構(gòu)層面對測試程序進(jìn)行性能評測.通過分析性能數(shù)據(jù), 明確測試程序的行為特征和性能瓶頸, 進(jìn)而給出處理器的優(yōu)化建議.

2 相關(guān)工作

早期的神經(jīng)網(wǎng)絡(luò)基準(zhǔn)測試程序不具有討論價(jià)值,以BenchNN[1]為例, 它包含的是多層感知器等早期神經(jīng)網(wǎng)絡(luò).若用這樣過時(shí)的基準(zhǔn)測試程序?qū)μ幚砥鬟M(jìn)行評測, 不能準(zhǔn)確反映出先進(jìn)神經(jīng)網(wǎng)絡(luò)和應(yīng)用的行為特征, 不能對處理器的設(shè)計(jì)提供正確指導(dǎo).

DeepBench[2]是由百度開發(fā)的一款神經(jīng)網(wǎng)絡(luò)基準(zhǔn)測試程序, 旨在評測神經(jīng)網(wǎng)絡(luò)中最核心的網(wǎng)絡(luò)層和基礎(chǔ)操作的性能表現(xiàn), 因此它僅選取了卷積層、循環(huán)層和矩陣乘法作為測試程序.由于DeepBench 包含的網(wǎng)絡(luò)層有限, 不能全面反映出神經(jīng)網(wǎng)絡(luò)的行為特性.

Data Motifs[3]是面向大數(shù)據(jù)應(yīng)用和神經(jīng)網(wǎng)絡(luò)任務(wù)的基準(zhǔn)測試程序, 與神經(jīng)網(wǎng)絡(luò)相關(guān)的測試程序包括卷積層、池化層、激活層和矩陣乘法.與DeepBench 相比程序集更豐富, 但是仍缺乏全面性.

BenchIP[4]的測試程序較多, 包括11 個(gè)神經(jīng)網(wǎng)絡(luò)和10 個(gè)網(wǎng)絡(luò)層, 但是測試程序的選取有待改進(jìn).BenchIP 沒有選取主流的Inception 系列網(wǎng)絡(luò)等; 在選取人臉識別網(wǎng)絡(luò)時(shí), 未包含識別效果最佳的FaceNet[5];在選取網(wǎng)絡(luò)層時(shí), 沒有剔除不再流行的LRN 等層, 而未包含流行的Concat 和Eltwise 等層.

針對神經(jīng)網(wǎng)絡(luò)基準(zhǔn)測試程序的研究工作還有很多,但是它們在設(shè)計(jì)時(shí)存在諸多不足, 主要表現(xiàn)在: 大多數(shù)基準(zhǔn)測試程序僅從網(wǎng)絡(luò)或網(wǎng)絡(luò)層的單一角度進(jìn)行設(shè)計(jì);在選取目標(biāo)網(wǎng)絡(luò)或網(wǎng)絡(luò)層時(shí)缺乏全面性; 沒有充分考慮所選網(wǎng)絡(luò)或網(wǎng)絡(luò)層的流行性; 僅針對網(wǎng)絡(luò)的前向計(jì)算過程進(jìn)行設(shè)計(jì); 缺少從系統(tǒng)、微架構(gòu)層面對測試程序進(jìn)行全面的性能分析過程.本文基于卷積神經(jīng)網(wǎng)絡(luò),克服現(xiàn)有基準(zhǔn)測試程序存在的種種缺陷, 提出了一套基準(zhǔn)測試程序.

3 設(shè)計(jì)方法

3.1 卷積神經(jīng)網(wǎng)絡(luò)選取

為了使構(gòu)建出的基準(zhǔn)測試程序能夠有效指導(dǎo)硬件設(shè)計(jì), 本文充分調(diào)研了卷積神經(jīng)網(wǎng)絡(luò)的主流應(yīng)用領(lǐng)域和各領(lǐng)域的網(wǎng)絡(luò)情況, 為宏基準(zhǔn)測試程序的構(gòu)造奠定基礎(chǔ).基于流行性和代表性選取得到的卷積神經(jīng)網(wǎng)絡(luò)如下:

(1)手寫數(shù)字識別網(wǎng)絡(luò): LeNet[6]的簡單網(wǎng)絡(luò)結(jié)構(gòu)對手寫數(shù)字圖像的識別效果較好, 因此被選作手寫數(shù)字識別領(lǐng)域的代表網(wǎng)絡(luò), 采用的數(shù)據(jù)集為MNIST.

(2)圖像分類網(wǎng)絡(luò): 從2012 年開始, 圖像分類領(lǐng)域涌現(xiàn)出了眾多卷積神經(jīng)網(wǎng)絡(luò), 最初大多都基于ImageNet數(shù)據(jù)集進(jìn)行訓(xùn)練, 并在ILSVRC 競賽中表現(xiàn)出了優(yōu)異的分類效果, 包括2012 年的AlexNet[7], 2013 年的ZFNet[8], 2014 年的Vgg[9]和GoogLeNet[10], 2015 年的ResNet[11], 以及表現(xiàn)優(yōu)于ResNet 的DenseNet[12].在選取Inception 和ResNet 系列網(wǎng)絡(luò)時(shí), 本文將其多個(gè)版本均包含進(jìn)基準(zhǔn)測試程序, 這是因?yàn)椴煌姹镜木W(wǎng)絡(luò)復(fù)雜度差異較大且均被廣泛使用.在選取以上網(wǎng)絡(luò)作為圖像分類領(lǐng)域的代表網(wǎng)絡(luò)后, 統(tǒng)一為它們提供計(jì)算機(jī)視覺標(biāo)準(zhǔn)數(shù)據(jù)集ImageNet.

(3)輕量型分類網(wǎng)絡(luò): 卷積神經(jīng)網(wǎng)絡(luò)大多關(guān)注訓(xùn)練精度, 在精度要求不高的情況下, 小規(guī)模網(wǎng)絡(luò)模型通常具有訓(xùn)練速度快、帶寬要求低等優(yōu)點(diǎn), 且能夠很好地部署到FPGA 等硬件上, 因此, 輕量型分類網(wǎng)絡(luò)得以提出, 著名的有SqueezeNet[13], ShuffleNet[14]和MobileNet[15].本文選取這3 個(gè)網(wǎng)絡(luò)作為輕量型網(wǎng)絡(luò)的代表, 并選擇ImageNet 作為其數(shù)據(jù)集.

(4)目標(biāo)檢測網(wǎng)絡(luò): 該領(lǐng)域主要包括兩類卷積神經(jīng)網(wǎng)絡(luò), 分別是R-CNN 系列網(wǎng)絡(luò)和YOLO 系列網(wǎng)絡(luò), 這兩類網(wǎng)絡(luò)在目前的目標(biāo)檢測領(lǐng)域均得到了廣泛應(yīng)用并占據(jù)著主導(dǎo)地位.本文分別選取R-CNN[16]和YOLO v3[17]作為該領(lǐng)域中R-CNN 系列和YOLO 系列的代表網(wǎng)絡(luò), 采用目標(biāo)檢測數(shù)據(jù)集PASCAL VOC.

(5)語義分割網(wǎng)絡(luò): 圖像分割技術(shù)在2014 年之后取得了突破性進(jìn)展, 這得益于FCN[18]的提出, 該網(wǎng)絡(luò)確定了語義分割的基礎(chǔ)框架, 實(shí)現(xiàn)了對輸入圖像的逐像素分類, 隨后出現(xiàn)了很多基于FCN 的研究工作.本文選取FCN 作為語義分割的代表網(wǎng)絡(luò), 為其提供數(shù)據(jù)集PASCAL VOC 2012.

(6)醫(yī)學(xué)影像分割網(wǎng)絡(luò): U-Net[19]常作為Kaggle 競賽中解決醫(yī)學(xué)影像分割問題的優(yōu)選方案, 該網(wǎng)絡(luò)采用特殊的U 型結(jié)構(gòu), 具有從少量數(shù)據(jù)中學(xué)習(xí)特征的能力.本文選取U-Net 作為醫(yī)學(xué)影像分割領(lǐng)域的代表網(wǎng)絡(luò),并為其提供肺部結(jié)節(jié)檢測數(shù)據(jù)集LUNA16.

(7)人臉識別網(wǎng)絡(luò): 已有很多前沿項(xiàng)目將卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用到人臉識別任務(wù)中, 最著名的包括DeepID[20],DeepFace[21]和FaceNet, 表現(xiàn)最優(yōu)的FaceNet 在人臉數(shù)據(jù)集LFW 上的識別準(zhǔn)確率高達(dá)99.63%, 已超出人眼識別的99.25%準(zhǔn)確率.本文選取FaceNet 作為人臉識別領(lǐng)域的代表網(wǎng)絡(luò), 并為其提供數(shù)據(jù)集LFW.

本文為圖像分類領(lǐng)域選取的網(wǎng)絡(luò)多達(dá)十幾個(gè), 但是這些網(wǎng)絡(luò)的作用不僅僅局限于圖像分類, 由于它們具有很好的特征提取能力, 目前被廣泛應(yīng)用于各大領(lǐng)域.如神經(jīng)風(fēng)格遷移應(yīng)用fast-style-transfer 的核心網(wǎng)絡(luò)為Vgg; 主流實(shí)例分割網(wǎng)絡(luò)Mask R-CNN[22]的核心網(wǎng)絡(luò)為ResNet; Faster R-CNN[23]的核心網(wǎng)絡(luò)為ZFNet 或Vgg 等.綜上所述, 本文共選取了20 個(gè)流行的卷積神經(jīng)網(wǎng)絡(luò)并為各個(gè)網(wǎng)絡(luò)配置了數(shù)據(jù)集, 這些網(wǎng)絡(luò)涉及到的應(yīng)用領(lǐng)域眾多, 具有很好的代表性, 它們共同構(gòu)成了宏基準(zhǔn)測試程序.

3.2 網(wǎng)絡(luò)計(jì)算量和參數(shù)量分析

在提出和改進(jìn)卷積神經(jīng)網(wǎng)絡(luò)模型的過程中, 很多研究工作都是著眼于降低模型的計(jì)算量和參數(shù)量.網(wǎng)絡(luò)計(jì)算量在很大程度上決定了網(wǎng)絡(luò)模型的訓(xùn)練時(shí)間和預(yù)測時(shí)間; 網(wǎng)絡(luò)攜帶的參數(shù)量又與網(wǎng)絡(luò)在分布式訓(xùn)練過程中產(chǎn)生的跨節(jié)點(diǎn)通信量有關(guān).在網(wǎng)絡(luò)進(jìn)行分布式數(shù)據(jù)并行訓(xùn)練時(shí), 參數(shù)服務(wù)器對各個(gè)計(jì)算節(jié)點(diǎn)上的參數(shù)梯度進(jìn)行收集后求平均值, 再將處理后的梯度回傳給計(jì)算節(jié)點(diǎn)用于更新本地參數(shù), 當(dāng)網(wǎng)絡(luò)的參數(shù)較多時(shí),參數(shù)服務(wù)器和計(jì)算節(jié)點(diǎn)之間的參數(shù)梯度傳輸量較大,可能會產(chǎn)生較高的通信延遲, 影響網(wǎng)絡(luò)的訓(xùn)練速度.

把握網(wǎng)絡(luò)的計(jì)算量和參數(shù)量有助于估計(jì)網(wǎng)絡(luò)的計(jì)算耗時(shí)和通信耗時(shí)情況, 在衡量網(wǎng)絡(luò)模型的計(jì)算量時(shí),針對單個(gè)樣本輸入, 選取網(wǎng)絡(luò)計(jì)算過程中產(chǎn)生的乘加操作次數(shù)MACCs 作為評測指標(biāo).在衡量網(wǎng)絡(luò)模型的參數(shù)量時(shí), 選取卷積層和全連接層攜帶的參數(shù)個(gè)數(shù)作為評測指標(biāo), 這是因?yàn)樗鼈兙哂械膮?shù)量通常占據(jù)了網(wǎng)絡(luò)參數(shù)總量的絕大部分, 而其他網(wǎng)絡(luò)層不具有參數(shù)或只具有很少的參數(shù).圖1 給出了所選網(wǎng)絡(luò)的計(jì)算量和參數(shù)量, 從圖中可以看出, 各個(gè)網(wǎng)絡(luò)的計(jì)算量和參數(shù)量存在較大的差異性.

圖1 卷積神經(jīng)網(wǎng)絡(luò)的計(jì)算量和參數(shù)量

3.3 熱點(diǎn)網(wǎng)絡(luò)層分析

在針對目標(biāo)程序進(jìn)行軟硬件優(yōu)化時(shí), 首先需要對程序進(jìn)行熱點(diǎn)分析.本文通過對所選網(wǎng)絡(luò)中網(wǎng)絡(luò)層的出現(xiàn)頻率和執(zhí)行時(shí)間占比進(jìn)行統(tǒng)計(jì)分析, 定位出各個(gè)網(wǎng)絡(luò)中頻繁出現(xiàn)、較耗時(shí)的網(wǎng)絡(luò)層, 對這些網(wǎng)絡(luò)層進(jìn)行優(yōu)化通常能夠明顯提升網(wǎng)絡(luò)的計(jì)算效率.圖2 給出了目標(biāo)網(wǎng)絡(luò)中網(wǎng)絡(luò)層的出現(xiàn)頻率, 圖3 基于Intel Xeon E5-2695 給出了網(wǎng)絡(luò)層在網(wǎng)絡(luò)中的執(zhí)行時(shí)間占比.

不同的卷積神經(jīng)網(wǎng)絡(luò)包含的網(wǎng)絡(luò)層存在差異性,且各個(gè)網(wǎng)絡(luò)層在網(wǎng)絡(luò)中的出現(xiàn)頻率不盡相同, 本文所選網(wǎng)絡(luò)主要涉及11 種網(wǎng)絡(luò)層.由圖2 可以看出, 所有網(wǎng)絡(luò)均包含卷積層和ReLU 層, 兩者的出現(xiàn)頻率較高且相當(dāng), 頻率總和在大多數(shù)網(wǎng)絡(luò)中高達(dá)50%以上.這是因?yàn)榫矸e層和ReLU 層是卷積神經(jīng)網(wǎng)絡(luò)中最核心的操作, 卷積層在網(wǎng)絡(luò)中反復(fù)出現(xiàn)起到逐步提取特征的作用, ReLU 層一般作用于卷積層之后, 為網(wǎng)絡(luò)引入非線性.圖中多數(shù)網(wǎng)絡(luò)包含歸一化層(LRN 層、BatchNorm層), L R N 層出現(xiàn)在早期提出的網(wǎng)絡(luò)中, 隨后被BatchNorm 層取代, BatchNorm 層在網(wǎng)絡(luò)中的出現(xiàn)頻率通常高達(dá)30%.

圖2 網(wǎng)絡(luò)層的出現(xiàn)頻率

圖3 網(wǎng)絡(luò)層的執(zhí)行時(shí)間占比

此外, 最大池化層出現(xiàn)在大多數(shù)網(wǎng)絡(luò)中且出現(xiàn)頻率較高, 平均池化層一般以全局平均池化的方式出現(xiàn)在網(wǎng)絡(luò)中且出現(xiàn)頻率一律較低.全連接層通常出現(xiàn)在網(wǎng)絡(luò)的后幾層且出現(xiàn)次數(shù)不超過3 次, Softmax 層在多數(shù)網(wǎng)絡(luò)中單次出現(xiàn), 反卷積層對于語義分割領(lǐng)域的網(wǎng)絡(luò)(FCN、U-Net 等)具有不可或缺的影響, 兩類融合層(Concat 層、Eltwise 層)以較高頻率出現(xiàn)在多數(shù)網(wǎng)絡(luò)中.

圖3 顯示卷積層的執(zhí)行時(shí)間占比在所有網(wǎng)絡(luò)中均高達(dá)70%以上, 這是因?yàn)榫矸e層在各個(gè)網(wǎng)絡(luò)中的出現(xiàn)頻率較高, 且單個(gè)卷積層產(chǎn)生的計(jì)算量較大.相比于卷積層, ReLU 層盡管有著相當(dāng)?shù)某霈F(xiàn)頻率, 但是執(zhí)行時(shí)間占比均在5%以下, 這是因?yàn)镽eLU 層的計(jì)算是基于元素級別的, 產(chǎn)生的計(jì)算量較少.BatchNorm 層一旦被卷積神經(jīng)網(wǎng)絡(luò)所采用, 出現(xiàn)頻率一般較高, 且執(zhí)行時(shí)間占比能夠達(dá)到10%至20%.全連接層和Softmax 層在較淺的網(wǎng)絡(luò)中有著較高的執(zhí)行時(shí)間占比, 但是均不超過10%.而在較深的網(wǎng)絡(luò)中, 它們對應(yīng)的執(zhí)行時(shí)間占比很低, 這是因?yàn)槿B接層和Softmax 層通常出現(xiàn)在網(wǎng)絡(luò)的最后幾層, 且全連接層的出現(xiàn)次數(shù)不超過3 次,Softmax 層的出現(xiàn)次數(shù)一般為單次, 這兩類網(wǎng)絡(luò)層的執(zhí)行時(shí)間相對于眾多的其他層而言非常少.最大池化層的執(zhí)行時(shí)間占比在多數(shù)網(wǎng)絡(luò)中不超過5%, 平均池化層的執(zhí)行時(shí)間占比極低, 兩類融合層在網(wǎng)絡(luò)中的執(zhí)行時(shí)間比例不足10%.

綜合網(wǎng)絡(luò)層的出現(xiàn)頻率和執(zhí)行時(shí)間占比情況, 本文最終選取卷積層、ReLU 層、最大池化層、平均池化層、BatchNorm 層、全連接層、Softmax 層、反卷積層、Concat 層和Eltwise 層構(gòu)建微基準(zhǔn)測試程序.值得注意的是, 本文沒有選取LRN 層是因?yàn)樵搶赢?dāng)前已不再流行, 將其納入基準(zhǔn)測試程序不具有實(shí)際意義.微基準(zhǔn)測試程序涵蓋了目前卷積神經(jīng)網(wǎng)絡(luò)中流行的網(wǎng)絡(luò)層, 且大多數(shù)網(wǎng)絡(luò)層在卷積神經(jīng)網(wǎng)絡(luò)中有著較高的出現(xiàn)頻率或執(zhí)行時(shí)間占比, 所選的網(wǎng)絡(luò)層對于卷積神經(jīng)網(wǎng)絡(luò)的構(gòu)建發(fā)揮著不可或缺的作用.

3.4 基準(zhǔn)測試程序集

通過詳盡的調(diào)研與分析, 本文最終選取20 個(gè)主流的卷積神經(jīng)網(wǎng)絡(luò)構(gòu)成宏基準(zhǔn)測試程序, 而微基準(zhǔn)測試程序集如表1 所示.

表1 微基準(zhǔn)測試程序集

根據(jù)實(shí)際應(yīng)用情況, 本文為卷積層構(gòu)造了5 種常用配置, 分別是(3×3, 1), (3×3, 2), (1×1, 1), (5×5, 1),(7×7, 2), 配置給出了卷積核尺寸和卷積步長; 為平均池化層構(gòu)造了2 種配置, 分別是(2×2, 2), (3×3, 2), 為最大池化層給出的配置為(7×7, 7), 配置給出了池化窗口大小和池化步長.因此, 微基準(zhǔn)測試程序共包含15 個(gè)子測試模塊.此外, 在輸入集方面, 本文提供了小中大3 種規(guī)模, 分別為(64, 256, 56×56), (64, 128, 112×112),(64, 64, 224×224), 規(guī)模參數(shù)依次給出了批量樣本數(shù)、通道數(shù)和輸入張量的尺寸.

圖4 給出了基準(zhǔn)測試程序的實(shí)現(xiàn)及評測框架, 本文基于通用CPU、GPU 和國產(chǎn)神威平臺上的高效深度學(xué)習(xí)庫, 給出了基準(zhǔn)測試程序在這些平臺上的實(shí)現(xiàn).

圖4 基準(zhǔn)測試程序?qū)崿F(xiàn)及評測框架

4 實(shí)驗(yàn)結(jié)果及分析

4.1 實(shí)驗(yàn)平臺和工具

實(shí)驗(yàn)基于3 臺商用Intel 服務(wù)器, 每臺服務(wù)器的硬件配置具體如表2 所示.

表2 實(shí)驗(yàn)服務(wù)器的硬件配置

實(shí)驗(yàn)采用性能分析工具Intel VTune Amplifier XE 和Perf, 在程序執(zhí)行過程中, 捕獲系統(tǒng)中發(fā)生的硬件事件.通過對眾多事件有選擇地進(jìn)行選取和計(jì)算, 得到所需的性能數(shù)據(jù).

4.2 系統(tǒng)性能評測

卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程是基于大數(shù)據(jù)的, 大量的訓(xùn)練數(shù)據(jù)最開始存放于磁盤, 在每次迭代前, 輸入層從磁盤讀取批量樣本數(shù)據(jù), 整個(gè)訓(xùn)練過程中針對大量數(shù)據(jù)的讀取操作可能會造成較高的I/O 等待延遲.另外, 為了加速網(wǎng)絡(luò)的訓(xùn)練過程, 基于多節(jié)點(diǎn)的分布式數(shù)據(jù)并行訓(xùn)練[24]就顯得尤為必要, 然而, 這一過程中網(wǎng)絡(luò)參數(shù)梯度需要在參數(shù)服務(wù)器和計(jì)算節(jié)點(diǎn)間相互傳輸,可能會產(chǎn)生大量的節(jié)點(diǎn)間通信從而造成較高的通信延遲.為了把握宏基準(zhǔn)測試程序中各個(gè)網(wǎng)絡(luò)的整體性能表現(xiàn), 在3 臺服務(wù)器上執(zhí)行網(wǎng)絡(luò)的分布式數(shù)據(jù)并行訓(xùn)練, 圖5 給出了這些網(wǎng)絡(luò)在batchsize 為2 時(shí)的I/O 等待延遲、跨節(jié)點(diǎn)通信延遲和CPU 利用率等3 個(gè)系統(tǒng)性能指標(biāo)的評測結(jié)果.

圖5 I/O 等待延遲、跨節(jié)點(diǎn)通信延遲和CPU 利用率

由圖5 可知, 所有網(wǎng)絡(luò)的I/O 等待時(shí)間均不足1%(圖中一律顯示為1%).雖然訓(xùn)練數(shù)據(jù)量巨大, 但是,網(wǎng)絡(luò)在每次迭代訓(xùn)練的過程中, 僅由輸入層從磁盤讀取一批次訓(xùn)練數(shù)據(jù), 產(chǎn)生I/O 行為.在數(shù)據(jù)到達(dá)網(wǎng)絡(luò)后,其他網(wǎng)絡(luò)層的計(jì)算都是基于上一層產(chǎn)生的輸出結(jié)果,這些操作數(shù)存放在內(nèi)存中, 中間網(wǎng)絡(luò)層的計(jì)算過程不涉及磁盤的讀寫操作, 通信過程同樣不存在I/O 行為.輸入層讀磁盤產(chǎn)生的I/O 等待延遲相對于網(wǎng)絡(luò)計(jì)算時(shí)間和通信時(shí)間而言極低, 讀磁盤造成的I/O 等待不是影響網(wǎng)絡(luò)模型訓(xùn)練性能的因素.

然而, 很多網(wǎng)絡(luò)的通信延遲顯示較高, 部分網(wǎng)絡(luò)的通信時(shí)間高達(dá)40%.結(jié)合圖6 給出的網(wǎng)絡(luò)計(jì)算量與參數(shù)量的比值來看, 可以發(fā)現(xiàn)比值較低的網(wǎng)絡(luò)通常具有較高的通信時(shí)間占比, 而對于計(jì)算量與參數(shù)量比值最大的網(wǎng)絡(luò)U-Net, 通信時(shí)間不足2%.這是因?yàn)楫?dāng)網(wǎng)絡(luò)參數(shù)量相對于計(jì)算量越小時(shí), 通信時(shí)間相對于計(jì)算時(shí)間也就越少, 通信時(shí)間占比越低, 因此, 可以從網(wǎng)絡(luò)計(jì)算量與參數(shù)量的比值對網(wǎng)絡(luò)通信延遲作出估計(jì).

圖6 網(wǎng)絡(luò)計(jì)算量與參數(shù)量的比值

最后, 從CPU 利用率來看, 各個(gè)網(wǎng)絡(luò)的這一指標(biāo)值存在差異性, 通信時(shí)間占比較低的網(wǎng)絡(luò)通常具有較高的CPU 利用率, 對計(jì)算資源的利用更加充分.

經(jīng)過進(jìn)一步的探究發(fā)現(xiàn), 隨著batchsize 的增大, 這些網(wǎng)絡(luò)的通信時(shí)間占比減小且CPU 利用率增大, 這是因?yàn)榫W(wǎng)絡(luò)計(jì)算量大幅增加, 而網(wǎng)絡(luò)參數(shù)量近似不變.因此, 為網(wǎng)絡(luò)訓(xùn)練過程選取較大的batchsize 有利于減少通信開銷且更充分地利用CPU 計(jì)算資源, 網(wǎng)絡(luò)能夠較快地訓(xùn)練完所有數(shù)據(jù).為了支持網(wǎng)絡(luò)在較大batchsize下的訓(xùn)練, 在構(gòu)建網(wǎng)絡(luò)訓(xùn)練平臺時(shí), 需要配置足夠的內(nèi)存量.

4.3 微架構(gòu)性能評測

接下來針對微基準(zhǔn)測試程序中的網(wǎng)絡(luò)層, 從微架構(gòu)層面進(jìn)行自頂向下的性能評測, 明確不同網(wǎng)絡(luò)層的行為特征并定位它們的性能瓶頸, 從而有針對性地對處理器的微架構(gòu)改進(jìn)提出建議.后續(xù)實(shí)驗(yàn)都是基于各個(gè)網(wǎng)絡(luò)層程序在大規(guī)模輸入集下的執(zhí)行過程所得.

首先關(guān)注測試程序的整體性能表現(xiàn), 圖7 給出了它們的IPC 和Retiring.IPC 表示周期指令數(shù), Retiring表示執(zhí)行有效微操作的流水線槽數(shù)占流水線總槽數(shù)的比例.實(shí)驗(yàn)平臺采用Intel 的四發(fā)射處理器, 假設(shè)每條程序指令被解碼為單個(gè)微操作, 當(dāng)Retiring 為100%時(shí), IPC 可達(dá)到理論最大值4.圖中顯示IPC 與Retiring具有高度的一致性, 多數(shù)程序的IPC 高達(dá)2 以上, 程序執(zhí)行性能表現(xiàn)較好.BatchNorm、Softmax、Concat 和Eltwise 層的IPC 明顯較低, 程序的指令并行性仍有待發(fā)掘.然而, Retiring 較高并不代表目標(biāo)程序沒有性能優(yōu)化空間, 通過進(jìn)一步分析發(fā)現(xiàn), 池化層和ReLU 層的向量化程度顯示極低.可以通過對Intel MKL-DNN 中池化層和ReLU 層實(shí)行向量優(yōu)化, 使得單條指令就能完成多個(gè)浮點(diǎn)計(jì)算, 由此來提升程序執(zhí)行性能.

圖7 IPC 和Retiring

對于非空的流水線槽, 其上執(zhí)行的微操作如果最終成功退役, 則該流水線槽被歸類為Retiring, 不產(chǎn)生性能瓶頸.但是, 當(dāng)分支預(yù)測發(fā)生錯(cuò)誤時(shí), 流水線槽上執(zhí)行的微操作在退役前被取消, 導(dǎo)致流水線槽的無效執(zhí)行.圖8 給出了各個(gè)程序的分支指令比重和分支預(yù)測錯(cuò)誤率, 可以看出ReLU 層、最大池化層和Softmax層具有較高比例的分支指令, 且分支預(yù)測錯(cuò)誤率較高,程序性能在很大程度上受到錯(cuò)誤分支預(yù)測的影響.這是因?yàn)檫@幾個(gè)程序中存在大量的比較操作, 且操作數(shù)之間的大小存在不可預(yù)測性.其他程序中的分支預(yù)測行為主要產(chǎn)生于循環(huán)控制部分, 這類的分支跳轉(zhuǎn)能夠很好地被當(dāng)前基于歷史的分支預(yù)測機(jī)制所處理, 因此表現(xiàn)出較低的分支預(yù)測錯(cuò)誤率.

圖8 分支指令比重和分支預(yù)測錯(cuò)誤率

然而, 并不是所有的流水線槽都會被占用, 空的流水線槽表現(xiàn)為CPU 停頓, 從CPU 時(shí)鐘周期上微操作的執(zhí)行情況考慮, 可以將總的時(shí)鐘周期劃分為工作周期和停頓周期.在CPU 停頓周期上, 執(zhí)行單元空閑, 沒有微操作在執(zhí)行, 頻繁的CPU 停頓必然會造成程序性能的極大損失.

引起CPU 停頓的原因有很多, 從前端來看, 取指譯碼階段造成的CPU 停頓表現(xiàn)為指令饑餓.通過對目標(biāo)程序的指令饑餓表現(xiàn)進(jìn)行探究, 發(fā)現(xiàn)具有較高分支預(yù)測錯(cuò)誤率的ReLU 層、最大池化層和Softmax 層對應(yīng)較高的指令饑餓, 測試程序的指令饑餓在較大程度上由錯(cuò)誤的分支預(yù)測造成.這是因?yàn)楫?dāng)分支預(yù)測發(fā)生錯(cuò)誤后, 流水線需要被重新刷新, 在程序恢復(fù)正確執(zhí)行路徑之前, 執(zhí)行單元沒有來自于前端的可執(zhí)行指令, 處于等待指令的空閑狀態(tài).改善分支預(yù)測機(jī)制對于這3 個(gè)程序的性能提升會帶來明顯效果, 不僅使執(zhí)行無效微操作的流水線槽減少, 還能降低指令饑餓.

前端造成的停頓一般較少, 很大一部分的CPU 停頓由后端執(zhí)行階段造成, 由于后端資源有限, 當(dāng)產(chǎn)生資源競爭時(shí), 微操作便不能被發(fā)射.亂序執(zhí)行過程中需要競爭的資源主要包括保留站、讀緩沖、寫緩沖和重排序緩沖.通過詳盡探究資源的使用情況, 最終定位出測試程序的資源競爭集中在保留站和寫緩沖, 圖9 給出了這些程序的保留站滿載率和寫緩沖滿載率.

圖9 保留站滿載率和寫緩沖滿載率

由圖9 可知, BatchNorm 層的保留站滿載率最高,其20%的滿載率在很大程度上由程序內(nèi)部頻繁的除法操作造成, 由于除法操作通常更加耗時(shí)而除法單元配置較少, 除法單元長時(shí)間被占用導(dǎo)致后續(xù)連續(xù)的除法微操作不能被分配到執(zhí)行單元, 微操作滯留于保留站中造成目標(biāo)資源的頻繁滿載.由此可見, 優(yōu)化除法操作、增加除法執(zhí)行單元對BatchNorm 層的性能提升有較大的幫助.與保留站競爭相比, 寫緩沖競爭對測試程序造成的性能損失更普遍且更明顯.大部分程序的寫緩沖滿載率高達(dá)20%以上, 其中, Concat 層和Eltwise層的寫緩沖滿載率分別高達(dá)80%和40%, 這與程序內(nèi)部大量連續(xù)的存儲操作密切相關(guān), 進(jìn)行寫緩沖資源的擴(kuò)容對程序性能提升有著重要意義.

在后端執(zhí)行過程中, 復(fù)雜的依賴關(guān)系、計(jì)算資源受限和訪存受限均會造成程序執(zhí)行性能的損失, 接下來從訪存表現(xiàn)進(jìn)行探究.在高速緩存的3 個(gè)級別中, L1 DCache 離CPU 最近, 速度最快, 較高的L1 DCache 命中率能夠很好地解決訪存與計(jì)算速度的不匹配問題.然而, 一旦程序執(zhí)行過程中頻繁發(fā)生L1 DCache 的訪問缺失, 程序執(zhí)行性能會受到很大影響, 圖10 給出了各個(gè)程序的L1 DCache 缺失率.

圖10 L1 DCache 缺失率

可以發(fā)現(xiàn), 大部分測試程序的L1 DCache 缺失率較小, 這是因?yàn)樗鼈兓跀?shù)據(jù)塊做循環(huán)計(jì)算, 程序具有良好的數(shù)據(jù)局部性, 當(dāng)一個(gè)Cache Line 的數(shù)據(jù)從內(nèi)存被取進(jìn)L1 DCache 后, 在接下來的一系列操作中, 前面讀進(jìn)來的數(shù)據(jù)都能被命中.其中, ReLU 層、池化層、Concat 層的L1 DCache 缺失率極低, 不足0.3%, 卷積層、全連接層和反卷積層的L1 DCache 缺失率均在3%以下.Softmax 層和Eltwise 層的L1 DCache 缺失率較高, 后者的L1 DCache 缺失率最高, 達(dá)到12%以上,這是因?yàn)镋ltwise 層的主要計(jì)算是矩陣的按元素相加操作, 內(nèi)部計(jì)算較為簡單, 幾乎不存在數(shù)據(jù)依賴, 在程序執(zhí)行過程中, 產(chǎn)生大量的同時(shí)取數(shù)據(jù)操作, 由此造成大量的數(shù)據(jù)緩存缺失.

當(dāng)L1 DCache 命中失敗時(shí), 需要訪問L2 Cache,圖11 給出了測試程序的L2 Cache 局部缺失率和全局缺失率.

L2 Cache 的局部缺失率即為L2 Cache 的缺失次數(shù)與其訪問總次數(shù)的比值, L2 Cache 的全局缺失率是其局部缺失率與L1 DCache 缺失率的乘積結(jié)果.圖中顯示部分程序的L2 Cache 局部缺失率高達(dá)80%, L2 Cache 的局部缺失率不具有說服力, 這是因?yàn)長1 DCache中存儲的數(shù)據(jù)是最容易被命中的, L2 Cache 只會在L1 DCache 發(fā)生缺失時(shí)才會被訪問.因此, 在評測L2 Cache缺失率時(shí), 需要選取全局缺失率, 大多數(shù)程序的L2 Cache 全局缺失率不足1%, Softmax 層和Eltwise 層的L2 Cache 全局缺失率在10%左右, 這是由其極差的數(shù)據(jù)局部性造成.

圖11 L2 Cache 的局部缺失率和全局缺失率

綜合L1 DCache 缺失率和L2 Cache 的全局缺失率來看, 絕大多數(shù)測試程序的取數(shù)據(jù)需求能夠被前兩級緩存很好地滿足, 程序?qū)3 Cache 的訪問需求極小,本文不再對L3 Cache 的缺失率進(jìn)行分析.在此基礎(chǔ)上給出了進(jìn)一步的分析, 以Conv331 為例, 在GEM5 體系結(jié)構(gòu)模擬器上探究了L1 DCache 和L3 Cache 的6 種配置組合對目標(biāo)程序的影響.其中, L3 Cache 的容量被減小為25 MB, 相聯(lián)度保持20 路不變, L1 DCache 的配置分別為2 路32 KB, 4 路32 KB, 8 路32 KB, 2 路64 KB, 4 路64 KB, 8 路64 KB.通過對比分析這些配置下的L1 DCache 缺失率和目標(biāo)程序的執(zhí)行時(shí)間發(fā)現(xiàn), 相聯(lián)度產(chǎn)生的影響極小, 因此重點(diǎn)關(guān)注容量配置帶來的影響.相對于L1 DCache 容量為32 KB 的情況, 在容量增至64 KB 時(shí)L1 DCache 的缺失率降低到80%以下, 目標(biāo)程序的執(zhí)行時(shí)鐘周期數(shù)也有所減少, 由此可見, 增大L1 DCache 容量在較大程度上降低了缺失率,對于目標(biāo)程序的執(zhí)行時(shí)間優(yōu)化具有較好的效果.另外,對比第三種配置與真實(shí)硬件配置情況發(fā)現(xiàn), 目標(biāo)程序的執(zhí)行時(shí)間沒有明顯變化, 減小L3 Cache 的容量對于目標(biāo)程序的執(zhí)行時(shí)間沒有明顯影響.考慮到L3 Cache具有較大的容量, 占用了較大的芯片面積, 卻沒有帶來程序性能的明顯提升, 可以考慮減少L3 Cache 的容量,增大L1 DCache 的容量.

5 結(jié)論與展望

本文給出了一套卷積神經(jīng)網(wǎng)絡(luò)基準(zhǔn)測試程序, 包括由網(wǎng)絡(luò)構(gòu)成的宏基準(zhǔn)測試程序和由網(wǎng)絡(luò)層構(gòu)成的微基準(zhǔn)測試程序, 同時(shí)為所選網(wǎng)絡(luò)提供了典型數(shù)據(jù)集, 為網(wǎng)絡(luò)層提供了常見的配置, 并為它們構(gòu)造了不同規(guī)模的輸入集.最后從系統(tǒng)層面和微架構(gòu)層面給出了這套基準(zhǔn)測試程序的性能評測實(shí)例, 結(jié)合程序的性能表現(xiàn)和程序本身進(jìn)行分析, 可以證明測試程序能夠準(zhǔn)確反映卷積神經(jīng)網(wǎng)絡(luò)的程序特性, 能夠用于處理器的評測和優(yōu)化設(shè)計(jì)指導(dǎo).并且, 通過分析性能評測結(jié)果, 明確了目標(biāo)程序的行為特征和性能瓶頸, 為處理器的設(shè)計(jì)提出了一些改進(jìn)建議.

下一步將繼續(xù)完善基準(zhǔn)測試程序, 使其包含更多領(lǐng)域的卷積神經(jīng)網(wǎng)絡(luò), 提高基準(zhǔn)測試程序的代表性.待國產(chǎn)神威硬件平臺上的軟件環(huán)境包括深度學(xué)習(xí)框架、卷積神經(jīng)網(wǎng)絡(luò)庫和性能分析工具完善后, 利用這套基準(zhǔn)測試程序?yàn)閲a(chǎn)處理器面向神經(jīng)網(wǎng)絡(luò)訓(xùn)練任務(wù)的優(yōu)化提供指導(dǎo).

猜你喜歡
程序
給Windows添加程序快速切換欄
電腦愛好者(2020年6期)2020-05-26 09:27:33
試論我國未決羈押程序的立法完善
失能的信仰——走向衰亡的民事訴訟程序
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
基于VMM的程序行為異常檢測
偵查實(shí)驗(yàn)批準(zhǔn)程序初探
我國刑事速裁程序的構(gòu)建
創(chuàng)衛(wèi)暗訪程序有待改進(jìn)
恐怖犯罪刑事訴訟程序的完善
主站蜘蛛池模板: 91外围女在线观看| 国产精品美女自慰喷水| 性喷潮久久久久久久久| 88av在线播放| 精品久久蜜桃| 99re热精品视频国产免费| 亚洲精品国产综合99久久夜夜嗨| 欧美日本二区| 国外欧美一区另类中文字幕| 欧美成一级| 一级一级特黄女人精品毛片| 亚洲天堂网在线视频| 亚洲成人77777| 欧美日韩中文国产| 国产成人91精品免费网址在线| 亚洲欧美日韩久久精品| 2021国产v亚洲v天堂无码| 免费99精品国产自在现线| 国产噜噜噜| 欧美日韩精品一区二区视频| 91在线国内在线播放老师| 色噜噜综合网| 国产女人18毛片水真多1| 久久精品国产免费观看频道| 99久久成人国产精品免费| 国产另类视频| 国产00高中生在线播放| 色成人亚洲| 成年人福利视频| 亚洲成肉网| 亚洲一级毛片在线播放| 欧美日韩另类国产| 欧美激情视频一区| 亚洲无码视频图片| 天堂成人av| 刘亦菲一区二区在线观看| 1级黄色毛片| 国产幂在线无码精品| 欧美亚洲第一页| 国产一在线| 999国产精品| 最新亚洲人成网站在线观看| 日本一区二区三区精品国产| 农村乱人伦一区二区| 亚洲天堂成人在线观看| 精品久久香蕉国产线看观看gif | 日韩无码视频播放| 国产91导航| 好紧好深好大乳无码中文字幕| 欧美在线视频不卡| 色亚洲成人| 亚洲免费黄色网| 免费aa毛片| 精品国产欧美精品v| 欧美国产综合视频| 3344在线观看无码| 国产亚洲高清视频| 在线一级毛片| 亚洲欧美成人网| 亚洲va在线∨a天堂va欧美va| 老司机午夜精品网站在线观看| 凹凸精品免费精品视频| 日韩小视频网站hq| 五月丁香在线视频| 国产成人无码综合亚洲日韩不卡| 久草视频中文| 伊人久久久大香线蕉综合直播| 日本一区二区三区精品视频| 强奷白丝美女在线观看| 亚洲男人的天堂网| 狠狠色噜噜狠狠狠狠色综合久| 99精品国产电影| 午夜电影在线观看国产1区| 无码人中文字幕| 就去吻亚洲精品国产欧美| 乱人伦99久久| 国产凹凸一区在线观看视频| 国产玖玖玖精品视频| 人人看人人鲁狠狠高清| 亚洲资源在线视频| 乱系列中文字幕在线视频| 美女被操黄色视频网站|