互聯(lián)網(wǎng)智算架構詳解
在互聯(lián)網(wǎng)行業(yè),人工智能涉及方方面面:圖像識別、語言處理、自動駕駛、智能推薦…承載AI集群的基礎設施我們稱之為“智算中心”,本文將為大家介紹互聯(lián)網(wǎng)智算架構的一些知識。
大模型
機器學習(ML)是人工智能中很重要一部分,而深度學習(DL)則是機器學習中很重要的組成。但是在2020年以后,越來越多的業(yè)務開始應用Foundation Models,也被稱為“大模型”。
下圖是ML/DL的處理流程示例:
對比ML,DL將諸多算法統(tǒng)一成神經網(wǎng)絡算法,包括CNN(卷積神經網(wǎng)絡)、RNN(循環(huán)神經網(wǎng)絡)以及GNN(圖形神經網(wǎng)絡)等,不同的神經網(wǎng)絡模型在不同的訓練場景能帶來不一樣的效果。
DL的另外一個升級點就在于數(shù)據(jù)預處理階段:業(yè)務產生的帶標簽的數(shù)據(jù)是極其缺乏的,更多的數(shù)據(jù)是來自互聯(lián)網(wǎng)上的無標簽數(shù)據(jù),此時需要一個模型進行數(shù)據(jù)的預處理或者無標簽訓練,我們熟知的BERT、GPT-3、MT-NLG…就是這種預訓練模型。
大模型往往以模型參數(shù)多、神經元數(shù)量多、神經網(wǎng)絡層數(shù)多而著名,在這些因素的加持下,“大規(guī)模數(shù)據(jù)+大模型”的模式越來越多得被應用到諸多互聯(lián)網(wǎng)公司的智算架構中。
分布式部署
“大模型”究竟有多大?我們通過一個例子來感受一下:
OpenAI發(fā)布的GPT-3,一經面世震驚AI界,它包含1750億個參數(shù),這讓神經網(wǎng)絡之父Geoffrey Hinton不禁感嘆“鑒于 GPT-3 在未來的驚人前景,可以得出結論,生命、宇宙和萬物的答案,就只是 4.398 萬億個參數(shù)而已”。然而完整訓練一次GPT-3所耗費的算力也是驚人的,按照NVIDIA的數(shù)據(jù):訓練一次大型GPT-3,使用2萬顆A100需要消耗5天時間,使用2萬顆H100也需要消耗19個小時,整體消耗算力可達10EFlops-Days!這顯然不是一顆GPU或者一臺GPU節(jié)點所能承載的,因此分布式成為AI集群的主流部署模式。
梯度下降是AI訓練中進行參數(shù)迭代的最常用手段,正常來講我們會把所有資料集N計算一次算出一個Loss,但是這樣的做法耗時耗力且結果一般。因此實際訓練中,我們會把N劃分成若干的子集,我們稱之為Batch。通過一次Batch運算計算出一個Loss,根據(jù)這個Loss完成一次參數(shù)迭代,然后進行下一個Batch運算,依次進行…直到所有Batch運算完成。這樣所有的Batch都過完一次,我們稱之為1 epoch。整個過程如下圖所示:
以上是模型訓練的一個邏輯思路,然而實際的集群中需要充分利用好GPU資源,以高效率、高利用率以及高準確率的準則完成AI訓練。
那么真實的AI分布式集群是怎樣的呢,請看下圖:
這里邊涉及三個概念:模型并行、數(shù)據(jù)并行以及流水并行。根據(jù)算法的大小,可以選擇性地采用其中一種或兩種并行方式,但是“大模型”訓練往往都會應用到三種并行方式。我們會將這個AI集群劃分為若干Stage,每個Stage對應一個邏輯上的Batch,每個Stage由若干臺GPU節(jié)點組成。
數(shù)據(jù)并行:相同的模型分布在同一個Stage的不同GPU節(jié)點上,在不同的節(jié)點上使用不同的數(shù)據(jù)進行訓練。模型并行:在某GPU節(jié)點將模型切分到不同的GPU卡上,減少單卡參數(shù)量。流水并行:基于模型并行,一個batch結束前開始下一個batch,以充分利用計算資源,減少時間空隙。
數(shù)據(jù)通信
在一個GPU節(jié)點內部,不同GPU卡上的張量切片需要匯總,這部分數(shù)據(jù)通信依靠Nvlink進行;在一個Stage集群中,不同GPU節(jié)點之間的模型參數(shù)需要同步,這部分數(shù)據(jù)通信需要依靠外部網(wǎng)絡;不同Stage之間需要進行Forward pass和Backward pass的梯度傳遞,也需要依靠外部網(wǎng)絡。接下來我們依次介紹一下不同階段的數(shù)據(jù)通信情況。
1.GPU節(jié)點內部通信
GPU節(jié)點內部的通信分為兩種情況,一種是GPU卡之間的通信,這部分數(shù)據(jù)通信當前主要是通過NVlink實現(xiàn)。
上圖展示的是HGX A100 8-GPU 的GPU Baseboard,8塊A100 GPU通過NVlink實現(xiàn)高速互通。
GPU節(jié)點內部通信另外一種情況是GPU與CPU、內存、硬盤、網(wǎng)卡之間的通信,此時就需要對整個GPU節(jié)點架構進行多方維度的考慮和設計。我們以H3C R5500 G5為例進行介紹:
H3C UniServer R5500 G5是H3C推出的基于HGX A100 8-GPU模塊完全自主研發(fā)的6U、2路GPU服務器,該服務器適用于虛擬化、高性能計算(HPC)、內存計算、數(shù)據(jù)庫、深度學習和超大規(guī)格并行訓練等計算密集型場景,具有計算性能高、功耗低、擴展性強和可靠性高等特點,易于管理和部署,可滿足高性能超大規(guī)模并行訓練應用。
我們一起看一下該GPU服務器的拓撲設計:
服務器節(jié)點中內嵌多組PCIe Switch,可以實現(xiàn)GPU卡與其他組件的高速互聯(lián):與Slot 11-18的網(wǎng)卡互聯(lián)、與NVMe Slot的硬盤的高速互聯(lián),GPU卡能夠快速訪問到放置在NVMe硬盤中的Batch信息。如此一套架構設計,實現(xiàn)了GPU節(jié)點內各組件的高速互聯(lián),也正因如此,該產品在互聯(lián)網(wǎng)主流AI場景中的算力表現(xiàn)極為優(yōu)秀:
新華三可以為互聯(lián)網(wǎng)公司提供多樣化、定制化的AI解決方案:
2.GPU節(jié)點外部通信
上邊我們談到的AI分布式部署集群里,數(shù)據(jù)并行以及流水并行都需要不同GPU節(jié)點之間數(shù)據(jù)的高速互訪。數(shù)據(jù)并行主要解決的是梯度匯總的問題,流水并行則解決的是梯度傳播的問題。
梯度匯總比較好理解,在Stage內部是采用不同的數(shù)據(jù)對同一個模型分段進行訓練,訓練完成后該Stage輸出的是所有GPU節(jié)點匯總的參數(shù)信息。
說到梯度傳播,就必須要說一下模型訓練中常用的反向傳播:
如圖所示,在模型訓練中我們會首先定義Loss函數(shù),θ則是所有參數(shù)的合集,因此模型的訓練就相當于我們找到一個θ集,可以讓Loss函數(shù)值最小。我們將模型切分若干個C,因此找到所有C的最小值求和便是L的最小值。求最小值的過程也可以看成微分計算的過程:以θ中的w參數(shù)為例,?C/?w便是微分計算,我們將?C/?w拆分成?z/?w*?z/?w,此時?z/?w就是一個正向梯度的過程,而?z/?w則是一個反向梯度的過程。之所以這樣做,是因為正常計算流程需要把多層神經網(wǎng)絡計算完成后才能進行一次正向求導,這樣會極大降低效率,而反向梯度的應用,會使得我們求解Loss函數(shù)變得更為高效。
以上就是反向梯度的一個簡介,我們可以看到,整個過程中同層神經網(wǎng)絡或者不同層神經網(wǎng)絡之間一直都在進行數(shù)據(jù)傳輸或者參數(shù)傳輸,這些數(shù)據(jù)通信大部分都是跨計算節(jié)點進行的。因此,為了保障模型訓練效率,需要給AI集群構建一個低延時的高性能網(wǎng)絡。在以太網(wǎng)領域,這個高性能網(wǎng)絡就是RoCE網(wǎng)絡,由于篇幅原因,就不在這展開RoCE的介紹了。
結合在網(wǎng)絡領域的探索,我們設計了一套智算中心無損網(wǎng)絡整體拓撲:
該架構整體可分為以下幾個區(qū)域:智算資源池、分布式存儲資源池、通用計算資源池、數(shù)據(jù)傳輸網(wǎng)以及運維管理中心。其中智算資源池又分為參數(shù)交換&梯度傳播網(wǎng)、樣本接入網(wǎng),這兩部分都需要使能RoCE,打造低延時無丟包高性能網(wǎng)絡,從而保障AI集群的高效率。
在互聯(lián)網(wǎng)行業(yè)中,大規(guī)模、高吞吐是主流,因此在智算資源池的網(wǎng)絡設計中,互聯(lián)網(wǎng)有其獨到的設計:
整體組網(wǎng)分為Spine/Leaf/TOR三層:在100G Pod中,Spine采用S9825-64D設備,TOR采用S9820-8C/S9820-8M/S9855-48CD8D設備,Leaf采用S9825-64D/S9820-8C/S9820-8M設備;在200G Pod中,Spine和Leaf采用S9825-64D設備,TOR采用S9820-8C/S9820-8M/S9855-24B8D設備,S9820款型采用400G一分二的形式。
與此同時,部署一個RoCE網(wǎng)絡也絕非易事,需要結合不同的業(yè)務流特征靈活調整Buffer水線,否則難以達到最佳效果,為此H3C推出了SeerFabric智能無損解決方案,除了解決基本的RoCE自動化、RoCE可視、RoCE分析以及RoCE調優(yōu)問題,還提供AI ECN智能調優(yōu)模塊:
通過SeerFabric可以降低部署RoCE網(wǎng)絡的門檻,提高部署效率,配合H3C豐富多樣的400G/200G/100G網(wǎng)絡產品,可以最大的釋放網(wǎng)絡的潛力,提高AI集群的運行效率。
AI框架
前邊我們聊完了整個AI集群的大致架構,然而要知道,充分調動如此龐大規(guī)模的AI集群絕非易事。整個系統(tǒng)的高效運行如果都需要我們自己去考慮,這會占用開發(fā)人員太多精力,如同云計算時代出現(xiàn)OpenStack、容器時代出現(xiàn)kubernetes一樣,AI時代也擁有它專屬的操作系統(tǒng):AI框架。
AI框架是 AI算法模型設計、訓練和驗證的一套標準接口、特性庫和工具包,集成了算法的封裝、數(shù)據(jù)的調用以及計算資源的使用,同時面向開發(fā)者提供了開發(fā)界面和高效的執(zhí)行平臺,是現(xiàn)階段AI算法開發(fā)的必備工具。信通院給出了一個標準的AI框架應該具備的能力:
業(yè)內比較知名的AI框架有TensorFlow和PyTorch,產業(yè)界傾向于TensorFlow,學術界則傾向于PyTorch。這兩個框架并非完美的,業(yè)界為了補充某些領域的缺陷還在不斷推出各種各樣的AI框架,我們期待最終能夠有這樣一個AI框架可以一統(tǒng)江湖,可以將各種能力場景都集合在內。這部分的知識大家感興趣也可以自己去探索,能夠更容易讓我們理解AI的運行過程。
展望
人工智能發(fā)展至今,雖然在算法、算力、數(shù)據(jù)這三大馬車方面的發(fā)展趨勢猛進,然而AI真正要賦能產業(yè)、賦能社會還有許多路要走。比如在工程層面:需要考慮各企業(yè)框架的適用性、需要考慮全生命周期的維護、需要考慮AI的自動化運維。再比如在安全層面:需要考慮AI領域的可信計算、需要考慮安全與性能的平衡…
H3C愿意成為各位AI路上緊密的合作伙伴,同大家一起完善AI產業(yè)!





