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