袁佳偉,宋慶增,王雪純,姜文超,金光浩
(1.天津工業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,天津 300387;2.廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,廣州 510006)
在當(dāng)前神經(jīng)網(wǎng)絡(luò)應(yīng)用(人臉識(shí)別、自動(dòng)駕駛等)普遍增長(zhǎng)的背景下,大型與復(fù)雜的神經(jīng)網(wǎng)絡(luò)將面向商業(yè)化發(fā)展。根據(jù)IDC[1]預(yù)測(cè),到2020年全球產(chǎn)生的數(shù)據(jù)總量將大于40 ZB,在這種情形下,以服務(wù)器為計(jì)算核心的集中式處理模式將無法高效處理邊緣設(shè)備產(chǎn)生的數(shù)據(jù)。因此,邊緣計(jì)算[2]就顯得尤為重要,邊緣計(jì)算數(shù)據(jù)處理更接近數(shù)據(jù)來源,具有實(shí)時(shí)和快速進(jìn)行數(shù)據(jù)處理分析的優(yōu)點(diǎn)[3],這對(duì)于神經(jīng)網(wǎng)絡(luò)的商業(yè)化而言至關(guān)重要。
EDGE TPU計(jì)算板是當(dāng)前最新的邊緣計(jì)算設(shè)備,該設(shè)備集成了專為運(yùn)行神經(jīng)網(wǎng)絡(luò)所設(shè)計(jì)的專用集成電路(ASIC)芯片,在以較快的速度運(yùn)行神經(jīng)網(wǎng)絡(luò)的同時(shí)又能保持較低的功耗。NVIDIA Jetson TX2是一款面向人工智能的超級(jí)計(jì)算機(jī)模塊,采用Maxwell GPU架構(gòu)引入了流式處理多處理器(SM)的全新設(shè)計(jì),支持32位單精度和16位半精度運(yùn)算。Jetson NANO在TX1基礎(chǔ)上弱化了數(shù)據(jù)流,并顯著改善了電源管理,擁有128個(gè)CUDA核心,支持32位單精度計(jì)算和16位半精度計(jì)算,其中半精度計(jì)算的吞吐量為單精度的兩倍。
對(duì)于Jetson TX2與而言,在發(fā)布時(shí)研究人員分析了其與深度學(xué)習(xí)模型的適配度,該實(shí)驗(yàn)將神經(jīng)網(wǎng)絡(luò)在不同框架下實(shí)現(xiàn),對(duì)比TensorFlow、Caffe2、PyTorch等框架不同時(shí)的能耗和延遲情況[4]。隨后有多種神經(jīng)網(wǎng)絡(luò)基于TX2的實(shí)現(xiàn)與優(yōu)化,以及調(diào)整TX2的工作模式來分析比較不同模式下運(yùn)行神經(jīng)網(wǎng)絡(luò)的延遲與能耗[5]。
目前有實(shí)驗(yàn)將神經(jīng)網(wǎng)絡(luò)部署在Jetson NANO邊緣計(jì)算板上,該實(shí)驗(yàn)對(duì)具有實(shí)時(shí)語義分段功能的卷積網(wǎng)絡(luò)進(jìn)行改進(jìn),使用深度卷積來代替普通卷積以減輕網(wǎng)絡(luò)負(fù)擔(dān),獲得了較好的效果,平均交并比和FPS分別達(dá)到54.47%和47[6]。
FPGA原是作為一種半集成電路而出現(xiàn)的,目前多用來加速神經(jīng)網(wǎng)絡(luò),在2007年,研究人員將前饋神經(jīng)網(wǎng)絡(luò)部署在FPGA上,根據(jù)要實(shí)現(xiàn)的功能劃分與片上資源提出了通量估計(jì)器,通過該估算器部署神經(jīng)網(wǎng)絡(luò),能以較低的消耗運(yùn)行前饋神經(jīng)網(wǎng)絡(luò)[7]。目前已經(jīng)有研究人員將流行神經(jīng)網(wǎng)絡(luò)部署在FPGA上,對(duì)YOLO V2中的部分參數(shù)進(jìn)行二值化處理,實(shí)現(xiàn)了基于混合精度的YOLO V2架構(gòu)[8]。
當(dāng)前神經(jīng)網(wǎng)絡(luò)提升性能的方法主要有避免使用全連接層[9]、縮小卷積核與減少通道數(shù)、將下采樣時(shí)間盡量提前、對(duì)訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)進(jìn)行剪枝操作[10]、量化權(quán)重、使用霍夫曼編碼方式表示權(quán)重等6種。其中前4種都可減少計(jì)算量與訪存量,量化權(quán)重與用編碼方式表示權(quán)重可以降低訪存量。使用建立Roofline模型查看在當(dāng)前平臺(tái)上運(yùn)行的神經(jīng)網(wǎng)絡(luò)受何種因素限制,進(jìn)而采取對(duì)應(yīng)的方式來加速神經(jīng)網(wǎng)絡(luò)。
目前較少有在EDGE TPU計(jì)算板上的應(yīng)用及Jetson NANO與EDGE TPU的性能功耗評(píng)測(cè)分析,且多數(shù)的Roofline研究只涉及性能測(cè)量與比較。本文對(duì)多種開發(fā)板的理論速度與實(shí)際測(cè)量速度使用Roofline模型進(jìn)行建模,比較不同平臺(tái)的理論與實(shí)際模型,測(cè)量分析模型性能,并對(duì)設(shè)備性能功耗進(jìn)行比較,為設(shè)備的商業(yè)化應(yīng)用提供更全面的應(yīng)用數(shù)據(jù)。
本文選用Roofline[11]模型作為評(píng)判性能的工具,測(cè)量計(jì)算出各個(gè)神經(jīng)網(wǎng)絡(luò)在不同平臺(tái)運(yùn)行時(shí)的幀率與運(yùn)行推斷時(shí)所需算力,構(gòu)建各個(gè)基于不同平臺(tái)神經(jīng)網(wǎng)絡(luò)的Roofline模型,以直觀地觀測(cè)出模型的性能,根據(jù)該實(shí)驗(yàn)結(jié)果可對(duì)在邊緣設(shè)備上運(yùn)行的神經(jīng)網(wǎng)絡(luò)進(jìn)行優(yōu)化以提高運(yùn)行速率。
利用外置功耗測(cè)量設(shè)備,分別測(cè)量出不同平臺(tái)的待機(jī)與工作功耗,再根據(jù)模型運(yùn)行速度計(jì)算得出效能功耗比模型[12],即可對(duì)比觀測(cè)各個(gè)平臺(tái)待機(jī)時(shí)功率與運(yùn)行神經(jīng)網(wǎng)絡(luò)時(shí)的性能能耗比,本文在實(shí)驗(yàn)中添加了服務(wù)器級(jí)別GPU(K40、K80)作為對(duì)照組進(jìn)行對(duì)比,來突出邊緣計(jì)算具有較大的優(yōu)勢(shì)與極高的發(fā)展?jié)摿Α?/p>
EDGE TPU具有4 TOPS的峰值計(jì)算量與50 Gb/s的帶寬,EDGE TPU又僅支持通過量化所產(chǎn)生的8位整型數(shù)據(jù)運(yùn)算,8位整型乘法處理器占用的面積與消耗的能量均為IEEE754定義的FP16處理器的1/6。因此,EDGE TPU計(jì)算板在以較快的速度運(yùn)行的同時(shí),又能保持較低的功耗。
TPU在運(yùn)行之前的準(zhǔn)備工作中的重要數(shù)據(jù)處理步驟是量化,雖然量化會(huì)在一定程度上降低精度,但一般神經(jīng)網(wǎng)絡(luò)模型擁有較好的泛化能力,表1所示為單精度(FP32)和8位定點(diǎn)權(quán)重參數(shù)的Mobile Net V2[13]及Inception V4[14]的正確率,可見進(jìn)行量化之后并沒有對(duì)精度造成較大的影響。
表1 不同神經(jīng)網(wǎng)絡(luò)單精度和8位定點(diǎn)參數(shù)的正確率Table1 Accuracy of single precision and 8-bit fixed point parameters of different neural networks
本文采用常用的神經(jīng)網(wǎng)絡(luò)作為實(shí)驗(yàn)對(duì)象,如Mobile Net[15]與Inception[16]均為當(dāng)前市場(chǎng)化應(yīng)用較多的神經(jīng)網(wǎng)絡(luò)。4種常用神經(jīng)網(wǎng)絡(luò)基本情況如表2所示。
表2 4種常用神經(jīng)網(wǎng)絡(luò)基本情況Table 2 Basic situation of four common neural networks
為觀察測(cè)試網(wǎng)絡(luò)模型在3個(gè)平臺(tái)上的表現(xiàn),本文引入Roofline模型,該模型是一種常用的設(shè)備性能分析模型,它將計(jì)算性能、計(jì)算密度和存儲(chǔ)性能等相關(guān)聯(lián)[17],并在一個(gè)二維坐標(biāo)系中表示出來,Roofline模型背后的假設(shè)是網(wǎng)絡(luò)模型不適合片上高速緩存,因此神經(jīng)網(wǎng)絡(luò)在Roofline模型中的位置受計(jì)算力限制與內(nèi)存帶寬限制。在二維坐標(biāo)系中,Y軸為每秒浮點(diǎn)運(yùn)算次數(shù),因此峰值計(jì)算速率形成Roofline模型中的“平坦”部分[18],X軸是計(jì)算強(qiáng)度,測(cè)量為每個(gè)訪問的DRAM字節(jié)的浮點(diǎn)運(yùn)算,內(nèi)存帶寬是每秒字節(jié)數(shù)。因?yàn)椋∣PS/s)(/OPS/B)=Byte/s,變成了Roofline的“傾斜”部分。如果沒有足夠大的計(jì)算強(qiáng)度,網(wǎng)絡(luò)模型會(huì)受到內(nèi)存帶寬限制,并且在坐標(biāo)系中位于傾斜部分下方。
為測(cè)繪計(jì)算平臺(tái)的Roofline曲線,需要計(jì)算計(jì)算平臺(tái)理論上的算力峰值和顯存帶寬:
其中,OPS表示算力,PRO用來表示處理器數(shù)量,OpePerSec表示每個(gè)處理器每秒鐘操作數(shù),將TX2、NANO和EDGE TPU計(jì)算板的參數(shù)分別代入式(1),得出的算力分別為1.3 TOPS、471 GOPS和4 TOPS(8位)。服務(wù)器級(jí)別GPU(K80、K40)的峰值算力數(shù)據(jù)也可計(jì)算得出8.74 TFLOPS(FP32)和4.29 TFLOPS(FP32)。
Roofline模型的另一個(gè)重要元素為內(nèi)存帶寬,峰值帶寬的計(jì)算公式如式(2)所示:
其中,BW代表帶寬,ClockRate代表時(shí)鐘頻率,BitW代表位寬。將參數(shù)代入式(2)可得K80、K40、TX2、NANO、Coral的理論帶寬分別為480 Gb/s、288 Gb/s、58.3 Gb/s、25.6 Gb/s和50 Gb/s。
根據(jù)所得算力及帶寬信息,可得3塊邊緣計(jì)算板的理論Roofline模型如圖1所示。
圖1 TX2、NANO、Coral的Roofline模型Fig.1 Roofline model of TX2,NANO,Coral
圖1中的Roofline圖像采用對(duì)數(shù)直角坐標(biāo)系,Coral算力值采用處理INT8數(shù)據(jù)類型算力值,從圖1可以看出,Coral算力約為TX2算力的3倍和NANO的8倍。這是由于Coral開發(fā)板承載了EDGE TPU,該TPU改進(jìn)結(jié)構(gòu)以適應(yīng)神經(jīng)網(wǎng)絡(luò)的部署以及使用量化8位定點(diǎn)數(shù)據(jù)的方式來加速計(jì)算。計(jì)算板的顯存帶寬受硬件實(shí)現(xiàn)、線路上的電磁干擾和其他諸多復(fù)雜的物理因素的影響[19]。使用CUDA自帶的測(cè)試帶寬的應(yīng)用實(shí)例Bandwidth,實(shí)際測(cè)得TX2、NANO的帶寬分別為33.2 Gb/s、14.7 Gb/s,另測(cè)得Coral的實(shí)際帶寬約為30 Gb/s 。
TX2的實(shí)際Roofline模型如圖2所示。
圖2 TX2的實(shí)際Roofline模型Fig.2 Actual Roofline model of TX2
當(dāng)計(jì)算強(qiáng)度到達(dá)40 OPS/Byte時(shí),算力達(dá)到峰值,在坐標(biāo)系中即平行X軸向右。雖然在實(shí)際中還有其他因素的影響使各個(gè)神經(jīng)網(wǎng)絡(luò)在圖2中的位置并不能坐落在Roofline線上,但是每一個(gè)神經(jīng)網(wǎng)絡(luò)與Roofline線峰值的距離都反映了調(diào)整操作強(qiáng)度的好處[20]。對(duì)應(yīng)Y軸距離的差值反映的是緩存阻塞之類的問題。當(dāng)神經(jīng)網(wǎng)絡(luò)落點(diǎn)在斜線部分時(shí),因受到帶寬限制,故不能達(dá)到計(jì)算平臺(tái)的峰值[21]。
NANO的實(shí)際Roofline模型如圖3所示。
圖3 NANO的實(shí)際Roofline模型Fig.3 Actual Roofline model of NANO
當(dāng)計(jì)算強(qiáng)度到達(dá)32 OPS/Byte時(shí),算力達(dá)到峰值,在坐標(biāo)系中即平行X軸向右。若要建立關(guān)于EDGE TPU計(jì)算板的Roofline模型,則要對(duì)神經(jīng)網(wǎng)絡(luò)進(jìn)行量化,由于原來的權(quán)重不適應(yīng)EDGE TPU,因此要將浮點(diǎn)型參數(shù)變?yōu)檎蛥?shù),此外,參數(shù)的變化要求重新定義計(jì)算強(qiáng)度,因此,將計(jì)算強(qiáng)度改為每字節(jié)計(jì)算數(shù)[22]。
當(dāng)計(jì)算強(qiáng)度到達(dá)136 OPS/Byte時(shí),算力達(dá)到峰值,在坐標(biāo)系中即平行X軸向右。從圖4可以看出,Coral中的4種神經(jīng)網(wǎng)絡(luò)運(yùn)行結(jié)果較好。
圖4 Coral的實(shí)際Roofline模型Fig 4 Actual Roofline model of Coral
如圖5所示,EDGE TPU計(jì)算板的Roofline的“傾斜”部分較長(zhǎng),峰值最高,在Coral上運(yùn)行的神經(jīng)網(wǎng)絡(luò)均有較好的結(jié)果,4種網(wǎng)絡(luò)中的3種算力值最高,這主要有以下2種原因:
1)經(jīng)過量化處理的神經(jīng)網(wǎng)絡(luò)計(jì)算強(qiáng)度變大,在Roofline的圖像上自然要向右移,對(duì)于受帶寬限制(斜線區(qū)域)的神經(jīng)網(wǎng)絡(luò)改善較大。
2)Coral集成的EDGE TPU算力值較高,對(duì)于處于算力值限制(平行線區(qū)域)的神經(jīng)網(wǎng)絡(luò)有明顯提升。
圖5 合并后的實(shí)際Roofline模型Fig.5 Combined actual Roofline model
從圖5可以看出:TX2的表現(xiàn)趨于穩(wěn)定,TX2對(duì)于Inception V4的執(zhí)行取得了最佳結(jié)果,在3種邊緣計(jì)算版中具有最高帶寬;TX2具有1.3T的峰值算力,具有強(qiáng)大的靈活性,支持多種深度學(xué)習(xí)框架,可以用來訓(xùn)練神經(jīng)網(wǎng)絡(luò)。
NANO的Roofline形狀和TX2基本相似(NANO的構(gòu)造和TX1的大部分參數(shù)相同),各個(gè)神經(jīng)網(wǎng)絡(luò)計(jì)算強(qiáng)度一樣,但基于TX2運(yùn)行的神經(jīng)網(wǎng)絡(luò)算力值約為基于NANO的2倍,比TX2和NANO在大小和價(jià)格上的差距要小得多。
當(dāng)設(shè)備在投入應(yīng)用時(shí),能耗往往是一個(gè)需要考慮的問題。本文使用性能/瓦特作為一個(gè)評(píng)測(cè)標(biāo)準(zhǔn)來進(jìn)行分析,并且引入K40與K80[23]進(jìn)行比較。
功耗測(cè)量設(shè)備型號(hào)為EXTECH-380803,誤差為±0.9%,輸入電流為220 V交流電。嵌入式設(shè)備能耗數(shù)據(jù)來自整塊板卡能耗,K40與K80能耗數(shù)據(jù)來自顯卡內(nèi)部寄存器取值。測(cè)量Jetson NANO的能耗值示意圖如圖6所示。
圖6 Jetson NANO能耗值測(cè)量示意圖Fig.6 Schematic diagram of Jetson NANO energy consumption value measurement
雖然K80與K40只支持單雙精度計(jì)算,但算力峰值仍超出3個(gè)邊緣計(jì)算平臺(tái)算力峰值,帶寬遠(yuǎn)超邊緣計(jì)算板帶寬,K40與K80廣泛應(yīng)用于云端服務(wù)器[24-25]。
K80、K40的Roofline模型如圖7所示。
圖7 K80、K40的Roofline模型Fig.7 Roofline model of K80,K40
為測(cè)量出準(zhǔn)確的空閑能耗,設(shè)邊緣計(jì)算板均為開機(jī)后未運(yùn)行任何任務(wù)的情況下,K80與K40均為P8[26]狀態(tài)。
NANO、Coral、TX2、K40、K80的待機(jī)功率值如圖8所示。其中,NANO、TX2、Coral為整個(gè)開發(fā)板功耗,K40與K80為單GPU在P8狀態(tài)下的功耗可以看出,NANO實(shí)測(cè)最低為1.4 W,約為K80的1/40和TX2的1/5,邊緣開發(fā)版中TX2待機(jī)功率最高。
圖8 NANO、Coral、TX2、K40、K80待機(jī)功率Fig.8 Standby power of NANO,Coral,TX2,K40,K80 computing boards
在工作狀態(tài)下測(cè)量各個(gè)平臺(tái)的功耗[27]如圖9所示??梢钥闯觯m然K40與K80具有相當(dāng)高的算力與帶寬[28],但在此項(xiàng)比值中卻占據(jù)了后兩名,邊緣計(jì)算板的性能功耗比對(duì)于服務(wù)器來說有較大的優(yōu)勢(shì),其中EDGE TPU計(jì)算板的性能功耗比較高,遠(yuǎn)高于其他邊緣開發(fā)板。Coral性能功耗比約為NANO的12倍和TX2的6倍,這意味著執(zhí)行同樣的任務(wù),使用EDGE TPU計(jì)算板可以極大地節(jié)約能源[29]。
圖9 NANO、Coral、TX2、K40、K80算力與功耗比值Fig.9 NANO,Coral,TX2,K40,K80 computing power to power consumption ratio
本文分別測(cè)試了4種神經(jīng)網(wǎng)絡(luò)(MNSSD V1、MNSSD V2、Inception V1、Inception V4)在3種硬件平臺(tái)上實(shí)現(xiàn)的各項(xiàng)指標(biāo),實(shí)驗(yàn)結(jié)果如表3所示。
表3 4種神經(jīng)網(wǎng)絡(luò)的實(shí)驗(yàn)結(jié)果Table 3 Experimental results of four neural networks
將傳統(tǒng)模型VGG 16[30]在TX2上運(yùn)行,每秒處理圖片數(shù)約為31張,Roofline模型如圖10所示。該模型在坐標(biāo)系中的位置較為靠近斜線部分,說明在TX2上運(yùn)行VGG 16時(shí)受訪存量限制。為加快模型運(yùn)行速度,更多地利用TX2的性能,對(duì)傳統(tǒng)的VGG 16網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行修改,將卷積核維度縮減到原來的1/5左右,減少通道數(shù)量以達(dá)到減小計(jì)算量與訪存量的目的。實(shí)驗(yàn)結(jié)果表明,在準(zhǔn)確度下降僅為5%左右的前提下,將每秒圖片處理數(shù)提升至255張左右,極大地加快了模型運(yùn)行速度。同時(shí)提高了TX2的資源利用率,將每秒操作數(shù)提升至0.83 TOPS左右。
圖10 運(yùn)行在TX2上的Roofline模型Fig.10 Roofline model running on TX2
本文以邊緣計(jì)算板作為實(shí)驗(yàn)平臺(tái),分別建立了TX2、NANO、Coral開發(fā)板的理論與實(shí)際Roofline模型并進(jìn)行綜合比較,根據(jù)量化后的神經(jīng)網(wǎng)絡(luò)計(jì)算算力和訪存量,并分析TX2、NANO、Coral 3塊邊緣計(jì)算板及云端服務(wù)器的功耗性能。實(shí)驗(yàn)結(jié)果表明,EDGE TPU計(jì)算板具有較高算力值與最優(yōu)性能功耗比,其執(zhí)行速度約為TX2的1.5倍和NANO的3倍,Coral的性能功耗比約為TX2的6倍和NANO的12倍。下一步將對(duì)邊緣設(shè)備上運(yùn)行的多種神經(jīng)網(wǎng)絡(luò)優(yōu)化方式及其組合進(jìn)行比較分析,研究在設(shè)備運(yùn)算性能受限情況下如何最大化地優(yōu)化神經(jīng)網(wǎng)絡(luò)。