引言
NCCL(NVIDIA Collective Communications Library)是 GPU 集群上集合通信的标准库,为大模型分布式训练提供高效的 AllReduce、AllGather、ReduceScatter 等操作。
集合通信原语详解
AllReduce:所有 GPU 的数据规约后广播到所有 GPU,是数据并行的核心操作。
AllGather:所有 GPU 的数据收集到所有 GPU,用于张量并行中的激活值同步。
ReduceScatter:规约后按 GPU 分发,用于流水线并行中的梯度聚合。
NCCL 的路由选择
NCCL 根据通信规模和拓扑自动选择算法:Ring、Tree、NVLink、P2P 等。跨机通信时,NCCL 会在 NVLink 与 RDMA 之间选择最优路径。
性能调优实践
关键调优参数包括:NCCL_ALGO(算法选择)、NCCL_PROTO(协议选择)、NCCL_BUFFSIZE(缓冲区大小)、NCCL_NTHREADS(线程数)。合理配置可显著提升通信效率。
总结
NCCL 是大模型训练的通信基石,理解其原理与调优方法对工程师至关重要。