2. AI集群网络基础
要诊断AI集群的网络性能,先得把“数据到底走哪条路”这件事看清楚。一个典型的大模型训练集群里,GPU之间交换梯度、激活值和参数,可能经过三类物理通道:芯片封装内的NVLink、节点内的PCIe/NVSwitch、以及跨节点的InfiniBand或RoCEv2以太网。这三层通道的带宽、延迟和协议语义完全不同,混淆它们会导致诊断方向跑偏。
一、InfiniBand与RoCEv2:两种跨节点承载方式
InfiniBand(IB)是一套从物理层到传输层完整定义的网络体系。它使用专用的HCA网卡和交换机,链路层基于信用的流控机制天然无损,传输层提供RC(可靠连接)、UC、UD等语义。RDMA操作(如RDMA Write、RDMA Read、Send/Recv)由HCA硬件直接完成,CPU只负责下发工作请求(WR)到队列对(QP)。IB的拥塞控制依赖链路层信用和自适应路由,端到端没有类似TCP的重传窗口,因此延迟极低且可预测。
RoCEv2则把RDMA语义承载在标准以太网/IP/UDP之上,UDP目的端口固定为4791。它保留了IB的传输层语义(RC/UC/UD),但底层是以太网。关键差异在于:以太网默认是有损的,RoCEv2要实现无损必须依赖PFC(优先级流控)和ECN(显式拥塞通知)配合DCQCN。PFC按优先级暂停链路,ECN在交换机队列超阈值时标记报文,接收端HCA回送CNP拥塞通知包,发送端据此降速。这套机制配置不当会引发PFC风暴、死锁或吞吐塌陷,是RoCEv2诊断的高频问题点。
诊断视角的差异:IB出问题时,通常看链路信用、自适应路由、SM(子网管理器)配置和符号错误计数;RoCEv2出问题时,优先看PFC pause帧计数、ECN标记率、CNP发送/接收比、以及DSCP优先级映射是否一致。两者都用perfquery或ethtool -S类工具采集计数器,但解读逻辑不同。
二、NVLink/NVSwitch:节点内的GPU直连拓扑
NVLink是NVIDIA GPU之间的高带宽直连链路。以H100为例,单GPU提供18条NVLink 4.0链路,每条双向50 GB/s,合计900 GB/s双向带宽。在DGX H100这类8卡系统中,GPU通过NVSwitch构成全互联(all-to-all)拓扑:任意两块GPU之间都是一跳NVLink路径,不再受PCIe拓扑的层级限制。NVSwitch本身是一颗交换芯片,负责在GPU之间转发NVLink流量,并支持SHARP(可扩展分层聚合与归约协议)在交换机内完成AllReduce的归约计算。
NVLink域内的通信不经过网卡和操作系统网络栈,由CUDA驱动和NVLink硬件直接完成。这意味着:如果一次AllReduce的通信量能完全落在NVLink域内,它的延迟和带宽表现与跨节点通信有数量级差异。诊断时首先要确认“这次集合通信的参与者是否都在同一NVLink域内”,否则会把跨节点瓶颈误判为GPU计算瓶颈。
三、GPU直连通信机制:从SM到网卡的路径
GPU发起跨节点通信时,数据路径大致是:GPU显存 → NVLink/PCIe → HCA网卡 → 网络。其中GPUDirect RDMA允许网卡直接读写GPU显存,绕过主机内存和CPU拷贝。GPUDirect Async进一步允许GPU的SM直接触发网卡操作,减少CPU介入。在NCCL中,这些机制被封装为不同的传输通道:NVLink通道用于域内,IB或RoCE通道用于跨节点,SHM用于同节点不同GPU经主机内存。
NCCL在初始化时会根据拓扑自动选择通道和算法(Ring、Tree、CollNet等)。诊断时可以通过NCCL_DEBUG=INFO观察它实际选了哪些通道、是否走了NVLink、是否启用了SHARP。如果发现本应走NVLink的通信走了PCIe或网络,说明拓扑探测或环境变量配置有问题。
四、典型AI训练流量模式
大模型训练以数据并行、张量并行、流水线并行及其组合为主。数据并行下,每步反向传播后执行一次AllReduce,通信量与模型参数量成正比,是典型的“周期性大突发”流量。张量并行则在层内频繁执行AllReduce或AllGather,通信量小但频率高,对延迟敏感。流水线并行在相邻stage之间传递激活值和梯度,呈点对点、阶段性流量。
这些模式对网络的要求不同:数据并行AllReduce追求高带宽和稳定的集合通信性能;张量并行追求低延迟和小消息效率;流水线并行则关注点对点链路的带宽和抖动。诊断时先判断当前瓶颈属于哪类流量模式,再去看对应的计数器,比盲目抓包更有效。
五、把三层通道串起来看诊断
实际诊断中,一次AllReduce慢,可能的原因分布在三层:NVLink域内是否全互联、GPUDirect是否生效、跨节点走的是IB还是RoCEv2、PFC/ECN是否正常、NCCL选了什么算法和通道。建议的排查顺序是:先用nvidia-smi topo -m确认GPU间拓扑和NVLink连接状态;再用NCCL_DEBUG=INFO看NCCL实际选择的通道;然后针对跨节点部分,用ibstat、perfquery或ethtool -S采集端口计数器和PFC/ECN统计;最后结合训练日志中的step time和通信占比,判断瓶颈是在计算、NVLink还是网络。
一个实用的判断经验:如果单节点内8卡AllReduce的带宽远低于NVLink理论值,优先怀疑NVLink降级或NCCL拓扑探测异常;如果单节点正常但跨节点扩展效率骤降,优先怀疑IB/RoCEv2的拥塞控制、PFC配置或交换机缓冲。把“域内”和“跨节点”分开测,是定位AI集群网络问题的第一步。