阿里 HPN:針對大規模 LLM 訓練的萬卡集群
一、背景
之前的文章中我們具體介紹了萬卡 GPU 集群中的網絡拓撲以及在萬卡 GPU 集群中進行大規模 LLM 訓練面對的挑戰和解決方案;也進一步介紹了阿里云的集合通信調度框架 C4 和 C4 底層的阿里云新一代智算集群網絡架構 HPN 7.0。不過上述 HPN 7.0 的相關介紹都是基于阿里官網或者之前的公開分享,最近阿里正式公布了 HPN 相應的 Paper,與我們之前了解到的稍有不同,此處進行相應補充。有關雙上聯、雙平面介紹這里不再贅述。
對應的論文:??https://ennanzhai.github.io/pub/sigcomm24-hpn.pdf??
上面提到的幾個介紹可以參考:
- ??萬卡 GPU 集群互聯:硬件配置和網絡設計??
- ??萬卡 GPU 集群實戰:探索 LLM 預訓練的挑戰??
- ??阿里 C4:通信驅動加速大規模并行訓練效率??
- ??剖析大規模 GPU 集群:針對 LLM 場景的挑戰和優化??
- ??HPN 7.0:阿里云新一代萬卡集群網絡架構??
二、拓撲
如下圖所示為我們之前介紹的拓撲方式(圖片來自 Revolutionizing Data Center Networks: Alibaba’s SONiC Journey),是一個完全無收斂的方案。對于下圖的拓撲中:
- 每個 Segment 有 128 個節點,共 1024 GPU(單層千卡)。
- 每個 Pod 有 8 個 Segment,也就是每個 Pod 有 8192 GPU。
- 總共有 128 個 Pod,也就是可以支持 1,048,576 個 GPU(三層 100 萬)。?
如下圖 Figure 7 所示,在 HPN Paper 中的拓撲方式與我們之前看到的稍有不同(雙上聯、雙平面等思路都是完全一樣的),我們這里簡單進行介紹:
- 下面的拓撲中包含了前向網絡(Frontend Network)和后向網絡(Backend Network):
后向網絡:有收斂,使用每個節點 9 個 NIC 中的 NIC1-NIC9 這 8 個互聯,主要用于大規模分布式訓練,并且一個 GPU 連接一個 NIC。
前向網絡:無收斂,使用每個節點 9 個 NIC 中的 NIC0 互聯。為了支持更多的場景,比如訓練/推理混部,模型傳輸,數據加載等場景。
- 后向網絡依然是 3 層:
- Segment:依然采用雙上聯方式,一個 NIC 上有 2 個 200Gbps 的 Port(PS:沒有采用之前介紹的 2 個 200 Gbps NIC 的方式),會連接兩個不同的 ToR 交換機。
一個 Segment 里面依然有 16 個 ToR 交換機,每個交換機 128 個 400Gbps Port,但是有 60 連接 Spine 交換機,68 個連接節點的 NIC。
68 個 400Gbps Port 可以對應 136 個 200Gbps NIC Port,也就是一個 Segment 里面 136 個節點,共 138*8=1104 個 GPU。
實際上 136 個節點中有 8 個是備份,以便節點故障(比如 GPU、網卡、硬盤、CPU 等)時可以快速替換。實際使用 128 個節點,共 1024 GPU,對應的網絡收斂比為 (1024*400)/(60*400*16)=1.067:1。
Pod:一個 Pod 中的 Segment 從 8 個變成 15 個,所以最多能支持 15*1024=15K GPU。
- 在 Spine(Agg)交換機上采用 15:1 的收斂比,因此可以有更多的下行 Port 連接 Leaf 交換機。
- 具體來說,每個 Spine 交換機有 120 個 Port 連接 Leaf 交換機,也就可以連接 120/8=15 個 Segment(每個 Segment 里面同一平面的 8 個 Leaf 交換機連接到同一個 Spine 交換機)。
- Cluster:一個 Cluster 可以包含多個 Pod,通過 Core 交換機連接。
- Spine(Agg) 交換機有 8 個 Port 連接 Core 交換機。這個是為了支持更大規模的 GPU,比如 8 個 Pod,則可以支持 120K GPU。
- 在大規模模型訓練時,可以將 PP(Pipeline Parallelism)中的不同切片放在不同的 Pod,這樣跨 Pod 的通信量比較小,也就不容易出現瓶頸。?
三、附錄
3.1 單 Segment 千卡
如下圖 Figure 6 所示,生產環境中 96.3% 的訓練任務需要的 GPU 數都不超過 1024 GPU,也就是都可以放在 1 個 Segment 里,這樣通信是非常高效的,不同 GPU 通信最多只用經過 1 跳即可:
3.2 多 Pod 互聯
HPN 中在 Core 交換機上采用 15:1 的收斂比,也就是有額外 87.5% 的 Port 可以用于同一個 Pod 中的 Segment。所以同一個 Pod 的 Segment 從 8 個變成 15 個,GPU 數從 8192 增加到 15360,可以支持更多的任務在同一 Pod 內執行。同一個 Pod 內的 GPU 通信最多只用通過 3 跳即可,而如果是 3 Tier 網絡,則最多可能需要 5 跳。
那么為什么沒有直接搞成 2 Tier 網絡呢?主要是還需考慮到技術的演進,模型在不斷擴大,訓練的數據也越來越多,相應需要的 GPU 也就越來越多,這就很難說是否未來的某一天需要超過 15K GPU 來訓練大模型。與此同時,大模型訓練通常會使用 DP(Data Parallelism)、TP(Tensor Parallelism)和 PP(Pipeline Parallelism)技術,而 PP 相對 DP 和 TP 的通信量要小得多,如下圖 Table 3 所示(GPT-175B,TP=8,PP=8,DP=512),因此就可以考慮為其提供較低的通信帶寬,比如跨 Pod。
3.3 大規模預訓練對比
如下圖 Figure 20 所示為作者原來使用的 DCN+ 集群拓撲,采用無收斂設計。一個 Segment 中只有 16 個節點,128 個 GPU,一個 Pod 只有 512 個 GPU:
作者用一個相同的 LLM 預訓練任務進行了對比,該任務需要 2300+ GPU,共 288+ 個節點,訓練幾個月。在 DCN+ 中需要至少 5 個 Pod,19 個 Segment,而在 HPN 中只需要 3 個 Segment。如下圖 Figure 15所示:
- 15a:端到端訓練吞吐提升 14.9%。
- 15b:跨 Segment 流量平均降低 37%。
- 15c:Agg 交換機下行隊列長度大幅降低。
?
四、參考鏈接
- ??https://ennanzhai.github.io/pub/sigcomm24-hpn.pdf??
- ??https://sonicfoundation.dev/revolutionizing-data-center-networks-alibabas-sonic-journey/??
本文轉載自 ??AI閑談??,作者: AI閑談
