NVLink SHARP
NVLink SHARP

Infiniband SHARP v3: Multi-tenant support
Infiniband SHARP v3: Multi-tenant support

collnet 是 IB sharp,刚才聊的是 nvlink sharp,是两个东西

IB SHARP

IB网络中也有很多有意思的能力,比如做AllReduce操作时,为了保证网络吞吐尽可能发挥,会在算法层做一些AllReduce实现。AllReduce本身会进行两次操作,比如同一块数据要做两份,但会给集群带来的是数据要在整个网络和集群中进行两次。IB有一个很有意思的特点叫Sharp,即把整个计算卸载到交换机中,对于用户来说,只需要把数据传给交换机,交换机就可以把AllReduce计算完的结果再反馈给我,整个过程能使数据通信的带宽降低、减半,也能使算法翻倍。同时,由于减少跳步之间的次数,可以让通信延迟更加稳定,这也是在大集群中跟英伟达联合使能的一个工作。

CollNet 其实不是一种算法,而是一种自定义的网络通信方式,需要加载额外的插件来使用。说下基于 SHArP 协议的,具体加载方法这个链接里有写。

目前NVIDIA官方的CollNet实现应该是只有基于SHArP的这一种,需要搭配Infiniband以及Infiniband交换机一起食用(yummy),好一个NVIDIA全家桶。怕大家没接触过SHArP,先给大家扫个盲(因为我就没接触过,研究HPC的同学倒是熟得很)。

SHArP 是一个软硬结合的通信协议,实现在了 NVIDIA Quantum HDR Switch 的 ASIC 里。它可以把从各个 node 收到的数据进行求和,并发送回去。再说的通俗一点,通过使用 SHArP,我们把求和(聚合/Reduce,随便怎么叫)的操作交由交换机完成了。这种做法,业界叫做 In-network Computing(在网计算)。用术语展开来讲,就是将计算卸载到网络中进行。

参考:

NVLS,也就是 NVLink SHARP

NCCL AllReduce in AI training with critical communication-intensive operation
NCCL AllReduce in AI training with critical communication-intensive operation

Traditional all-reduce calculation with data-exchange and parallel calculation
Traditional all-reduce calculation with data-exchange and parallel calculation

NVLink SHARP acceleration
NVLink SHARP acceleration

参考:

NCCL 算法选择

NCCL 有多种算法,Ring, Tree, CollnetDirect, CollnetChain, NVLS, NVLSTree 还有一些 protocal, simple, LL 128 等

NCCL 会根据实际的情况计算那种算法更优,从而选择最优算法 https://github.com/NVIDIA/nccl/issues/790