最近人工智能大火,AI 利用所波及的技术能力包含语音、图像、视频、NLP 等多方面,而这些都须要弱小的计算资源反对。AI 技术对算力的需要是十分宏大的,尽管 GPU 的计算能力在继续晋升,然而对于 AI 来说,单卡的计算能力就算再强,也是有极限的,这就须要多 GPU 组合。而 GPU 多卡的组合,次要分为单个服务器多张 GPU 卡和多个服务器,每个服务器多张卡这两种状况,无论是单机多卡还是多机多卡,GPU 之间须要有超强的通信反对。接下来,咱们就来聊聊 GPU 通信技术。
单机多卡 GPU 通信
GPU Direct
GPU Direct 是 NVIDIA 开发的一项技术,可实现 GPU 与其余设施(例如网络接口卡 (NIC) 和存储设备)之间的间接通信和数据传输,而不波及 CPU。
传统上,当数据须要在 GPU 和另一个设施之间传输时,数据必须通过 CPU,从而导致潜在的瓶颈并减少提早。应用 GPUDirect,网络适配器和存储驱动器能够间接读写 GPU 内存,缩小不必要的内存耗费,缩小 CPU 开销并升高提早,从而显著进步性能。GPU Direct 技术包含 GPUDirect Storage、GPUDirect RDMA、GPUDirect P2P 和 GPUDirect 视频。
GPUDirect Storage
GPUDirect Storage 容许存储设备和 GPU 之间进行间接数据传输,绕过 CPU,缩小数据传输的提早和 CPU 开销。
通过 GPUDirect Storage,GPU 能够间接从存储设备(如固态硬盘(SSD)或非易失性内存扩大(NVMe)驱动器)拜访数据,而无需将数据先复制到 CPU 的内存中。这种间接拜访可能实现更快的数据传输速度,并更高效地利用 GPU 资源。
GPUDirect Storage 的次要特点和劣势包含:
- 缩小 CPU 参加:通过绕过 CPU,实现 GPU 和存储设备之间的间接通信,GPUDirect Storage 缩小了 CPU 开销,并开释 CPU 资源用于其余工作,从而改善零碎的整体性能。
- 低提早数据拜访:GPUDirect Storage 打消了数据通过 CPU 的传输门路,从而最小化了数据传输的提早。这对于实时剖析、机器学习和高性能计算等对提早敏感的利用十分无益。
- 进步存储性能:通过容许 GPU 间接拜访存储设备,GPUDirect Storage 实现了高速数据传输,能够显著进步存储性能,减速数据密集型工作负载的处理速度。
- 加强的可扩展性:GPUDirect Storage 反对多 GPU 配置,容许多个 GPU 同时拜访存储设备。这种可扩展性对于须要大规模并行处理和数据分析的利用至关重要。
- 兼容性和生态系统反对:GPUDirect Storage 设计用于与各种存储协定兼容,包含 NVMe、NVMe over Fabrics 和网络附加存储(NAS)。它失去了次要存储供应商的反对,并集成到风行的软件框架(如 NVIDIA CUDA)中,以简化与现有的 GPU 减速应用程序的集成。
GPUDirect P2P
某些工作负载须要位于同一服务器中的两个或多个 GPU 之间进行数据交换,在没有 GPUDirect P2P 技术的状况下,来自 GPU 的数据将首先通过 CPU 和 PCIe 总线复制到主机固定的共享内存。而后,数据将通过 CPU 和 PCIe 总线从主机固定的共享内存复制到指标 GPU,数据在达到目的地之前须要被复制两次。
有了 GPUDirect P2P 通信技术后,将数据从源 GPU 复制到同一节点中的另一个 GPU 不再须要将数据长期暂存到主机内存中。如果两个 GPU 连贯到同一 PCIe 总线,GPUDirect P2P 容许拜访其相应的内存,而无需 CPU 参加。前者将执行雷同工作所需的复制操作数量减半。
NVLink
在 GPUDirect P2P 技术中,多个 GPU 通过 PCIe 间接与 CPU 相连,而 PCIe3.0*16 的双向带宽有余 32GB/s,当训练数据一直增长时,PCIe 的带宽满足不了需要,会逐步成为零碎瓶颈。为晋升多 GPU 之间的通信性能,充分发挥 GPU 的计算性能,NVIDIA 于 2016 年公布了全新架构的 NVLink。NVLink 是一种高速、高带宽的互连技术,用于连贯多个 GPU 之间或连贯 GPU 与其余设施(如 CPU、内存等)之间的通信。NVLink 提供了间接的点对点连贯,具备比传统的 PCIe 总线更高的传输速度和更低的提早。
- 高带宽和低提早:NVLink 提供了高达 300 GB/s 的双向带宽,将近 PCle 3.0 带宽的 10 倍。点对点连贯超低提早,可实现疾速、高效的数据传输和通信。
- GPU 间通信:NVLink 容许多个 GPU 之间间接进行点对点的通信,无需通过主机内存或 CPU 进行数据传输。
- 内存共享:NVLink 还反对 GPU 之间的内存共享,使得多个 GPU 能够间接拜访彼此的内存空间。
- 弹性连贯:NVLink 反对多种连贯配置,包含 2、4、6 或 8 个通道,能够依据须要进行灵便的配置和扩大。这使得 NVLink 实用于不同规模和需要的系统配置。
NVSwitch
NVLink 技术无奈使单服务器中 8 个 GPU 达到全连贯,为解决该问题,NVIDIA 在 2018 年公布了 NVSwitch,实现了 NVLink 的全连贯。NVIDIA NVSwitch 是首款节点替换架构,可反对单个服务器节点中 16 个全互联的 GPU,并可使全副 8 个 GPU 对别离达到 300GB/s 的速度同时进行通信。
△ NVSwitch 全连贯拓扑
多机多卡 GPU 通信
RDMA
AI 计算对算力需要微小,多机多卡的计算是一个常态,多机间的通信是影响分布式训练的一个重要指标。在传统的 TCP/IP 网络通信中,数据发送方须要将数据进行屡次内存拷贝,并通过一系列的网络协议的数据包解决工作;数据接管方在应用程序中解决数据前,也须要通过屡次内存拷贝和一系列的网络协议的数据包解决工作。通过这一系列的内存拷贝、数据包解决以及网络传输延时等,服务器间的通信时延往往在毫秒级别,不可能满足多机多卡场景对于网络通信的需要。
RDMA(Remote Direct Memory Access)是一种绕过近程主机而拜访其内存中数据的技术,解决网络传输中数据处理提早而产生的一种远端内存间接拜访技术。
目前 RDMA 有三种不同的技术实现形式:
- InfiniBand(IB):IB 是一种高性能互连技术,它提供了原生的 RDMA 反对。IB 网络应用专用的 IB 适配器和交换机,通过 RDMA 操作实现节点之间的高速间接内存拜访和数据传输。
- RoCE(RDMA over Converged Ethernet):RoCE 是在以太网上实现 RDMA 的技术。它应用规范的以太网作为底层传输介质,并通过应用 RoCE 适配器和适当的协定栈来实现 RDMA 性能。
- iWARP:iWARP 是基于 TCP/IP 协定栈的 RDMA 实现。它应用一般的以太网适配器和规范的网络交换机,并通过在 TCP/IP 协定栈中实现 RDMA 性能来提供高性能的近程内存拜访和数据传输。
GPUDirect RDMA
GPUDirect RDMA 联合了 GPU 减速计算和 RDMA(Remote Direct Memory Access)技术,实现了在 GPU 和 RDMA 网络设备之间间接进行数据传输和通信的能力。它容许 GPU 间接拜访 RDMA 网络设备中的数据,无需通过主机内存或 CPU 的中介。
GPUDirect RDMA 通过绕过主机内存和 CPU,间接在 GPU 和 RDMA 网络设备之间进行数据传输,显著升高传输提早,放慢数据交换速度,并能够加重 CPU 负载,开释 CPU 的计算能力。另外,GPUDirect RDMA 技术容许 GPU 间接拜访 RDMA 网络设备中的数据,防止了数据在主机内存中的复制,进步了数据传输的带宽利用率
IPOIB
IPOIB(IP over InfiniBand)是一种在 InfiniBand 网络上运行 IP 协定的技术。它将规范的 IP 协定栈与 IB 互连技术相结合,使得在 IB 网络上的节点可能应用 IP 协定进行通信和数据传输。
IPOIB 提供了基于 RDMA 之上的 IP 网络模仿层,容许利用无批改的运行在 IB 网络上。然而,IPoIB 依然通过内核层(IP Stack),会产生大量零碎调用,并且波及 CPU 中断,因而 IPoIB 性能比 RDMA 通信形式性能要低,大多数利用都会采纳 RDMA 形式获取高带宽低延时的收益,多数的要害利用会采纳 IPoIB 形式通信。
在大规模计算中,单机多卡场景下应用 GPUDiect、NVLink 技术,分布式场景下应用 GPUDirect RDMA 技术,能够大大缩短通信工夫,晋升整体性能。
如果你对 GPU 相干技术感兴趣,你能够用它尝试搭建 AI 绘画平台或者做一些推理的工作。AI 绘画搭建的教程我先放在这里啦:《从 0 到 1,带你玩转 AI 绘画》