? ? ? 高性能計算場景的流量關(guān)注靜態(tài)時延的同時需要支持超大規(guī)模組網(wǎng)。然而傳統(tǒng)的?CLOS?架構(gòu)作為主流網(wǎng)絡(luò)架構(gòu),主要關(guān)注通用性,犧牲了時延和性價比。業(yè)界針對該問題開展了多樣的架構(gòu)研究和新拓?fù)涞脑O(shè)計,F(xiàn)at-Tree、Dragonfly、Torus是幾種常見的網(wǎng)絡(luò)拓?fù)?,F(xiàn)at-Tree架構(gòu)實現(xiàn)無阻塞轉(zhuǎn)發(fā),Dragonfly架構(gòu)網(wǎng)絡(luò)直徑小,Torus?具有較高的擴展性和性價比。
Fat-Tree胖樹架構(gòu)
傳統(tǒng)的樹形網(wǎng)絡(luò)拓?fù)渲校瑤捠侵饘邮諗康?,樹根處的網(wǎng)絡(luò)帶寬要遠小于各個葉子處所有帶寬的總和。而Fat-Tree則更像是真實的樹,越到樹根,枝干越粗,即:從葉子到樹根,網(wǎng)絡(luò)帶寬不收斂,這是Fat-Tree能夠支撐無阻塞網(wǎng)絡(luò)的基礎(chǔ)。Fat-Tree是使用最廣泛的拓?fù)渲?,它是各種應(yīng)用程序的一個很好的選擇,因為它提供低延遲并支持各種吞吐量選項——從非阻塞連接到超額訂閱,這種拓?fù)漕愋妥畲笙薅鹊靥岣吡烁鞣N流量模式的數(shù)據(jù)吞吐量。
Fat-Tree架構(gòu)采用1:1無收斂設(shè)計,F(xiàn)at-Tree架構(gòu)中交換機上聯(lián)端口與下聯(lián)端口帶寬、數(shù)量保持一致,同時交換機要采用無阻塞轉(zhuǎn)發(fā)的數(shù)據(jù)中心級交換機。Fat-Tree架構(gòu)可以通過擴展網(wǎng)絡(luò)層次提升接入的GPU節(jié)點數(shù)量。
Fat-Tree架構(gòu)的本質(zhì)是無帶寬收斂,因此,云數(shù)據(jù)中心的Spine-leaf組網(wǎng)在無收斂的情況下,也可以認(rèn)為是遵從了Fat-Tree架構(gòu)理念。
如果交換機的端口數(shù)量為n,則:兩層Fat-Tree架構(gòu)能夠接入n2/2張GPU卡,以40端口的InfiniBand交換機為例,能夠接入的GPU數(shù)量最多可達800個。三層Fat-Tree架構(gòu)能夠接入n(n/2)*(n/2)張GPU卡,以40端口的InfiniBand交換機為例,能夠接入的GPU數(shù)量最多可達16000個。
但是,F(xiàn)at-Tree架構(gòu)也存在明顯的缺陷:
網(wǎng)絡(luò)中交換機與服務(wù)器的比值較大,需要大量的交換機和鏈路,因此,在大規(guī)模情況下成本相對較高。構(gòu)建Fat-Tree需要的交換機數(shù)量為5M/n(其中,M是服務(wù)器的數(shù)量,n是交換機的端口數(shù)量),當(dāng)交換機的端口數(shù)量n較小時,連接Fat-Tree需要的交換機數(shù)量龐大,從而增加了布線和配置的復(fù)雜性;
拓?fù)浣Y(jié)構(gòu)的特點決定了網(wǎng)絡(luò)不能很好的支持One-to-All及All-to-All網(wǎng)絡(luò)通信模式,不利于部署?MapReduce、Dryad等高性能分布式應(yīng)用;
擴展規(guī)模在理論上受限于核心層交換機的端口數(shù)目。
Fat-Tree架構(gòu)的本質(zhì)是CLOS架構(gòu)網(wǎng)絡(luò),主要關(guān)注通用性和無收斂,犧牲了時延和性價比。在構(gòu)建大規(guī)模集群網(wǎng)絡(luò)時需要增加網(wǎng)絡(luò)層數(shù),需要更多的互聯(lián)光纖和交換機,帶來成本的增加,同時隨著集群規(guī)模增大,網(wǎng)絡(luò)跳數(shù)增加,導(dǎo)致通信時延增加,也可能會無法滿足業(yè)務(wù)低時延需求。
Dragonfly架構(gòu)
Dragonfly是當(dāng)前應(yīng)用最廣泛的直連拓?fù)渚W(wǎng)絡(luò)架構(gòu),它由John Kim等人在2008年的論文Technology-Driven, Highly-Scalable Dragonfly Topology中提出,它的特點是網(wǎng)絡(luò)直徑小、成本較低,已經(jīng)在高性能計算網(wǎng)絡(luò)中被廣泛應(yīng)用,也適用于多元化算力的數(shù)據(jù)中心網(wǎng)絡(luò)。
Dragonfly網(wǎng)絡(luò)如下圖所示:
Dragonfly的拓?fù)浣Y(jié)構(gòu)分為三層:Switch層、Group層、System層。
Switch層:包括一個交換機及其相連的P個計算節(jié)點;
Group層:包含a個Switch層,這a個Switch層的a個交換機是全連接(All-to-all)的,換言之,每個交換機都有a-1條鏈路連接分別連接到其他的a-1臺交換機;
System層:包含g個Group層,這g個Group層也是全連接的。
對于單個Switch交換機,它有p個端口連接到了計算節(jié)點,a-1個端口連接到Group內(nèi)其他交換機,h個端口連接到其他Group的交換機。因此,我們可以計算得到網(wǎng)絡(luò)中的如下屬性:
每個交換機的端口數(shù)為k=p+(a-1)+h
Group的數(shù)量為g=ah+1
網(wǎng)絡(luò)中一共有N=ap(ah+1)?個計算節(jié)點
如果我們把一個Group內(nèi)的交換機都合成一個,將它們視為一個交換機,那么這個交換機的端口數(shù)為k‘=a(p+h)。
不難發(fā)現(xiàn),在確定了?p、a、h、g四個參數(shù)之后,我們就可以確定一個Dragonfly的拓?fù)?,因此,一個Dragonfly的拓?fù)淇梢杂胐fly(p,a,h,g)?來表示,一種推薦的較為平衡的配置是方法是:a=2p=2h。
Dragonfly的路由算法主要有以下幾種:
最小路由算法(Minimal Routing):由于拓?fù)涞男再|(zhì),Minimal Routing中最多只會有1條Global Link和2條Local Link,也就是說最多3跳即可到達。在任由兩個Group之間只有一條直連連接時(即g=ah+1時),最短路徑只有一條。
非最短路徑的路由算法(Non-Minimal Routing):有的地方叫Valiant algorithm,簡寫為VAL,還有的地方叫Valiant Load-balanced routing,簡寫為VLB。隨機選擇一個Group,先發(fā)到這個Group然后再發(fā)到目的地。由于拓?fù)涞男再|(zhì),VAL最多會經(jīng)過2條Global Link和3條Local Link,最多5跳即可到達。
自適應(yīng)路由(Adaptive Routing):當(dāng)一個數(shù)據(jù)包到達交換機時,交換機根據(jù)網(wǎng)絡(luò)負(fù)載信息在最短路徑路由和非最短路徑路由路徑之間進行動態(tài)選路,優(yōu)先采用最短路徑轉(zhuǎn)發(fā),當(dāng)最短路徑擁塞時,通過非最短路徑轉(zhuǎn)發(fā)。因為要獲取到全局網(wǎng)絡(luò)狀態(tài)信息比較困難,除了UGAL(全局自適應(yīng)負(fù)載均衡路由),還提出了一系列變種自適應(yīng)路由算法,如UGAL-L,UGAL-G等。
上述幾種路由,由于自適應(yīng)路由能夠根據(jù)網(wǎng)絡(luò)鏈路狀態(tài)動態(tài)調(diào)整流量轉(zhuǎn)發(fā)路徑,因此會有更好的性能表現(xiàn)。
Dragonfly為各種應(yīng)用程序(或通信模式)提供了良好的性能,與其他拓?fù)湎啾?,它通過直連模式,縮短網(wǎng)絡(luò)路徑,減少中間節(jié)點數(shù)量。64端口交換機支持組網(wǎng)規(guī)模27萬節(jié)點,端到端交換機轉(zhuǎn)發(fā)跳數(shù)減至3跳。
Dragonfly拓?fù)湓谛阅芎托詢r比方面有顯著的優(yōu)勢。然而,這種優(yōu)勢的實現(xiàn)需要依賴于有效的擁塞控制和自適應(yīng)路由策略。Dragonfly網(wǎng)絡(luò)在擴展性方面存在問題,每次需要增加網(wǎng)絡(luò)容量時,都必須對Dragonfly網(wǎng)絡(luò)進行重新布線,這增加了網(wǎng)絡(luò)的復(fù)雜性和管理難度。
Torus架構(gòu)
隨著模型參數(shù)的增加和訓(xùn)練數(shù)據(jù)的增加,單臺機器算力無法滿足,存儲無法滿足,所以要分布式機器學(xué)習(xí),集合通信則是分布式機器學(xué)習(xí)的底層支撐,集合通信的難點在于需要在一定的網(wǎng)絡(luò)互聯(lián)結(jié)構(gòu)的約束下進行高效的通信,需要在效率與成本、帶寬與時延、客戶要求與質(zhì)量、創(chuàng)新與產(chǎn)品化等之間進行合理取舍。
Torus網(wǎng)絡(luò)架構(gòu)是一種完全對稱的拓?fù)浣Y(jié)構(gòu),具有很多優(yōu)良特性,如網(wǎng)絡(luò)直徑小、結(jié)構(gòu)簡單、路徑多以及可擴展性好等特點,非常適合集合通信使用。索尼公司提出2D-Torus算法,其主要思想就是組內(nèi)satter-reduce->組間all-reduce->組內(nèi)all-gather。?IBM提出了3D-Torus算法。
我們用k-ary n-cube來表示。k是排列的邊的長度,n是排列的維度。
3-ary 3-cube拓?fù)淙缦拢?/p>
以2D-Torus拓?fù)錇槔?,可以將網(wǎng)絡(luò)結(jié)構(gòu)表達成如下的Torus結(jié)構(gòu)。
橫向:每臺服務(wù)器X個GPU節(jié)點,每GPU節(jié)點通過私有協(xié)議網(wǎng)絡(luò)互聯(lián)(如NVLINK);
縱向:每臺服務(wù)器通過至少2張RDMA網(wǎng)卡NIC 0 /NIC 1通過交換機互聯(lián)。
第1步,橫向,先進行主機內(nèi)Ring Scatter Reduce,將主機內(nèi)8張卡上的梯度進行拆分與規(guī)約,這樣經(jīng)過迭代,到最后每個GPU將有一個完整的同維梯度,該塊梯度包含所有GPU中該塊所對應(yīng)的所有梯度的總和;
第2步,縱向,進行主機間X個縱向的?Ring All Reduce,將每臺服務(wù)器的X個GPU上的數(shù)據(jù)進行集群內(nèi)縱向全局規(guī)約;
第3步,橫向,進行主機內(nèi)All Gather,將GPUi[i=0~(X-1)]上的梯度復(fù)制到服務(wù)器內(nèi)的其他GPU上;
Torus網(wǎng)絡(luò)架構(gòu)具有如下優(yōu)勢:
更低的延遲:環(huán)面拓?fù)淇梢蕴峁└偷难舆t,因為它在相鄰節(jié)點之間有短而直接的鏈接;
更好的局部性:在環(huán)面網(wǎng)絡(luò)中,物理上彼此靠近的節(jié)點在邏輯上也很接近,這可以帶來更好的數(shù)據(jù)局部性并減少通信開銷,從而降低時延和功耗。
較低的網(wǎng)絡(luò)直徑:對于相同數(shù)量的節(jié)點,環(huán)面拓?fù)涞木W(wǎng)絡(luò)直徑低于CLOS網(wǎng)絡(luò),需要更少的交換機,從而節(jié)省大量成本。
Torus網(wǎng)絡(luò)架構(gòu)也存在一些不足:
可預(yù)測方面,環(huán)面網(wǎng)絡(luò)中是無法保證的;
易擴展方面:縮放環(huán)面網(wǎng)絡(luò)可能涉及重新配置整個拓?fù)洌赡芨訌?fù)雜和耗時;
負(fù)載平衡方面:環(huán)面網(wǎng)絡(luò)提供多條路徑,但相對Fat-tree備選路徑數(shù)量要少;
故障排查:對于突發(fā)故障的排查復(fù)雜性略高,不過動態(tài)可重配路由的靈活性可以大幅避免事故。
Torus網(wǎng)絡(luò)拓?fù)涑?D/3D結(jié)構(gòu)外,也在向更高維度發(fā)展,Torus高維度網(wǎng)絡(luò)中的一個單元稱之為硅元,一個硅元內(nèi)部采用3D-Torus拓?fù)浣Y(jié)構(gòu),多個硅元可以構(gòu)建更高維的4D/5D/6D-Torus直接網(wǎng)絡(luò)。
審核編輯:黃飛
?
評論