RDMA · RoCEv2 · 无损以太网

什么是 RDMA?

RDMA(远程直接内存访问)让一台机器可通过网络直接读写另一台机器的内存,绕过双方的 CPU 和操作系统。 网络适配器在两端的应用内存之间直接搬移字节,因此延迟极低、CPU 开销近乎为零。在以太网上,RoCEv2 承载 RDMA 使其可被路由,而由于 RDMA 假定不丢包,它运行在一张无损 fabric 上。

Zero-copy内核旁路,适配器到适配器
Near zero数据路径上的 CPU 开销
UDP 4791RoCEv2 封装,可路由
Lossless运行于 Broadcom TH5 的 OcNOS-DC
工作机制

零拷贝、CPU 旁路,以及这为何是关键

普通的网络传输会通过内核拷贝数据,并在两端都依赖 CPU。RDMA 把两者都去掉。适配器直接从发送端的应用内存读取,并直接写入接收端的应用内存,数据路径上没有任何东西经过 CPU。正是这一点造就了 RDMA 极低延迟、极高吞吐、且几乎没有 CPU 成本的组合,也是 RDMA 成为 GPU 间通信标准的原因。

  • Zero-copy: 字节在两端的应用内存之间直接搬移,绝不经由中间的内核缓冲区中转。
  • 内核旁路: 由网络适配器而非操作系统驱动传输,因此 CPU 不在数据路径上。
  • 近乎零开销: CPU 得以腾出来运行工作负载,而非搬运数据包,这在 GPU 规模下至关重要。
基于以太网的 RDMA

RoCEv2 如何在以太网上承载 RDMA

RoCEv2(RDMA over Converged Ethernet 第 2 版)把 RDMA 封装进 UDP 和 IP,使用目的 UDP 端口 4791,因此它可跨标准的三层以太网 fabric 路由,无需单独的网络。RDMA 操作仍以适配器到适配器的方式运行,保持同样的零拷贝行为;RoCEv2 只是为它提供一条可路由的以太网路径。正是这一点,让多厂商以太网 fabric 得以在 GPU 集群上替代 InfiniBand。

可路由的传输

RDMA 承载于 端口 4791 上的 UDP 和 IP之中,因此它可穿越标准的路由式数据中心,而无需专用 fabric。

不丢包的网络

RDMA 假定网络从不丢包,因此它运行在一张 无损 fabric 之上,由 PFC 和 ECN 让每一跳都不丢包。

AI fabric

这种传输是构建 AI fabric 的基础。 AI 网络架构: the GPU-to-GPU network that carries every collective during training.

它为何对 AI 重要

为何 AI 集合通信依赖 RDMA,以及为何 fabric 必须无损

AI 训练运行 AllReduce 等集合操作:每一步之后,每个 GPU 都与其他每个 GPU 交换梯度,然后所有 GPU 在下一步之前等待这次交换。数据量大且时序紧凑,因此 RDMA 让每次交换快速完成且不占用 CPU。由于哪怕丢失一个数据包也会触发恢复、使尾延迟骤增并可能拖停整个集合通信,基于以太网的 RDMA 始终运行在一张无损 fabric 上。

  • 集合通信会阻塞每个 GPU,直到交换完成,因此 更低的延迟缩短了该步骤 ,而整个集群都在等待这一步骤。
  • RDMA 让这次交换 不占用 CPU 且无需拷贝,这一点跨越数百万个步骤累积起来,便成为影响总训练时间的直接杠杆。
  • OcNOS-DC 提供这张不丢包的 fabric,配以 PFC、ECN 和动态负载均衡 ,运行在 Broadcom Tomahawk 5 上,让流量避开热点链路。
常见问题

什么是 RDMA,答案在此

什么是RDMA?
RDMA stands for Remote Direct Memory Access. It lets one machine read or write another machine's memory directly over the network, without involving either machine's CPU and without copying the data through the operating system kernel. The network adapter moves the bytes straight between application memory on both ends. The result is very low latency and very high throughput with almost no CPU overhead, which is why RDMA is the standard way GPUs exchange data during AI training.
RoCEv2 如何在以太网上承载 RDMA?
RoCEv2(RDMA over Converged Ethernet 第 2 版)把 RDMA 封装进 UDP 和 IP,使用目的 UDP 端口 4791,因此 RDMA 可跨标准的三层以太网数据中心路由,而无需单独的网络。RDMA 操作仍以适配器到适配器的方式运行,保持同样的零拷贝、CPU 旁路行为;RoCEv2 只是为它提供一条可路由的以太网路径。正是这一点,让多厂商以太网 fabric 成为 GPU 集群中 InfiniBand 的可行替代方案。
零拷贝和 CPU 旁路为何对 AI 重要?
AI training runs collective operations such as AllReduce, where every GPU exchanges gradients with every other GPU after each step, moving enormous amounts of data on a tight schedule. If the CPU had to copy every message through the kernel, it would become the bottleneck and burn power doing it. RDMA removes the CPU and the copies from the data path, so a GPU's data lands in the peer GPU's memory with minimal latency, which shortens the exchange every GPU is waiting on.
为何 RDMA 需要无损 fabric?
RDMA 的设计前提是网络不丢包。当一个数据包丢失时,恢复代价高昂并使尾延迟骤增,可能拖停整个 GPU 集合通信。因此基于以太网的 RDMA 运行在一张无损 fabric 上:优先级流控和 ECN 让网络不丢包。OcNOS-DC 在 Broadcom Tomahawk 5 硬件上通过 PFC、ECN 和动态负载均衡提供这张 fabric。详情参见无损以太网和 RoCEv2 页面。

在设计一张 RDMA fabric?让我们把它构建成无损的

告诉我们工作负载和 GPU 规模,IP Infusion 的工程师将在运行 OcNOS-DC 的开放硬件上,与您一起梳理 RoCEv2 和无损 fabric 的设计。