• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

      2020-03-23 06:04:08徐青青
      關(guān)鍵詞:測(cè)試程序網(wǎng)絡(luò)層基準(zhǔn)

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

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

      1 概述

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

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

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

      2 相關(guān)工作

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

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

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

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

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

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

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

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

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

      (2)圖像分類(lèi)網(wǎng)絡(luò): 從2012 年開(kāi)始, 圖像分類(lèi)領(lǐng)域涌現(xiàn)出了眾多卷積神經(jīng)網(wǎng)絡(luò), 最初大多都基于ImageNet數(shù)據(jù)集進(jìn)行訓(xùn)練, 并在ILSVRC 競(jìng)賽中表現(xiàn)出了優(yōu)異的分類(lèi)效果, 包括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)測(cè)試程序, 這是因?yàn)椴煌姹镜木W(wǎng)絡(luò)復(fù)雜度差異較大且均被廣泛使用.在選取以上網(wǎng)絡(luò)作為圖像分類(lèi)領(lǐng)域的代表網(wǎng)絡(luò)后, 統(tǒng)一為它們提供計(jì)算機(jī)視覺(jué)標(biāo)準(zhǔn)數(shù)據(jù)集ImageNet.

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

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

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

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

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

      本文為圖像分類(lèi)領(lǐng)域選取的網(wǎng)絡(luò)多達(dá)十幾個(gè), 但是這些網(wǎng)絡(luò)的作用不僅僅局限于圖像分類(lèi), 由于它們具有很好的特征提取能力, 目前被廣泛應(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)測(cè)試程序.

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

      在提出和改進(jìn)卷積神經(jīng)網(wǎng)絡(luò)模型的過(guò)程中, 很多研究工作都是著眼于降低模型的計(jì)算量和參數(shù)量.網(wǎng)絡(luò)計(jì)算量在很大程度上決定了網(wǎng)絡(luò)模型的訓(xùn)練時(shí)間和預(yù)測(cè)時(shí)間; 網(wǎng)絡(luò)攜帶的參數(shù)量又與網(wǎng)絡(luò)在分布式訓(xùn)練過(guò)程中產(chǎn)生的跨節(jié)點(diǎn)通信量有關(guān).在網(wǎng)絡(luò)進(jìn)行分布式數(shù)據(jù)并行訓(xùn)練時(shí), 參數(shù)服務(wù)器對(duì)各個(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ù)梯度傳輸量較大,可能會(huì)產(chǎn)生較高的通信延遲, 影響網(wǎng)絡(luò)的訓(xùn)練速度.

      把握網(wǎng)絡(luò)的計(jì)算量和參數(shù)量有助于估計(jì)網(wǎng)絡(luò)的計(jì)算耗時(shí)和通信耗時(shí)情況, 在衡量網(wǎng)絡(luò)模型的計(jì)算量時(shí),針對(duì)單個(gè)樣本輸入, 選取網(wǎng)絡(luò)計(jì)算過(guò)程中產(chǎn)生的乘加操作次數(shù)MACCs 作為評(píng)測(cè)指標(biāo).在衡量網(wǎng)絡(luò)模型的參數(shù)量時(shí), 選取卷積層和全連接層攜帶的參數(shù)個(gè)數(shù)作為評(píng)測(cè)指標(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ò)層分析

      在針對(duì)目標(biāo)程序進(jìn)行軟硬件優(yōu)化時(shí), 首先需要對(duì)程序進(jìn)行熱點(diǎn)分析.本文通過(guò)對(duì)所選網(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ò)層, 對(duì)這些網(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ù)不超過(guò)3 次, Softmax 層在多數(shù)網(wǎng)絡(luò)中單次出現(xiàn), 反卷積層對(duì)于語(yǔ)義分割領(lǐng)域的網(wǎng)絡(luò)(FCN、U-Net 等)具有不可或缺的影響, 兩類(lèi)融合層(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ì)算是基于元素級(jí)別的, 產(chǎn)生的計(jì)算量較少.BatchNorm 層一旦被卷積神經(jīng)網(wǎng)絡(luò)所采用, 出現(xiàn)頻率一般較高, 且執(zhí)行時(shí)間占比能夠達(dá)到10%至20%.全連接層和Softmax 層在較淺的網(wǎng)絡(luò)中有著較高的執(zhí)行時(shí)間占比, 但是均不超過(guò)10%.而在較深的網(wǎng)絡(luò)中, 它們對(duì)應(yīng)的執(zhí)行時(shí)間占比很低, 這是因?yàn)槿B接層和Softmax 層通常出現(xiàn)在網(wǎng)絡(luò)的最后幾層, 且全連接層的出現(xiàn)次數(shù)不超過(guò)3 次,Softmax 層的出現(xiàn)次數(shù)一般為單次, 這兩類(lèi)網(wǎng)絡(luò)層的執(zhí)行時(shí)間相對(duì)于眾多的其他層而言非常少.最大池化層的執(zhí)行時(shí)間占比在多數(shù)網(wǎng)絡(luò)中不超過(guò)5%, 平均池化層的執(zhí)行時(shí)間占比極低, 兩類(lèi)融合層在網(wǎng)絡(luò)中的執(zhí)行時(shí)間比例不足10%.

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

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

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

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

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

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

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

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

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

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

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

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

      4.2 系統(tǒng)性能評(píng)測(cè)

      卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過(guò)程是基于大數(shù)據(jù)的, 大量的訓(xùn)練數(shù)據(jù)最開(kāi)始存放于磁盤(pán), 在每次迭代前, 輸入層從磁盤(pán)讀取批量樣本數(shù)據(jù), 整個(gè)訓(xùn)練過(guò)程中針對(duì)大量數(shù)據(jù)的讀取操作可能會(huì)造成較高的I/O 等待延遲.另外, 為了加速網(wǎng)絡(luò)的訓(xùn)練過(guò)程, 基于多節(jié)點(diǎn)的分布式數(shù)據(jù)并行訓(xùn)練[24]就顯得尤為必要, 然而, 這一過(guò)程中網(wǎng)絡(luò)參數(shù)梯度需要在參數(shù)服務(wù)器和計(jì)算節(jié)點(diǎn)間相互傳輸,可能會(huì)產(chǎn)生大量的節(jié)點(diǎn)間通信從而造成較高的通信延遲.為了把握宏基準(zhǔn)測(cè)試程序中各個(gè)網(wǎng)絡(luò)的整體性能表現(xiàn), 在3 臺(tái)服務(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)的評(píng)測(cè)結(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)練的過(guò)程中, 僅由輸入層從磁盤(pá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ì)算過(guò)程不涉及磁盤(pán)的讀寫(xiě)操作, 通信過(guò)程同樣不存在I/O 行為.輸入層讀磁盤(pán)產(chǎn)生的I/O 等待延遲相對(duì)于網(wǎng)絡(luò)計(jì)算時(shí)間和通信時(shí)間而言極低, 讀磁盤(pán)造成的I/O 等待不是影響網(wǎng)絡(luò)模型訓(xùn)練性能的因素.

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

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

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

      經(jīng)過(guò)進(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)練過(guò)程選取較大的batchsize 有利于減少通信開(kāi)銷(xiāo)且更充分地利用CPU 計(jì)算資源, 網(wǎng)絡(luò)能夠較快地訓(xùn)練完所有數(shù)據(jù).為了支持網(wǎng)絡(luò)在較大batchsize下的訓(xùn)練, 在構(gòu)建網(wǎng)絡(luò)訓(xùn)練平臺(tái)時(shí), 需要配置足夠的內(nèi)存量.

      4.3 微架構(gòu)性能評(píng)測(cè)

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

      首先關(guān)注測(cè)試程序的整體性能表現(xiàn), 圖7 給出了它們的IPC 和Retiring.IPC 表示周期指令數(shù), Retiring表示執(zhí)行有效微操作的流水線槽數(shù)占流水線總槽數(shù)的比例.實(shí)驗(yàn)平臺(tái)采用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)程序沒(méi)有性能優(yōu)化空間, 通過(guò)進(jìn)一步分析發(fā)現(xiàn), 池化層和ReLU 層的向量化程度顯示極低.可以通過(guò)對(duì)Intel MKL-DNN 中池化層和ReLU 層實(shí)行向量?jī)?yōu)化, 使得單條指令就能完成多個(gè)浮點(diǎn)計(jì)算, 由此來(lái)提升程序執(zhí)行性能.

      圖7 IPC 和Retiring

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

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

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

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

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

      圖9 保留站滿(mǎn)載率和寫(xiě)緩沖滿(mǎn)載率

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

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

      圖10 L1 DCache 缺失率

      可以發(fā)現(xiàn), 大部分測(cè)試程序的L1 DCache 缺失率較小, 這是因?yàn)樗鼈兓跀?shù)據(jù)塊做循環(huán)計(jì)算, 程序具有良好的數(shù)據(jù)局部性, 當(dāng)一個(gè)Cache Line 的數(shù)據(jù)從內(nèi)存被取進(jìn)L1 DCache 后, 在接下來(lái)的一系列操作中, 前面讀進(jìn)來(lái)的數(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ì)算較為簡(jiǎn)單, 幾乎不存在數(shù)據(jù)依賴(lài), 在程序執(zhí)行過(guò)程中, 產(chǎn)生大量的同時(shí)取數(shù)據(jù)操作, 由此造成大量的數(shù)據(jù)緩存缺失.

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

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

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

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

      5 結(jié)論與展望

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

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

      猜你喜歡
      測(cè)試程序網(wǎng)絡(luò)層基準(zhǔn)
      Noise-Tolerant ZNN-Based Data-Driven Iterative Learning Control for Discrete Nonaffine Nonlinear MIMO Repetitive Systems
      基于Castle型機(jī)械手的三溫量產(chǎn)測(cè)試平臺(tái)實(shí)現(xiàn)
      手機(jī)APP交互界面人因適合性測(cè)試程序的設(shè)計(jì)與實(shí)現(xiàn)
      中心主導(dǎo)制訂的《VHF/UHF頻率范圍內(nèi)測(cè)向系統(tǒng)測(cè)向靈敏度的測(cè)試程序》等兩項(xiàng)國(guó)際標(biāo)準(zhǔn)在ITU官網(wǎng)正式發(fā)布
      明基準(zhǔn)講方法??待R
      基于WPA的物聯(lián)網(wǎng)網(wǎng)絡(luò)層安全的研究
      電氣自動(dòng)化控制設(shè)備可靠性測(cè)試探討
      滑落還是攀爬
      巧用基準(zhǔn)變換實(shí)現(xiàn)裝配檢測(cè)
      河南科技(2014年15期)2014-02-27 14:12:35
      Imagination率先展示全新Futuremark 3DMark OpenGL ES3.0基準(zhǔn)測(cè)試
      苗栗市| 长宁县| 娄烦县| 汽车| 汝州市| 九江市| 通辽市| 桂东县| 河西区| 新密市| 康乐县| 沁源县| 津市市| 阿勒泰市| 滨州市| 石屏县| 南和县| 招远市| 札达县| 涞源县| 喀喇沁旗| 虹口区| 同江市| 郯城县| 钟祥市| 西平县| 邵阳市| 浦北县| 许昌县| 灵璧县| 肥西县| 化德县| 巴里| 乌海市| 大厂| 黄大仙区| 勐海县| 财经| 彭阳县| 普宁市| 绥化市|