Posts 集群通信
Post
Cancel

集群通信

前言

简述分布式通信相关知识栈(work with ChatGPT)。

总线/通信协议

PCIe

 PCIe 1.0PCIe 2.0PCIe 3.0PCIe 4.0PCIe 5.0PCIe 6.0
Year200320072010201720192021
Transfer per lane(Gbps)2.55.08.016.032.064.0
x16 bandwidth(GB/s)4.08.015.831.563.0121

带宽计算:

\[\text{x16 bandwidth(GB/s)} ≈\text{Transfer\ per\ lane(Gbps)} \times 16 / 8\]

NVLink,是英伟达(NVIDIA)开发并推出的一种总线及其通信协议。NVLink采用点对点结构、串列传输,用于中央处理器(CPU)与图形处理器(GPU)之间的连接,也可用于多个NVIDIA图形处理器之间的相互连接。当前配备并使用NVLink的产品业已发布,多为针对高性能运算应用领域,最早于2016年基于Pascal架构的GP100芯片以及基于该芯片的Tesla P100运算卡,配备有NVlink。

 NV Link 1.0NV Link 2.0NV Link 3.0NV Link 4.0
Year2014201720202022
Transfer per link(GB/s)20+2025+2525+2525+25
Link number461218
Lane number per link8842
Data rate per lan(Gbps)202550100(PAM4)
Total bidirectional bandwidth(GB/s)160300600900

H100芯片采用NVLink 4.0,其中两个H00芯片通过18条NVLink互联,每条link中含2条lane,每条lane支持100Gb/s PAM4的速率,因此双向总带宽为900GB/s。

NVSwitch采用3.0,每个NVSwitch支持64个port,每个port速率为50GB/s。

DGXH100由8颗H100芯片和4颗NVSwitch芯片构成(NVLink数目为:5+4+4+5)。连接结构如下图,图中每个NVSwitch的另一侧与5个800G OSFP光模块相连。以左侧第一个Switch为例,其与GPU相连侧的单向总带宽为4Tbps(20NVLink\200Gbps),与光模块相连侧的总带宽也为4Tbps(5\800Gbps),形成 非阻塞(non-blocking)网络 。注意,光模块中的带宽指的是单向带宽,AI芯片中一般指双向带宽。

img

HCCS

昇腾 910 AI处理器是华为研发的一款高性能AI处理器。其内部的处理器之间采用HCCS(例如:A0~A3为一个HCCS)方式连接。HCCS(Huawei Collective Communication Server)是HCCL(Huawei Collective Communication Library)的硬件形态,HCCL提供了深度学习训练场景中服务器间高性能集合通信的功能。

对于训练系列产品,每台设备具备两个HCCS环共8颗处理器(A0~A7)。每个HCCS存在4颗处理器,同一HCCS内处理器可做数据交换,不同HCCS内处理器不能通信。即同一Pod分配的昇腾 910 AI处理器(若小于或等于4)必须在同一个HCCS环内,否则任务运行失败。昇腾910 AI处理器的互联拓扑如下图,其中K0~K3为鲲鹏处理器。

img

对Atlas 200T A2 Box16异构子框来说,其内部AI处理器之间采用HCCS互联的方式相连接。每台Atlas 200T A2 Box16 异构子框的AI处理器具备两个HCCS互联共16个AI处理器,每个HCCS互联存在8个AI处理器,同一HCCS互联之间可以做数据交换,不同HCCS互联之间的不能通信。即任务分配的Atlas 200T A2 Box16 异构子框的AI处理器(若小于或等于8)必须在同一个HCCS互联内,否则任务运行失败。Atlas 200T A2 Box16 异构子框的互联拓扑图如下图:

img

通信算法

常见的通信元语如下:

  • Point-to-Point Communication:包括Send/Recv,主要完成两个通信节点的通信。
  • Broadcast:将一个设备的数据广播到所有其他设备。
  • AllReduce:将数据从所有设备汇总后广播到每个设备。
  • AllGather:从所有设备收集数据,并将其分发到所有设备。
  • ReduceScatter:归约并将结果分散到多个设备。
  • All-to-All:每个节点(或进程)都向所有其他节点发送数据,同时接收来自所有其他节点的数据。最终,每个节点都会持有从所有其他节点收集的数据,也可以认为是分布式的Transpose

具体的通信元语可以有不同的通信算法实现,如:

  1. Ring:将节点组成一个环形拓扑,每个节点只与相邻的两个节点通信。每个通信步骤中,数据在环中以固定方向传递,并逐步完成规约或分发操作。每个节点的通信量为 $2 \cdot \text{DataSize} / \text{NumNodes}$,通信步数为$P-1$($P$ 为节点数)。
  2. Mesh:将节点按二维或多维网格排列,每个节点仅与上下左右的邻居通信。通信以行和列两个方向分步完成。$O(\sqrt{P}) $通信步数,适合大规模节点。
  3. HDHierarchical Decomposition):分层优化,将通信分为 节点内通信节点间通信 两个层次。节点内通信利用共享内存或高速链路(如NVLink),节点间通信通过网络(如InfiniBand)。能够高效利用带宽:节点内通信速度远高于节点间通信。适用多机多卡场景:深度学习分布式训练、大规模 HPC。
  4. Tree:将节点组织为一个树形拓扑,根节点负责汇聚和分发数据。树的形状可以是二叉树、多叉树等,适配具体通信需求。通信步数为 $O(\log P)$,适合低延迟需求的场景。
特性RingMeshHDTree
拓扑结构环形多维网格分层分解树形
通信复杂度$O(P)$$O(\sqrt{P})$与层次结构相关$O(\log P)$
适用场景小规模通信大规模分布式训练多机多卡、大规模并行小数据量、低延迟
实现复杂度简单较复杂较高中等
优点易实现,通信均衡可扩展,负载平衡高效利用硬件资源通信步数少,低延迟
缺点随节点数增加延迟增加实现复杂,通信步数较多依赖硬件拓扑数据分配需要精确设计

参考材料

NVlink的演进

Large Language Models – the hardware connection

PCIe扫盲–PCIe简介(专家帖转载)

NCCL-知乎

This post is licensed under CC BY 4.0 by the author.

LLMs存储

LLMs位置编码