作者简介:
Explorer,专注于高性能网络、虚拟化网络及网卡的测试方案研究。熟悉DPDK,RDMA,SDN等技术的应用与解决方案。
最近Deepseek火爆全球,在大模型技术快速推进的当下,千亿级参数模型对算力系统提出了前所未有的挑战。这类模型的训练与推理已远非单点算力所能承载,其背后是数以万计GPU集群的协同计算,每一次迭代都涉及TB级张量数据的传输与同步。然而,当算力规模呈指数级膨胀时GPU间的通信效率至关重要。
以DeepSeek MoE架构为例,其动态路由机制需在毫秒级完成数百GPU的梯度同步,而传统通信模式下,CPU中转与主机内存带宽限制使得显存资源陷入受限闲置。当模型规模向万亿参数扩展时,通信延迟甚至可能成为制约算力扩展的瓶颈。
GPU Direct RDMA技术的出现,正是为了解决超大规模AI模型在分布式训练中面临的数据传输瓶颈问题。通过允许GPU显存与高速网络设备(如InfiniBand/RoCE网卡)直接交互,它消除了传统通信路径中CPU和主机内存的中转开销,实现了跨节点GPU间的零拷贝数据传输。这种底层架构的革新,使得分布式训练中的梯度同步、参数更新等关键操作能够以接近硬件理论带宽的速率完成,从而将通信延迟对整体计算效率的影响降至最低。
1.1 PCIe
PCIe是一种高速串行计算机扩展总线标准,用于连接计算机内部的各种硬件设备,如显卡、网卡、存储设备等。PCIe 取代了早期的 PCI、PCI-X 和 AGP 总线标准,提供了更高的带宽和更低的延迟。
PCIe 提供高带宽、低延迟、灵活的通道配置和广泛的兼容性,使其成为多 GPU 互联的理想选择。但是PCIe 在多 GPU 系统中可能面临带宽瓶颈、通道限制、额外延迟、功耗增加以及兼容性问题。
1.2 NVLink
NVLink 是 NVIDIA 开发的一种高速互联技术,专门用于连接多个 GPU 或 GPU 与 CPU 之间的高速数据传输。与传统的 PCIe 技术相比,NVLink 提供了更高的带宽和更低的延迟,尤其适用于高性能计算(HPC)、AI 训练和多 GPU 系统。
NVLink 在 GPU 互联技术中提供了超高带宽和低延迟的优势,如Figure1所示,第五代NVLink支持高到1800GB/s的带宽,支持高效的多 GPU 协作,但成本高昂,作为NVIDIA的私有协议,生态封闭,兼容性有限、硬件要求高且功耗较大。
Figure 1 NVlink
1.3 NVSwitch
NVSwitch 也是 NVIDIA 开发的一种高速互联技术,专门用于大规模多 GPU 系统。它基于 NVLink 技术,但通过交换机(Switch)将多个 GPU 连接在一起,形成一个高性能的 GPU 网络。NVSwitch 的出现是为了解决 NVLink 在大规模多 GPU 系统中的局限性,尤其是在需要极高带宽和低延迟的场景。
Figure 2是多GPU并行计算时,分别使用点对点方式和使用NVswitch方式的组网图。
Figure 2 NVSwitch组网
在点对点设计中,虽然不需要4个switch的成本投入,但每个GPU必须将900GB/s的总连接带宽拆分为7个专用的128 GB/s点对点连接,和系统中其他的GPU进行连接,GPU之间的带宽如Figure3。
Figure 3
NVSwitch的成本极其高昂,硬件要求苛刻,功耗较大,且仅限于 NVIDIA 的高端系统,主要适用于 AI 训练、HPC 和数据中心等专业领域,普通用户或中小型企业难以负担。
1.4 Infinity Fabric (AMD)
Infinity Fabric是AMD开发的一种高带宽、低延迟的互连技术,最初用于连接CPU内部的多个核心模块(如Ryzen处理器中的CCX),后来扩展到GPU和加速器领域,成为AMD多芯片协同设计的核心技术。AMD推出支持CDNA架构(计算专用架构)的MI系列加速卡(如MI100、MI210)支持Infinity Fabric互联,提供比PCIe更高的带宽,Infinity Fabric链路峰值带宽达100GB/S,减少多卡通信延迟,适用于AI训练和科学计算。
与NVIDIA NVLink类似,但AMD更强调与自家CPU(如EPYC)的协同,形成CPU-GPU统一架构。
1.5 GPU Direct
2011年Nvidia发布的CUDA 4.0首次引入GPU Direct技术,其核心思想为以下两点:绕过CPU中转,允许GPU与其他设备(GPU/网卡/存储)直接交换数据,减少拷贝次数;统一虚拟地址空间,GPU可直接访问其他设备的物理内存,简化编程模型。
如Figure 4所示,GPU Direct通过共享内存的方式实现多 GPU 之间的高效数据交换。减少了数据传输中的复制次数,从原本需要三次数据复制减少到仅需要两次复制,从而有效提高了数据传输效率,降低了延迟并减轻了 CPU 负担。
Figure 4
1.5.1 GPU Direct P2P
GPU Direct P2P(Peer-to-Peer)技术是一种允许GPU之间直接通信的技术,无需通过CPU或系统内存中转数据。Direct Access 和 Direct Transfers 是其实现的两种重要的通信机制。Direct Access 允许一个 GPU 直接访问另一个 GPU 的内存,而无需经过 CPU 或主机内存。Direct Transfers 指的是在 GPU 之间直接传输数据,数据不需要先经过 CPU 或主机内存。与 Direct Access 类似,这也是一种减少中间步骤、提高数据传输效率的机制。
Figure 5
1.5.2 GPU Direct Storage
随着人工智能(AI)、高性能计算(HPC)以及数据分析领域的数据集规模持续扩大,数据加载时间逐渐成为影响应用性能的关键瓶颈。GPU的应用越来越被缓慢的IO(将数据从存储加载到GPU内存进行处理的过程)所影响。
GPUDirect Storage 为本地或远程存储(如NVMe或基于网络的NVMe-oF)与GPU显存之间建立了一条直接数据通路。它避免了通过CPU内存中的临时缓冲区进行额外拷贝,通过网卡或存储设备的直接内存访问(DMA)引擎,将数据沿直达路径移入或移出GPU显存,整个过程完全无需消耗CPU资源。
Figure 6 GPU Direct Storage
如Figure 6所示,GPU 内存和 NVMe 驱动器之间的标准路径使用系统内存中挂起的反弹缓冲区 CPU 。通过完全跳过 CPU ,来自存储器的直接数据路径获得了更高的带宽。
1.5.3 GPU Direct RDMA
如Figure 7所示,GPU Direct RDMA 允许 GPU 直接访问 RDMA 网络设备中的数据,无需通过主机内存或 CPU 。这意味着,GPU 可以直接与网络设备进行数据交换,避免了数据在主机内存中的复制,提高了数据传输的带宽利用率。此外,GPU Direct RDMA 还支持零拷贝(zero-copy)功能,这对于需要高性能通信的应用程序,如分布式训练和高性能计算,具有重要意义。通过减少数据复制次数,GPU Direct RDMA 能够进一步降低通信延迟,提升整体性能。
Figure 7 GPU Direct RDMA
需要注意的是,要想使用GPU Direct RDMA,需要确保GPU卡和RDMA网卡在同一个RC(root complex)下。此外,使用GPU Direct RDMA需要相应的硬件支持和驱动程序支持。
总之,GPU Direct RDMA通过直接在GPU和RDMA网络设备之间进行数据传输,绕过了主机内存和CPU,从而显著降低了通信延迟,提升了数据传输速度,对于高性能计算和分布式训练等应用具有重要意义。
2.1 分布式深度学习训练
在大规模深度学习训练中,特别是像 BERT、GPT 以及Deepseek等模型训练时,通常需要多机多卡协同工作。这时,GPU之间需要频繁交换梯度信息、更新参数等。
数据需要在多个GPU或多个节点间频繁交换。传统的数据传输方式通常依赖CPU或内存进行中转,这会导致传输延迟、带宽不足,严重影响训练效率。GPU Direct RDMA通过避免CPU参与数据传输,直接通过RDMA网络设备进行数据传输,极大减少了延迟和带宽瓶颈,提升了深度学习训练的效率,尤其是在大规模数据并行训练时。
2.2 大规模并行计算和高性能计算
在高性能计算中,多个GPU需要协同工作进行复杂的科学计算、模拟、建模等任务。例如,天气模拟、分子动力学模拟、量子力学模拟等,这些任务都依赖于大量的并行计算,并需要高效的数据交换和协调。
这些计算任务需要大规模的数据交换和高带宽的数据传输。如果使用传统的CPU 协调和内存传输,会带来瓶颈,导致计算效率降低。GPU Direct RDMA通过直接在GPU之间和网络设备间传输数据,避免了系统内存和CPU的参与,显著提高了数据传输的速度和计算的并行性,优化了HPC应用的性能。
2.3 云计算和大规模数据中心
在云计算环境和大规模数据中心中,多租户系统通常会利用大量的GPU资源来提供计算服务,尤其是机器学习、深度学习推理和训练的需求越来越高。在这种环境下,多个节点上的GPU必须高效地共享资源并交换数据。
随着GPU数量的增加,节点之间的数据传输变得更加频繁和复杂,传统的数据传输方式无法满足低延迟、高带宽的要求。GPU Direct RDMA能够通过RDMA网络适配器直接在不同节点的GPU之间传输数据,减少了系统内存的占用,并且支持零拷贝,提升了云计算平台的计算性能和资源利用率。
硬件环境
类型
|
型号
|
GPU
|
Nvidia RTX A5000
|
网卡
|
Mellanox CX-5
|
CPU
|
Intel(R) Xeon(R) Silver 4210 CPU @ 2.20GHz
|
软件环境
类型
|
版本
|
OS
|
Ubuntu22.04
|
Kernel
|
5.15
|
Nvidia驱动
|
550.120
|
CUDA
|
12.2.2
|
NCCL
|
2.21.5
|
OpenMPI
|
4.16
|
NCCL-Test
|
2.13.10
|
实验拓扑
拓扑如Figure 8,两台服务器各搭载一张Nvidia RTX A5000(GPU)和一张CX-5(RDMA NIC),实际的生产环境测试中应引入多层的网络拓扑和流控机制结合测试。
Figure 8实验拓扑
环境安装
Nvidia驱动:支持 GPU 工作的基础驱动。