多个 GPU 中的人工智能:GPU 如何通信

深入探讨支持 AI 工作负载多 GPU 通信的硬件基础设施多 GPU 中的后 AI:GPU 如何通信首先出现在《迈向数据科学》上。

来源:走向数据科学

是有关跨多个 GPU 的分布式 AI 系列的一部分:

简介

在深入研究高级并行技术之前,我们需要了解使 GPU 能够相互通信的关键技术。

但是为什么 GPU 首先需要进行通信呢?当跨多个 GPU 训练 AI 模型时,每个 GPU 处理不同的数据批次,但它们都需要通过在反向传播期间共享梯度或交换模型权重来保持同步。沟通内容和时间的具体细节取决于您的并行策略,我们将在下一篇博客文章中深入探讨该策略。目前,我们只需知道现代人工智能训练是通信密集型的,因此高效的 GPU 到 GPU 数据传输对于性能至关重要。

通信堆栈

PCIe

PCIe(外围组件互连 Express)使用独立的点对点串行通道将 GPU 等扩展卡连接到主板。以下是不同 PCIe 代为使用 16 通道的 GPU 提供的功能:

  • Gen4 x16:~32 GB/s 双向
  • Gen5 x16:~64 GB/s 双向
  • Gen6 x16:~128 GB/s 双向(仅供参考,16 通道 × 8 GB/s/通道 = 128 GB/s)
  • 高端服务器 CPU 通常提供 128 个 PCIe 通道,而现代 GPU 需要 16 个通道才能获得最佳带宽。这就是为什么您通常会看到每台服务器有 8 个 GPU (128 = 16 x 8)。服务器机箱中的功耗和物理空间也使得单个节点中超过 8 个 GPU 变得不切实际。

    NVLink

    NVLink 可在同一服务器(节点)内实现 GPU 到 GPU 的直接通信,完全绕过 CPU。这种 NVIDIA 专有的互连在具有巨大带宽的 GPU 之间创建了直接的内存到内存路径:

  • NVLink 3 (A100):每个 GPU 约 600 GB/s
  • NVLink 4 (H100):每个 GPU ~900 GB/s
  • NVLink 5 (Blackwell):每个 GPU 高达 1.8 TB/s
  • 注意:关于 CPU-GPU 通信的 NVLink

    支持 NVLink 的 CPU 包括 IBM POWER8、POWER9 和 NVIDIA Grace。

    NVSwitch

    NVSwitch 的世代是:

  • 第一代:每台服务器最多支持 16 个 GPU(与 Tesla V100 兼容)
  • InfiniBand