林楷智,宗艷艷,孫瓏玲
(1.高效能服務(wù)器和存儲(chǔ)技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,北京 100085;2.浪潮(北京)電子信息產(chǎn)業(yè)股份有限公司,北京 100085)
為滿足大數(shù)據(jù)、云計(jì)算和人工智能等領(lǐng)域的數(shù)據(jù)收集與處理需求,采用各種異構(gòu)形式的AI服務(wù)器得到了廣泛應(yīng)用。CPU+GPU是AI服務(wù)器中普遍使用的計(jì)算單元組合[1]。其中,P2P(Peer to Peer)通信用于多GPU系統(tǒng)中,借助緩存設(shè)備,可以有效利用PCIe資源進(jìn)行GPU之間的數(shù)據(jù)交互[2]。
針對(duì)GPU加速應(yīng)用,業(yè)內(nèi)已有面向多種軟件工具、硬件配置和算法優(yōu)化的研究。2016年,Shi等人[3]通過(guò)性能基準(zhǔn)測(cè)試,比較了GPU加速深度學(xué)習(xí)的軟件工具(Caffe、CNTK、TensorFlow和Torch等);2018年,Xu等人[4]通過(guò)對(duì)軟件和硬件配置的組合研究,得到不同開(kāi)源深度學(xué)習(xí)框架的應(yīng)用特性和功能,進(jìn)一步量化了硬件屬性對(duì)深度學(xué)習(xí)工作負(fù)載的影響;2019年,F(xiàn)arshchi等人[5]使用FireSim將開(kāi)源深度神經(jīng)網(wǎng)絡(luò)加速器NVDLA(NVIDIA Deep Learning Accelerator)集成到Amazon Cloud FPGA上的RISC-V SoC中,通過(guò)運(yùn)行YOLOv3目標(biāo)檢測(cè)算法來(lái)評(píng)估NVDLA的性能。但是,基于CPU+GPU架構(gòu),針對(duì)AI服務(wù)器在各應(yīng)用場(chǎng)景中的分析卻鮮有研究。
本文主要對(duì)AI服務(wù)器中3種典型的PCIe拓?fù)銪alance Mode、Common Mode和Cascade Mode的應(yīng)用場(chǎng)景進(jìn)行研究,旨在通過(guò)對(duì)3種拓?fù)涞狞c(diǎn)對(duì)點(diǎn)帶寬與延遲、雙精度浮點(diǎn)運(yùn)算性能和深度學(xué)習(xí)推理性能分析,得到3種拓?fù)湓诟鲬?yīng)用場(chǎng)景中的優(yōu)勢(shì)和劣勢(shì),為AI服務(wù)器的實(shí)際應(yīng)用提供優(yōu)選配置指導(dǎo)。
(1)Balance Mode。
Balance Mode拓?fù)錇镈ual root,根據(jù)PCIe資源將GPU平均分配到各個(gè)CPU,同一個(gè)PCIe Switch下的GPU可以實(shí)現(xiàn)P2P通信,不同CPU下掛接的GPU需要跨超級(jí)通道互聯(lián)UPI(Ultra Path Interconnect)才能通信。以8個(gè)GPU卡為例,Balance Mode拓?fù)浣Y(jié)構(gòu)如圖1所示。
Figure 1 PCIe card GPU Balance mode
(2)Common Mode。
Common Mode拓?fù)渲蠫PU的PCIe資源均來(lái)自同一個(gè)CPU,同一個(gè)PCIe Switch下的GPU可以實(shí)現(xiàn)P2P通信,不同PCIe Switch下掛接的GPU需要跨CPU PCIe Root Port才能實(shí)現(xiàn)P2P通信,但通信帶寬低于同一個(gè)PCIe Switch下的P2P通信。以8個(gè)GPU卡為例,Common Mode拓?fù)浣Y(jié)構(gòu)如圖2所示。
Figure 2 PCIe card GPU Common mode
(3)Cascade Mode。
Cascade Mode拓?fù)渲蠫PU的PCIe資源均來(lái)自同一個(gè)CPU PCIe Root Port,PCIe Switch之間為級(jí)聯(lián)拓?fù)洌患?jí)PCIe Switch下的GPU可以實(shí)現(xiàn)P2P通信,第1級(jí)PCIe Switch下的GPU和第2級(jí)PCIe Switch下的GPU之間可以實(shí)現(xiàn)P2P通信,不需要通過(guò)CPU PCIe Root Port。以8個(gè)GPU卡為例,Cascade Mode拓?fù)浣Y(jié)構(gòu)如圖3所示。
Figure 3 PCIe card GPU Cascade mode
Balance Mode的配置將GPU平均掛接在2個(gè)CPU下,GPU PCIe總的上行帶寬較高;Common Mode在一定程度上能夠滿足GPU之間點(diǎn)對(duì)點(diǎn)的通信,同時(shí)可保障足夠的CPU與GPU之間的I/O帶寬;Cascade Mode只有一條×16鏈路,但由于GPU之間通過(guò)PCIe Switch串接,提升了點(diǎn)對(duì)點(diǎn)的性能,降低了延遲。
對(duì)于雙精度浮點(diǎn)運(yùn)算,因GPU計(jì)算需要使用處理器與主內(nèi)存,由于Dual root的拓?fù)渖闲袔捙c內(nèi)存使用率提升,其性能會(huì)優(yōu)于Single root的拓?fù)洹?/p>
對(duì)于深度學(xué)習(xí)推理性能來(lái)說(shuō),具備并行計(jì)算能力的 GPU 可以基于訓(xùn)練過(guò)的網(wǎng)絡(luò)進(jìn)行數(shù)十億次的計(jì)算,從而快速識(shí)別出已知的模式或目標(biāo)。不同拓?fù)湎翯PU的互聯(lián)關(guān)系不同,GPU之間的溝通會(huì)影響深度學(xué)習(xí)推理的整體性能。
為探究在不同應(yīng)用條件下3種拓?fù)涞男阅懿町悾瑢?shí)驗(yàn)使用自研AI服務(wù)器(NF5468M5)搭建機(jī)臺(tái)進(jìn)行測(cè)試。裝置使用2顆CPU,規(guī)格為Intel? Xeon? Gold 6142,主頻為2.60 GHz;使用12條 DDR4內(nèi)存,容量為32 GB,主頻為2 666 MHz;使用8顆GPU,規(guī)格為NVIDIA Tesla-V100_32G。
3.2.1 點(diǎn)對(duì)點(diǎn)帶寬與延遲
對(duì)于GPU的P2P性能,可以使用帶寬與延遲來(lái)衡量。PCIe 3.0的帶寬為16 GB/s,理想狀況下,實(shí)際應(yīng)用中帶寬可以達(dá)到理論帶寬的80%左右。PCIe的延遲主要取決于PCIe Trace的長(zhǎng)度、走線路徑上的器件及是否經(jīng)過(guò)UPI、是否跨RC(Root Complex)等。
如圖4所示,在Balance Mode、Cascade Mode和Common Mode 3種拓?fù)渲?,分別測(cè)試掛在同一個(gè)PCIe Switch下的GPU(如圖4中線路①)和跨PCIe Switch的GPU(如圖4中線路②)的點(diǎn)對(duì)點(diǎn)帶寬與延遲。測(cè)試結(jié)果如表1、表2及圖5所示。
Figure 4 Schematic of point-to-point bandwidth and latency
在同一個(gè)PCIe Switch下,由于GPU之間的傳輸距離是一樣的,所以在點(diǎn)對(duì)點(diǎn)回路①中,3種拓?fù)涞膸捙c延遲結(jié)果皆相近;對(duì)于跨PCIe Switch的2顆GPU,由于CPU間為3 UPI Links,其信號(hào)傳輸速度足夠快,所以Balance Mode與Common Mode的結(jié)果相近,而對(duì)于Cascade Mode,由于GPU之間的溝通只需經(jīng)過(guò)PCIe Switch,傳輸路徑變短,其點(diǎn)對(duì)點(diǎn)延遲性能得以提升;同時(shí),對(duì)于Intel CPU而言,一個(gè)PCIe ×16 Port 為一個(gè)RC,不同RC 之間的通信帶寬比同一個(gè)RC下PCIe Switch之間的通信差,故Cascade Mode的帶寬也得以提升。
Table 1 GPU point-to-point bandwidth and latency on the same PCIe switch
Table 2 GPU point-to-point bandwidth and latency across PCIe switch
Figure 5 GPU point-to-point bandwidth and latency across PCIe Switchs
3.2.2 HPL性能分析
HPL(High Performance Linpack)測(cè)試可以表征3種拓?fù)湓陔p精度浮點(diǎn)運(yùn)算中的表現(xiàn)。Balance Mode、Common Mode和Cascade Mode 3種拓?fù)涞腍PL性能測(cè)試結(jié)果如表3所示。
Table 3 HPL performance of three topologies
為清晰表征3種拓?fù)湓贖PL性能測(cè)試中的表現(xiàn)差異,以Balance Mode的測(cè)試分?jǐn)?shù)為基準(zhǔn),得到Common Mode和Cascade Mode 2種拓?fù)銱PL性能測(cè)試分?jǐn)?shù)對(duì)Balance Mode分?jǐn)?shù)的占比,如圖6所示。
Figure 6 HPL performance of three topologies
HPL測(cè)試需要使用處理器與主內(nèi)存,由于Dual root的拓?fù)渖闲袔捄蛢?nèi)存使用率提升,性能將會(huì)優(yōu)于Single root的拓?fù)?,故Balance Mode和Common Mode在HPL測(cè)試中的分?jǐn)?shù)會(huì)高于Cascade Mode的。另外,Balance Mode結(jié)構(gòu)將8個(gè)GPU平均掛載在2顆CPU下,可以利用2顆CPU及內(nèi)存的資源來(lái)完成浮點(diǎn)運(yùn)算;在Common Mode中,雖然所有GPU都掛載于CPU0下,但因CPU間的UPI連接速度夠快,CPU間的單條UPI連接速度高達(dá)10.4 GT/s,同時(shí)運(yùn)行8個(gè)GPU的浮點(diǎn)運(yùn)算時(shí),可以通過(guò)UPI來(lái)與CPU1通信,且共享內(nèi)存。故整體而言,Balance Mode的HPL性能會(huì)略高于Common Mode的。
3.2.3 深度學(xué)習(xí)性能分析
深度學(xué)習(xí)DL(Deep Learning)通過(guò)多個(gè)處理層構(gòu)成的計(jì)算模型進(jìn)行圖像、視頻和音頻等的處理和識(shí)別[6],常用模型有自動(dòng)編碼機(jī)、受限玻爾茲曼機(jī)、深度神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)等,其中卷積神經(jīng)網(wǎng)絡(luò)[7]在圖像處理方面應(yīng)用較為廣泛,如圖7所示。
Figure 7 Image processing using convolutional neural network
在2017年的GPU技術(shù)大會(huì)(GTC)上,NVIDIA發(fā)布了基于volta的V100 GPU。V100 GPU是第1個(gè)包含“張量核心”的NVIDIA GPU,這是4×4矩陣乘法操作設(shè)計(jì)的核心,是深度學(xué)習(xí)模型的主要部分[8]。
深度學(xué)習(xí)訓(xùn)練模型主要使用2種分布策略——數(shù)據(jù)并行型和模型并行型[9],本文實(shí)驗(yàn)采用數(shù)據(jù)并行型策略。對(duì)于數(shù)據(jù)并行,每個(gè)GPU都有一個(gè)深度學(xué)習(xí)模型的完整副本。每個(gè)GPU接收數(shù)據(jù)的不同部分進(jìn)行訓(xùn)練,然后將其參數(shù)通過(guò)Ring All-Reduce的方式更新到所有GPU,以便與所有GPU共享其訓(xùn)練輸出。如圖8所示,以Balance Mode為例,在運(yùn)行數(shù)據(jù)并行的深度學(xué)習(xí)訓(xùn)練模型時(shí),當(dāng)多臺(tái)機(jī)器運(yùn)行時(shí),GPU的通信流通過(guò)IB(InfiniBand)卡實(shí)現(xiàn)機(jī)器之間的信息傳遞;當(dāng)單臺(tái)機(jī)器運(yùn)行時(shí),基于NCCL(NVIDIA Collective Communications Library)通信庫(kù),8個(gè)GPU卡的信息傳遞構(gòu)成環(huán)形通信流。與GPU之間的通信帶寬相比,減小的CPU和GPU之間的通信帶寬會(huì)影響GPU獲取數(shù)據(jù)集所需要的時(shí)間,即完成一個(gè)Batch size所需的時(shí)間。
Figure 8 Data parallel communication mode for Balance mode
深度學(xué)習(xí)訓(xùn)練模型種類繁多,不同模型有不同的優(yōu)勢(shì),可以應(yīng)用于各類實(shí)際應(yīng)用場(chǎng)景。如圖9所示,ResNet計(jì)算模型借鑒了Highway Network思想,利用殘差網(wǎng)絡(luò)構(gòu)建,其優(yōu)化的目標(biāo)為輸出和輸入的差F(x)=H(x)-x。ResNet的計(jì)算深度為152層神經(jīng)網(wǎng)絡(luò),Top5錯(cuò)誤率可達(dá)3.57%,解決了層次比較深時(shí)無(wú)法訓(xùn)練的問(wèn)題。VGG計(jì)算模型分為VGG16和VGG19,計(jì)算深度為16和19層神經(jīng)網(wǎng)絡(luò),在目標(biāo)檢測(cè)與識(shí)別方面有突出的性能優(yōu)勢(shì),Top5錯(cuò)誤率達(dá)7.3%[10]。
Figure 9 ResNet model
深度學(xué)習(xí)模型場(chǎng)景有圖像、視頻和語(yǔ)音處理及推薦等,不同應(yīng)用場(chǎng)景的數(shù)據(jù)集類型不同。以圖像處理為例,針對(duì)參數(shù)規(guī)模不同的模型,AI服務(wù)器不同PCIe 拓?fù)涞男阅鼙憩F(xiàn)也會(huì)有不同,常見(jiàn)的計(jì)算量及容量較小的模型有ResNet50(99 MB)[11]、InceptionV3(92 MB)等,計(jì)算量及容量較大的模型有VGG16(528 MB)、VGG19(549 MB)[12]等。以計(jì)算量及容量較小的模型ResNet50和計(jì)算量及容量較大的模型VGG16為例,通過(guò)不同拓?fù)浣Y(jié)構(gòu)對(duì)圖像集訓(xùn)練速度的測(cè)試,可以得到3種拓?fù)湓?類深度學(xué)習(xí)訓(xùn)練模型中的適用性,結(jié)果如表4和圖10所示。
Table 4 Performance of three topologies under different deep learning models
Figure 10 Performance of three topologies under different deep learning models
對(duì)于計(jì)算量及容量較小的模型,模型重復(fù)讀取數(shù)據(jù)集的次數(shù)變多,對(duì)處理器、硬盤(pán)存取和GPU間資料交換有較高的需求,所以同一顆CPU下使用2條PCIe ×16帶寬的Common Mode的性能表現(xiàn)(如ResNet50為5 624.23 images/s)會(huì)優(yōu)于另外2種拓?fù)?;?duì)于計(jì)算量及容量較大的模型,在數(shù)據(jù)并行的模式下運(yùn)行深度學(xué)習(xí)訓(xùn)練時(shí),系統(tǒng)內(nèi)的每個(gè)GPU需在接收到同樣的參數(shù)后,再開(kāi)始執(zhí)行訓(xùn)練,因?yàn)镃ascade Mode的GPU點(diǎn)對(duì)點(diǎn)性能較好,其搬移模型參數(shù)至各GPU的速度會(huì)較快,所以性能(如VGG16為2 658.47 images/s)會(huì)優(yōu)于另外2種拓?fù)洹?/p>
針對(duì)不同的深度學(xué)習(xí)訓(xùn)練模型,結(jié)合實(shí)際應(yīng)用場(chǎng)景,往往需要在同一臺(tái)服務(wù)器中切換不同的GPU PCIe拓?fù)?,?lái)實(shí)現(xiàn)性能最優(yōu)化。手動(dòng)更改線纜連接方式需要開(kāi)箱操作,用戶體驗(yàn)不友好,還有可能導(dǎo)致維護(hù)人員手指劃破等工傷事件。
有如下2種方案可以實(shí)現(xiàn)BMC(Baseboard Management Controller)遠(yuǎn)程一鍵拓?fù)淝袚Q。
(1)基于PCIe Switch FW技術(shù)的GPU拓?fù)溥h(yuǎn)程一鍵切換
如圖11所示,PCIe Switch 0 的Port 0始終為上行端口,Port 1始終為下行端口;PCIe Switch 1的Port 0始終為上行端口,Port 1始終為上行端口。拓?fù)涞那袚Q通過(guò)配置PCIe Switch 1的FW或發(fā)送PCIe Switch 1的配置命令實(shí)現(xiàn)。
Figure 11 GPU topology remote switch based on PCIe Switch FW technology
若切換為Balance Mode,則BMC配置PCIe Switch 1的FW或發(fā)送PCIe Switch 1的配置命令,將PCIe Switch 1下對(duì)應(yīng)的GPU4~GPU7分配到PCIe Switch 1的Port 0;若切換為Cascade Mode,則BMC配置PCIe Switch 1的FW或發(fā)送PCIe Switch 1的配置命令,將PCIe Switch 1下對(duì)應(yīng)的GPU4~GPU7分配到PCIe Switch 1的Port 1。
(2)基于PCIe 4.0 MUX的GPU拓?fù)溥h(yuǎn)程一鍵切換。
如圖12所示,PCIe Switch 0 的Port 0始終為上行端口,Port 1始終為下行端口;PCIe Switch 1的Port 0始終為上行端口。拓?fù)涞那袚Q通過(guò)BMC控制PCIe MUX實(shí)現(xiàn)。
若切換為Balance Mode,則BMC通過(guò)配置PCIe 4.0 MUX,使PCIe Switch 0 Port 1切到NIC0,CPU1切到PCIe Switch 1的Port 0;若切換為Cascade Mode,則BMC通過(guò)配置PCIe 4.0 MUX,使PCIe Switch 0的Port 1切到PCIe Switch 1的Port 0。
Figure 12 GPU topology remote switch based on PCIe 4.0 MUX
針對(duì)AI服務(wù)器的3種PCIe拓?fù)浣Y(jié)構(gòu)——Balance Mode、Common Mode和Cascade Mode,本文進(jìn)行了點(diǎn)對(duì)點(diǎn)帶寬與延遲、HPL性能的測(cè)試和數(shù)據(jù)分析,并選取典型深度學(xué)習(xí)模型進(jìn)行拓?fù)浣Y(jié)構(gòu)的應(yīng)用場(chǎng)景分析。
在點(diǎn)對(duì)點(diǎn)帶寬與延遲方面,因Cascade Mode中GPU只需經(jīng)過(guò)PCIe Switch且GPU掛載在同一個(gè)RC下,故Cascade Mode的點(diǎn)對(duì)點(diǎn)帶寬與延遲均為3種拓?fù)渲凶顑?yōu)的;在HPL性能方面,由于Dual root的上行帶寬和內(nèi)存使用率提升且Balance Mode中GPU均勻使用2顆CPU和內(nèi)存的資源,故Balance Mode的HPL性能最優(yōu);在深度學(xué)習(xí)典型應(yīng)用方面,Cascade Mode因具備較好的點(diǎn)對(duì)點(diǎn)性能而更擅長(zhǎng)計(jì)算量及容量較大的模型數(shù)據(jù)處理,Common Mode因使用同一顆CPU的2條PCIe ×16帶寬而更擅長(zhǎng)計(jì)算量及容量較小的模型的數(shù)據(jù)處理。
針對(duì)密集度更高的超大規(guī)模的數(shù)據(jù)集群,NVDIA發(fā)布了基于NVLink的GPU,GPU間NVLink每條通道的單向理論帶寬為25 Gb/s,每個(gè)端口的雙向理論帶寬可達(dá)50 GB/s。相對(duì)于利用PCIe協(xié)議的成本較低的GPU,NVLink將GPU的卡間通信和CPU分離,使計(jì)算單元兼具Balance Mode的高帶寬和Cascade Mode的卡間高通信能力。
在智能計(jì)算領(lǐng)域,復(fù)雜多變的應(yīng)用場(chǎng)景對(duì)計(jì)算架構(gòu)的選擇和設(shè)計(jì)提出了更高的需求。在滿足實(shí)際應(yīng)用需求的條件下,選擇最優(yōu)的PCIe 拓?fù)浣Y(jié)構(gòu),實(shí)現(xiàn)計(jì)算資源的優(yōu)化配置,加速AI服務(wù)器的計(jì)算處理能力,面向具體應(yīng)用場(chǎng)景優(yōu)化現(xiàn)有拓?fù)浜蛣?chuàng)新設(shè)計(jì)計(jì)算架構(gòu),將為云數(shù)據(jù)時(shí)代帶來(lái)新的發(fā)展契機(jī)。