01
NCCL概述
什么是NCCL,为什么需要NCCL,NCCL在分布式训练中的角色。
基础概念
02
环境准备
NCCL安装与版本选择,CUDA与NCCL版本兼容性,环境变量基础配置。
安装兼容性
03
硬件拓扑与网络
服务器网络拓扑(PCIe、NVLink、InfiniBand),Ring与Tree算法简介。
拓扑算法
04
NCCL Benchmarks
NCCL-Tests编译与运行,理解allreduce、allgather、reduce_scatter等操作。
压测集合通信
05
吞吐指标解读
总线带宽(Bus BW)与算法带宽(Algo BW),吞吐量(GB/s)与延迟(us)。
指标性能
06
单机多卡压测
单机8卡A100/H100的NCCL-Tests压测,理解NVLink拓扑对吞吐的影响。
单机NVLink
07
多机多卡压测
跨节点InfiniBand/RoCE压测,理解网络带宽与NIC数量关系。
多机IB/RoCE
08
NCCL环境变量调优(上)
NCCL_IB_DISABLE、NCCL_SOCKET_IFNAME、NCCL_NET_GDR_LEVEL。
环境变量GDR
09
NCCL环境变量调优(下)
NCCL_MIN_NCHANNELS、NCCL_MAX_NCHANNELS、NCCL_NTHREADS。
通道线程
10
NCCL算法选择
Ring、Tree、NVLS(NVLink SHARP)算法对比与选择策略。
算法NVLS
11
NVLink与NVSwitch
NVLink带宽与拓扑,NVSwitch全互联架构,对吞吐的影响。
NVLinkNVSwitch
12
InfiniBand调优
IB网卡配置,GDR(GPU Direct RDMA)开启与验证,MTU设置。
IBGDR
13
RoCE调优
RoCE vs IB,PFC与ECN配置,流控与拥塞控制对吞吐的影响。
RoCE流控
14
NCCL通信量分析
理解消息大小(Message Size)对吞吐的影响,小消息与大消息的差异。
消息大小吞吐
15
多进程与多线程
NCCL在多进程(torchrun)与多线程环境下的行为差异。
进程线程
16
NCCL错误排查
常见错误(初始化失败、超时、连接断开),日志分析与调试技巧。
调试日志
17
NCCL与PyTorch DDP
DDP中NCCL后端的使用,bucket size与通信重叠优化。
PyTorchDDP
18
NCCL与DeepSpeed
ZeRO优化器中的NCCL通信,梯度累积与通信压缩。
DeepSpeedZeRO
19
NCCL与Megatron-LM
张量并行与流水线并行中的NCCL通信模式。
Megatron并行
20
NCCL Profiling
使用nsys(NVIDIA Nsight Systems)分析NCCL通信耗时。
Profilingnsys
21
NCCL拓扑感知
NCCL_TOPO_DUMP文件解读,自定义拓扑文件优化通信路径。
拓扑自定义
22
NCCL网络融合
NCCL_NET_PLUGIN与自定义网络插件,IB与TCP混合使用。
插件混合
23
NCCL内存管理
NCCL缓存机制,用户缓冲区注册,内存池调优。
内存缓存
24
NCCL多流与异步
多CUDA流并发通信,NCCL操作与计算重叠。
多流异步
25
NCCL集合操作深入
Alltoall、ReduceScatter、Gather等高级集合操作。
高级集合
26
大规模集群挑战
万卡集群的通信瓶颈,拓扑分层与分层通信。
大规模瓶颈
27
性能基准测试方法论
控制变量法,多次运行取中位数,排除干扰因素。
方法论基准
28
NCCL与GPU Direct Storage
GPU直连存储,NCCL与GDS结合的数据加载优化。
GDS存储
29
NCCL未来演进
NCCL 2.x vs 3.x,SHARP v3,NVLink 5.0与未来趋势。
演进SHARP
30
综合实战
从零搭建NCCL吞吐压测与调优流水线,输出调优报告。
实战流水线