加载中...

NCCL(NVIDIA Collective Communications Library,常读作 nickel)是 NVIDIA 开发的 GPU 集合通信库,实现了 AllReduce、AllGather、ReduceScatter、Broadcast 等集合通信原语,针对 NVLink、PCIe、InfiniBand 等互连拓扑自动选择最优通信算法。
NCCL 会探测节点内与节点间的硬件拓扑,构建环形(Ring)或树形(Tree)等通信结构,把大消息切分成块流水传输,以充分利用聚合带宽;通信内核直接运行在 GPU 上,可与计算内核重叠执行。
数据并行训练中,各 GPU 需要在每步对梯度求平均,这一操作几乎都由 NCCL 的 AllReduce 完成。PyTorch、TensorFlow、DeepSpeed、Megatron-LM 等主流框架的分布式后端均默认使用 NCCL。
AMD 提供了接口兼容的 RCCL,微软等厂商也基于 NCCL 思想开发了 MSCCL 等可定制通信库。理解 NCCL 的拓扑与算法,是排查大规模训练通信瓶颈的基本功。

登录 后参与讨论
暂无讨论,来发表第一条评论吧