跳转到内容

RDMA:InfiniBand 与 RoCE

同步训练里,几万张卡每一步都要交换梯度。用传统 TCP/IP 栈做这件事:每次传输要经过内核协议栈、系统调用、内存拷贝、中断——单次延迟几十微秒,CPU 被网络处理占满。RDMA(远程直接内存访问)把这些全部绕开:网卡直接读写对端内存,不经过内核,不拷贝,不打扰 CPU。 这是万卡集群网络的地基。

一次传统网络传输的完整路径:

应用 write() → 系统调用 → 内核协议栈处理 → 拷贝到 socket 缓冲
→ DMA 到网卡 → 网络 → 对端网卡中断 → 拷贝到内核缓冲 → 协议栈 → 应用 read()

四重开销:

开销量级说明
系统调用与上下文切换~1–5 μs每次传输两次
协议栈处理~10–30 μsTCP 分段、确认、重传逻辑
内存拷贝2–4 次带宽减半起
CPU 占用高每GB/s 需要一两个核处理网络

单次往返 50–100 μs,且 CPU 成为瓶颈。 训练里每秒成千上万次集合通信,这条路完全走不通。

一、内核旁路(kernel bypass):应用通过用户态队列对(QP)直接向网卡下指令,没有系统调用。

二、零拷贝(zero-copy):网卡 DMA 直接读写应用注册的内存,数据不经过任何中间缓冲。

三、CPU 卸载(offload):可靠传输、重传、流控全部在网卡硬件里完成,CPU 完全不参与数据面。

结果是:单次往返 ~1–2 μs,带宽打满 400 Gbps(50 GB/s)时 CPU 几乎零占用。 差两个数量级。

两个配套概念:

  • 内存注册(memory registration):应用先把内存区域"注册"给网卡(锁定物理页、映射地址),之后网卡才能直接访问。这就是为什么数据加载和通信缓冲都要求 pinned memory——可分页内存无法被 RDMA 直接访问。
  • GPUDirect RDMA:网卡直接读写 GPU 显存(而不是先到主机内存再拷贝),省一次 PCIe 往返。NCCL 的跨机通信默认走这条路。

RDMA 有两个承载网络,这是集群组网最重要的选型:

InfiniBand(IB)RoCE v2(RDMA over Converged Ethernet)
网络专用 IB 交换机与线缆标准以太网
丢包处理链路级信用流控,不丢包依赖 PFC/ECN,可能丢包
路由子网管理器(SM)集中算路标准以太网路由(ECMP)
运维封闭但简单,"插上就通"开放但调参复杂
典型速率NDR 400 Gbps,XDR 800 Gbps400/800 Gbps 以太网
主要用户大多数超算与大模型集群云厂商、成本敏感集群

核心分歧在丢包:RDMA 的性能假设是"不丢包"(丢包重传会把微秒级延迟打回毫秒级)。IB 用链路级信用机制从物理上保证不丢;RoCE 跑在以太网上,必须靠一组"无损以太网"机制拼出来:

  • PFC(优先级流控):下游拥塞时向上游发暂停帧,逼上游停发——拥塞向上游传播,可能形成"PFC 风暴"(一头拥塞,全网络停摆)
  • ECN(显式拥塞通知):交换机在队列超阈值时给包打标记,源端 DCQCN 算法降速

RoCE 的运维现实:PFC 风暴、ECN 参数(Kmin/Kmax/P)调优、与普通以太流量的隔离,都是真实的坑。这就是为什么超大规模训练集群普遍选 IB(省心),而云厂商内部自建常选 RoCE(成本与通用性)。

一条 400 Gbps 链路的实际含义,用 NCCL Ring all-reduce 的代价公式算(pp 卡,消息 SS,链路带宽 BB,每卡单链路):

T=2×p−1p×SBT = 2 \times \frac{p-1}{p} \times \frac{S}{B}

一万卡、7B 模型梯度(14 GB BF16)、每卡一条 400 Gbps(50 GB/s)链路:

T≈2×14 GB50 GB/s≈560 msT \approx 2 \times \frac{14\ \text{GB}}{50\ \text{GB/s}} \approx 560\ \text{ms}

每步训练光梯度同步就要半秒以上——这正是真实集群的网络设计起点,也是一系列优化的动机:梯度压缩、ZeRO 分片(把同步量除以卡数)、拓扑映射(让热点流量走快网)、在网计算 SHARP。网络设计不是"越快越好",是让代价公式里的每一项变小。

  1. 连通性:ibstat/ibstatus 看链路速率与状态;ib_write_bw/ib_send_bw 实测带宽,应达线速 90%+。
  2. 延迟:ib_write_lat 实测往返延迟,同子网应 < 2 μs。
  3. GPUDirect:nccl-tests 跨机 all-reduce,确认走 GPU Direct(日志看 via P2P/direct 而不是 staging)。
  4. RoCE 专项:确认 PFC 只对 RDMA 流量开启(不吃普通流量)、ECN 参数与交换机一致、无 PFC 风暴(ethtool -S 看 PFC 暂停计数)。
  5. 拓扑:ibdiagnet 扫全网,检查路由均衡与异常链路。
  • RDMA = 内核旁路 + 零拷贝 + CPU 卸载:延迟从 ~50 μs 降到 ~1–2 μs,带宽打满时 CPU 零占用。
  • IB 靠链路级信用从物理上不丢包;RoCE 靠 PFC/ECN 拼"无损以太网",省成本但运维复杂。
  • 内存必须注册(pinned),GPUDirect 让网卡直读显存,NCCL 默认依赖两者。
  • Ring all-reduce 代价 2p−1pSB2\frac{p-1}{p}\frac{S}{B}:万卡 7B 梯度同步 ~560 ms,是所有网络优化的出发点。
  • 选型:训练集群求稳选 IB,成本敏感与云内自建选 RoCE,但必须配齐无损调参。