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