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。 |