跳转至

04 overview of the rdma

RDMA概述

RDMA,即 Remote Direct Memory Access,是一种绕过远程主机 OS kernel 访问其内存中数据的技术,概念源自于 DMA 技术。

在 DMA 技术中,外部设备(PCIe 设备)能够绕过 CPU 直接访问主机上的内存。

RDMA 是远程直接内存访问(Remote Direct Memory Access)的简称,指允许计算节点(通过网络)直接访问远程节点的内存,绕过操作系统内核的网络协议栈,从而实现低延迟和高吞吐量的数据传输。

由于不经过操作系统,不仅节省了大量 CPU 资源,同样也提高了系统吞吐量、降低了系统的网络通信延迟,在高性能计算和深度学习训练中得到了广泛的应用。

RDMA的基本原理,通过硬件(比如RDMA网卡)直接在应用程序的内存之间搬移数据,绕过了操作系统的网络协议栈,从而避免了数据在用户空间和内核空间的多次拷贝开销,以及上下文切换开销。

RDMA操作可以看作是硬件执行的远程内存读写操作,因此具有非常高的性能。

传统TCP/IP网络通信技术

现实计算机网络中的通信场景中,主要是以发送小消息为主,因此处理延迟是提升性能的关键。

传统的 TCP/IP 网络通信,数据需要通过用户空间发送到远程机器的用户空间,在这个过程中需要经历若干次内存拷贝:

  • 数据发送方需要讲数据从用户空间 Buffer 复制到内核空间的 Socket Buffer
  • 数据发送方要在内核空间中添加数据包头,进行数据封装
  • 数据从内核空间的 Socket Buffer 复制到 NIC Buffer 进行网络传输
  • 数据接受方接收到从远程机器发送的数据包后,要将数据包从 NIC Buffer 中复制到内核空间的 Socket Buffer
  • 经过一系列的多层网络协议进行数据包的解析工作,解析后的数据从内核空间的 Socket Buffer 被复制到用户空间 Buffer
  • 这个时候再进行系统上下文切换,用户应用程序才被调用

随着AI大模型的快速发展,模型参数量、数据量的不断增加,单个GPU服务器已经难以满足模型训练和推理的算力资源要求,分布式多机多卡的训练与推理已经成为必然。多机多卡的训推场景对算力网络提出了以下要求:

  1. 高吞吐量:大模型参数量、数据量巨大,每一次训练推理都是几百G,甚至几十T的数据量;

  2. 低延迟:大模型训练推理过程中,数据的传输延迟对训练推理的效率影响很大,当网络延迟成为瓶颈时,会导致GPU空闲等待数据传输完成,从而降低整体的训练效率,进而造成算力的浪费;

  3. 高可靠性 :大模型训练推理过程中,数据的传输可靠性对训练推理的效率影响很大,当网络有丢包重传时,会导致所有GPU闲置,同样造成算力的巨大浪费。

传统以太网的设计和实现无法满足以上要求,已经成为大模型训推场景下算力集群的瓶颈。基于RDMA 技术的网络从底层技术原理和设计实现上,满足了高吞吐、低延迟、无丢包的要求,从而提升了算力集群的效率。

在大模型时代,万卡/十万卡集群的分布式训练对网络底座提出了极致诉求,“大吞吐、零丢包”与“超低时延”共同构成了无损智算网络(Lossless Network)的核心特征。

一旦发生丢包,长距离的分布式并行同步(如All-Reduce)就会引发严重的木桶效应与算力闲置。

传统的 TCP 网络在传输数据时,需要经过操作系统的网络协议栈,并伴随多次 CPU 中断、上下文切换以及用户态与内核态缓冲区之间的内存拷贝。

而 RDMA 技术允许网络上的两台节点直接读写对方的内存数据,整个过程由网卡硬件负责,网卡直接读写用户态缓冲区(即实现「零拷贝」),几乎完全绕过操作系统内核与 CPU 的干预。

相当于为缓存数据的读取开辟了一条「硬件级专属高速公路」。