當前AI模型的規模越來越大,對平臺算力的要求也越來越高。2019年ICLR上的吸睛之作:Large Scale GAN Training for High Fidelity Natural Image Synthesis,使用大規模GAN,生成了質量可以以假亂真的圖片。而這背後,是使用了512塊TPU,密集訓練24-48個小時的結果,因此訓練這樣一個規模的GAN模型所需的算力,可高達23PFLOPs(假設使用TPUv2)。(ICLR論文的深度解讀參見筆者另一篇文章)

曼殊:ICLR『19谷歌大規模GAN訓練論文深度解讀?

zhuanlan.zhihu.com
圖標

要對這麼大規模的計算任務進行加速,無論是使用FPGA還是GPU的伺服器,都需要對其進行互連,以擴放伺服器對深度學習模型的算力。 本文將從互連繫統的可擴放性(scalability)的角度,介紹並比較基於FPGA和GPU的方案,在大規模深度學習應用中的開發狀態和應用前景。

本文的討論分別基於Microsoft的Project Catapult與NVIDIA的DGX系統, 選擇這兩個方案進行比較的原因,是它們都實現了FPGA/GPU之間一致的兩兩互連,即互連後的系統邏輯上可以看成一整塊超大FPGA/GPU。

1. FPGA的可擴放性解決方案,通過伺服器間的乙太網實現FPGA兩兩互連

在微軟的Project Catapult中,FPGA通過自帶的收發器直接接上連接伺服器的 40 Gbps網線,並在FPGA內部實現了硬體的協議棧和路由器。這樣,FPGA就利用了伺服器主機間的乙太網,實現了相互連接 。在這樣的互連方式下,每個FPGA作為網路中的結點,並無主從之分。另一方面,數據通過乙太網傳播,傳輸延遲非常小。因此,通過這種方式互連的FPGA,在邏輯上可以看成是一塊超大的FPGA。這種互連規模可以擴展到整個數據中心的規模,極大的提高了可擴展性。

將FPGA連接到伺服器主機之間的網路的具體做法是:將FPGA部署在計算機網卡(NIC)和外部乙太網交換機之間,這一方案稱作(bump-in-the-wire)。如上圖所示[1],FPGA繞過伺服器主機的CPU和網卡,直接處理從網路上到來的數據,並將處理好的數據傳輸到網路上。這樣就實現了一個由FPGA組成的區域網,FPGA內部集成了MAC與PHY層的協議棧(稱為Lightweight Transport Layer, LTL),以及轉發的路由器(Eleastic Router, ER),其他網路的設備如交換機等,以及其他上層協議功能則直接利用現有的伺服器主機網路來實現,無需增加新的資源。FPGA結點在對網路數據包進行解析後,對數據進行相應的計算和處理,再將處理好的數據打包,通過乙太網口傳輸給下一個FPGA結點處理。

上圖[1]以 CNN inference為例,每塊 FPGA 負責模型中的一層或者一層中的若干個特徵,計算完成後通過乙太網將結果傳入下一塊FPGA繼續計算,直到計算出最終結果為止。這種方式的另一個好處是計算過程無需訪問DRAM:模型權重完全載入片上內存,中間結果通過乙太網傳輸,因此,整個過程既不需要不斷訪問 DRAM 中獲取模型權重,也不需要dram作為介質傳遞中間結果,這就消除了 DRAM 的性能瓶頸,完全發揮出 FPGA 計算單元的性能。

(關於微軟的FPGA互連繫統的更多細節,請參見文章:晶元架構換血!如何評價微軟在數據中心使用FPGA?作者:李博傑

晶元架構換血!如何評價微軟在數據中心使用FPGA??

www.msra.cn
圖標

)

這樣通過乙太網相連的FPGA集羣,其傳輸帶寬、延遲以及可擴放性,均與乙太網的性能相當。根據[1]中提供的結果,使用40G乙太網連接的FPGA之間的數據傳輸,在同一機架內延遲在 3 微秒以內;8 微秒以內可達 1000 塊 FPGA;20 微秒可達同一數據中心的所有 FPGA。同一數據中心內部能夠實現互連的FPGA數量,理論上高達25萬塊之多。

FPGA+乙太網的擴放方式,巧妙的利用了伺服器主機間現有的乙太網,實現了擴放性極大、延遲極小的大規模FPGA互聯繫統。且這種方式,所帶來的額外硬體資源以及功耗很低,也無需引入額外的冷卻系統。這是由於這種互連是基於已經存在的乙太網,而且FPGA本身功耗低、能效高

FPGA能夠以這種方式進行互連,一方面得益於其自身對乙太網的良好支持的特性(收發機連接乙太網口,以及豐富的乙太網處理IP),另一方面,邏輯上FPGA本身可以作為一個「主機」獨立工作,這也是其能夠作為網路結點工作的必要條件。

而GPU,長期作為一個「加速」工具,是無法脫離CPU進行單獨工作的。因此,下一小節將會看到,NVIDIA實現對GPU的大規模互連,是基於對高帶寬匯流排的開發和支持的,而且CPU也是互連繫統繞不開的障礙。

2. GPU的擴放性解決方案:GPU+NVLink+NVSwitch

NVIDIA為了實現GPU實現高速大規模互連,經歷了兩個階段,首先是研發出高速的NVLink代替PCIe,實現了GPU之間的高速互連。接下來而為了突破PCB的物理瓶頸,研製了NVSwitch交換晶元,用於高速轉發連接在該晶元的所有GPU之間的數據,實現這些GPU的兩兩連接。

NVIDIA推出了NVLink,接下來推出了升級版NVLink2.0,雙向帶寬高達50GBps,GV100 GPU擁有6個NVLink 2.0匯流排介面,這使得其帶寬達到了300GB/s。相比之下,PCIe的雙向帶寬僅為32gbps,且絕大部分nv的GPU僅有一個PCIe介面,因此帶寬與使用nvlink不可同日而語。

基於NVLink,NVIDIA在2017年推出了DGX-1及其升級版系統,它集成了8顆GP100 GPU。如圖所示,這8顆GPU通過立方體樣式的網狀網路拓撲結構相連,其中一組4顆GPU可以實現兩兩連接,然後每顆GPU再和另一組相對應的GPU直連,最終實現了8顆GPU互聯的設計。

而這種拓撲結構本質上並非8顆GPU兩兩相連,換言之,這8顆GPU在邏輯上並不是等價的,因此不能簡單的視作一個大規模GPU。另一方面,這種匯流排直連方案很難進一步增加互聯GPU的數量。其原因主要是 如此多的匯流排連接對PCB的布線和製造都是一個極大的難題,在DGX-1升級版的NVLink 2.0中已經達到了24條匯流排。況且如果要完成16顆GPU兩兩互聯的話,其匯流排規模將急劇膨脹,甚至難以在PCB上完成

為瞭解決這個問題,英偉達設計了NVSwitch,其本質是一個專用的NVLink交換器,讓所有的GPU都連接至交換晶元上,再由交換晶元實現數據的互聯互通。現在發布的NVSwitch晶元擁有18個NVlink埠,在連接NVlink 2.0匯流排的時候,每個埠的雙向帶寬為50GB/s,整個NVSwitch的總帶寬高達900GB/s。

基於NVSwitch,NVIDIA在2018年提出了DGX-2系統,如圖所示,在DGX-2上,NVIDIA通過「8×GPU-6×NVSwitch-6×NVSwitch-8×GPU」的設計,實現了16顆gpu之間兩兩相連,每顆GPU都可以以相同的延遲和速度和其他GPU進行通訊 ,這樣整個機器就可以被看做一個大型獨立的GPU。

關於NVIDIA GPU互連方案的更多細節,請參見下文

NVIDIA造出16核心全球最大GPU,靠的就是它!?

baijiahao.baidu.com
圖標

值得注意的是,實現這樣一個16個GPU兩兩互連的NVSwitch,其體積與功耗相當驚人,NVSwitch內部集成了20億個晶體管,在採用了臺積電12nm FFN工藝後功耗依然高達100W,需要採用主動散熱方案才能正常運行。在封裝方面,NVSwitch採用的是1940針的4平方釐米BGA封裝方案, 規模巨大。

此外,從公佈結構的介面數量上看,該連接系統最多支持18顆GPU, 要支持更多數量的GPU互連,需要進一步擴大NVSwitch規模和支持的連接數量。而從上文的NVSwitch的功耗數據來看,最大能支持的GPU互連數量應該不會有數量級級別的提升。

3 互連繫統性能對比FPGA vs GPU

上表總結了上文討論的可擴展FPGA系統和GPU系統的各方面性能的比較。對於FPGA,表1中給出了理論最大的規模及總算力;對於GPU,則列出了DGX-2的各項性能。

從表中可以看出,得益於乙太網的超高可擴展性,FPGA系統可達的理論最大總算力是DGX-2(深度學習)的5倍,但是乙太網的數據帶寬卻只有NVLink的十分之一。然而也正是因為GPU不得不使用板上點對點通信的匯流排相連,才限制了GPU的可擴展性,及其所能達到的理論最大算力。

當然,除了乙太網與板上連接的可擴展性差別所帶來的理論最高算力與功耗的差別,兩者的生態環境、開發特點等會帶來各自不同的優勢和缺陷,例如:

(1) 基於GPU的DGX-2,目前看來僅能作為雲端伺服器集羣中的單臺伺服器使用,這意味著如果這臺伺服器出現故障,則會很大程度上影響雲端伺服器這部分任務的加速性能。而FPGA+乙太網結構中,每臺伺服器上均有一塊FPGA,單片FPGA故障對整個雲端的性能影響可以很小。

(2) FPGA的開發週期與開發難度,相對於GPU仍然較長,生態環境也不如GPU完善。 因此這麼大的理論算力最終有多少能真正發揮作用,還需要觀望。Microsoft 在2017年發布了Project Brainwave,並在2018年Micro和ISCA上發表論文介紹了該工程的架構、指令集、並行設計等細節,筆者計劃在後續的文章中對此進行詳細的介紹並討論

(3) 談到生態環境,NVIDIA的NVLink並未得到Intel CPU的支持(NV的GPU支持6路NVLink而不是PCIe,人家Intel搭理你纔怪…)。在伺服器生態環境上,Intel處理器相對於IBM,有著壓倒性的優勢。因此在DGX-2中,Intel-Xeon處理器與GPU之間仍使用低帶寬的PCIe通信。

5 總結

本文從可擴放性的角度,分析並比較了基於FPGA和GPU的大規模互連方案。FPGA由於通過乙太網相連,因而具有極高的可擴放性,因此能達到的理論算力遠高於GPU。而GPU的開發難度與生態環境都大大優於FPGA,但由於受制於物理連接的瓶頸,當前還無法進行超大規模互連,功耗問題也相當明顯。無論是FPGA, GPU, 還是ASIC,在超高算力要求下的互連應用都存在著各自的問題,這些問題有些是器件本身的特性造成(FPGA的高開發週期,GPU需要板級互連),有些是推動不同方案的公司之間的相互競爭造成的技術無法融合(Intel的Xeon並不支持NVlink)。最後以薩繆爾森第18版經濟學裡的一句話結束本文,The essence of economic development is innovation and that monopolists in fact are the wellspring of innovation in a capitalism economy

[1] A Cloud-Scale Acceleration Architecture, MICRO16

https://www.microsoft.com/en-us/research/wp-content/uploads/2016/10/Cloud-Scale-Acceleration-Architecture.pdf?

www.microsoft.com

[2] 你不知道的TPU 3.0,TPU Pod 以及Google A.I cloud.tencent.com/devel


推薦閱讀:
相關文章