PAI靈駿提供了統一的網絡通信距離NCD(Network Communication Distance)查詢接口,供您對GPU節點(或網卡)間的通信距離進行查詢,以實現更優的任務調度,獲得最佳的訓練性能。本文為您介紹NCD的基本概念、使用NCD的原因以及如何使用NCD。
注意事項
NCD只是GPU實例(節點或網卡)之間底層物理網絡轉發開銷的參考,而非轉發時延的絕對值。
當GPU節點配置多張網卡時,兩個GPU節點之間的NCD等于兩GPU節點各自網卡間NCD的最小值。即:
NCD(Node1,Node2)=Min(NCD(Node1.LNI_i,Node2.LNI_j ))
,其中i表示Node1的網卡數量,j表示Node2的網卡數量。NCD僅反映了從物理交換機網絡轉發的時延參考,而不考慮NVLINK等因素。因此,當GPU節點通過多個網卡實現多軌連接(連接到不同的Leaf交換機)時,則同一GPU節點上不同網卡間的NCD值為2。
控制臺的NCD樹圖僅展示用于參數面通信的網卡,即除第一張網卡(或彈性網卡)以外的其它網卡。
NCD基本概念
NCD是對GPU節點物理網卡間、跨物理網絡通信距離的抽象。兩個GPU節點(或網卡)之間的NCD越小,表示兩個GPU節點(或網卡)之間的網絡通信時延越低,通信開銷越小。典型的3層物理網絡架構圖如下:
其中:
core層交換機負責同core下跨spine的流量轉發。
spine層交換機負責同spine下跨leaf的流量轉發,并上連到core交換機。
leaf層交換機負責GPU節點的接入,并上連到spine層交換機。
GPU節點(或網卡)之間的通信,每多跨1層物理網絡交換機,則NCD增加1。
以上圖中的GPU節點(或網卡)間的通信為例,根據上述規則計算NCD如下:
NCD(Node1,Node2)=1。
NCD(Node1,Node3)=2 。
NCD(Node1,Node5)=3。
所有需要跨core層交換機才能完成通信的GPU節點之間的NCD為10。
特殊說明如下:
在非多軌網絡場景下,GPU節點間的NCD與GPU節點網卡的NCD相同。但在多軌連接場景下,由于同一個GPU節點的網卡連接到不同組ASW(例如有8個上連),因此兩個GPU節點之間以及不同的靈駿網卡之間可能會出現NCD不同的情況,例如:NCD(GPU1.bond0, GPU2.bond0)=1
,NCD(GPU1.bond0,GPU2.bond1) =2
。
為幫助您更好地理解GPU節點間的相互關系,針對上述場景采取歸約原則:NCD(GPU1, GPU2)= min(NCD(GPU1.anyLNI, GPU2.anyLNI))
,即兩個GPU節點之間的NCD,為任意靈駿網卡的NCD的最小值。
使用NCD的原因
存在的問題
在特定物理網絡拓撲下,不同GPU節點之間的通信時延和可能產生的跨多跳交換機轉發引發的哈希不均,都可能導致不同GPU節點之間的通信性能存在較大差異,進而進一步影響模型訓練的吞吐差異。
解決方法
如上圖所示,假設通信模型遵循Node1->Node2->Node3->Node4的順序,則Placement-1的任務布局明顯優于Placement-2。因為Placement-1中,只需經過1次Spine層的轉發,而在Plancement-2中,需要3次跨Spine層的轉發。
基于上述訴求,PAI靈駿提供了統一的NCD查詢接口,供用戶對GPU節點(或網卡)間的通信距離進行查詢,以實現更優的任務調度,獲得最佳的訓練性能。
通過控制臺查詢NCD
在靈駿控制臺基于靈駿集群,提供了該集群中所有GPU節點的NCD樹圖。該樹圖以最簡潔易讀的方式,抽象呈現了當前靈駿集群的物理網絡拓撲。具體查詢方法如下:
登錄靈駿控制臺。
在左側導航欄,選擇
。在物理拓撲區域中,在下拉列表中選擇不同的靈駿網段,單擊查詢,即可查看對應的NCD樹圖。
說明NCD樹圖僅展示機尾網卡,即除第一張網卡以外的其他網卡。
您也可以在靈駿網卡下拉列表中選擇網卡,并單擊查詢,即可查看僅包含該網卡的NCD樹圖。
相關文檔
您還可以使用以下API接口,完成NCD的相關操作:
接口 | 說明 |
查詢靈駿集群的NCD樹圖。 | |
查詢相同靈駿集群內兩個GPU節點或網卡間的NCD。 | |
查詢與指定GPU節點或指定網卡,通信距離不超過指定NCD的GPU節點列表。NCD的取值范圍為1~10。 |