靈駿提供了統一的網路通訊距離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樹圖。
