在单个GPU上训练模型时,性能受限于处理器自身的计算能力。当您将训练扩展到多个GPU时,会出现一个新的瓶颈:它们之间的通信连接。在分布式训练期间,GPU必须不断交换信息,最主要的是反向传播期间计算的梯度。如果这些处理器之间的互连速度慢,GPU将花费更多时间等待数据,而不是执行计算,从而抵消了使用多个加速器的优势。标准主板互连,如PCIe(外围组件互连),虽然对于通用外围设备来说很快,但通常不足以满足大规模模型训练的需求。这就是专用高带宽互连变得非常重要的地方。它们是现代AI超级计算机的高速数据通道,专门设计用于最小化处理器之间的通信延迟并最大化带宽。我们将考察这方面三项重要技术:NVLink、NVSwitch和InfiniBand。节点内通信:NVLink和NVSwitch对于单个服务器或节点内的通信,NVIDIA开发了一种专有互连技术,提供GPU之间直接、高速的连接。NVLinkNVLink是一种点对点GPU互连,提供比标准PCIe通道显著更高的带宽。例如,单个第三代NVLink提供50 GB/s的双向带宽,而PCIe 4.0 x16插槽提供32 GB/s。更近期代的产品进一步提升了这一性能。通过直接连接GPU,NVLink允许更快地共享模型和数据,这对于模型并行特别有用,因为模型并行中大型模型的不同部分位于不同的GPU上。然而,简单的点对点连接有局限性。在拥有八个GPU的服务器中,您无法在每个GPU与其他每个GPU之间创建直接的NVLink连接。这将需要不切实际数量的端口和复杂的布线。NVSwitchNVSwitch解决了节点内的“全对全”通信问题。它充当NVLink的无阻塞交叉开关,使任何GPU都能以完整的NVLink速度同时与任何其他GPU通信。可以把它想象成一个网络交换机,但它是为紧密耦合的GPU所需的极端速度和低延迟而设计的。高端AI服务器,如NVIDIA的DGX系统,使用NVSwitch在节点内的所有GPU之间创建一个统一内存空间。正是这种架构使得在单台机器上训练真正巨大的模型成为可能。下图说明了架构差异。左侧,传统服务器中的GPU通过PCIe通信,数据通常被迫通过CPU,这会造成争用。右侧,NVSwitch在所有GPU之间提供了直接、高带宽的路径。digraph G { rankdir=TB; splines=ortho; node [shape=box, style="rounded,filled", fontname="sans-serif", margin="0.2,0.1"]; edge [fontname="sans-serif", fontsize=10]; subgraph cluster_pcie { label="典型基于PCIe的服务器"; bgcolor="#e9ecef"; style=rounded; cpu1 [label="CPU", shape=box, fillcolor="#74c0fc"]; pcie_switch1 [label="PCIe交换机", shape=circle, fillcolor="#ced4da", width=1.0]; gpu1 [label="GPU 0", fillcolor="#69db7c"]; gpu2 [label="GPU 1", fillcolor="#69db7c"]; gpu3 [label="GPU 2", fillcolor="#69db7c"]; gpu4 [label="GPU 3", fillcolor="#69db7c"]; cpu1 -> pcie_switch1 [label="PCIe", color="#868e96"]; pcie_switch1 -> {gpu1, gpu2, gpu3, gpu4} [label="PCIe", color="#868e96"]; } subgraph cluster_nvswitch { label="基于NVSwitch的服务器"; bgcolor="#e9ecef"; style=rounded; nvswitch_fabric [label="NVSwitch\n结构", shape=octagon, fillcolor="#9775fa", width=1.5, height=1.5, fixedsize=true]; gpu5 [label="GPU 0", fillcolor="#69db7c"]; gpu6 [label="GPU 1", fillcolor="#69db7c"]; gpu7 [label="GPU 2", fillcolor="#69db7c"]; gpu8 [label="GPU 3", fillcolor="#69db7c"]; gpu9 [label="GPU 4", fillcolor="#69db7c"]; gpu10 [label="GPU 5", fillcolor="#69db7c"]; gpu11 [label="GPU 6", fillcolor="#69db7c"]; gpu12 [label="GPU 7", fillcolor="#69db7c"]; {gpu5, gpu6, gpu7, gpu8, gpu9, gpu10, gpu11, gpu12} -> nvswitch_fabric [label="NVLink", dir=both, color="#7950f2"]; } }节点内GPU通信架构比较。NVSwitch模型为所有GPU提供直接、无阻塞的结构,消除了分层PCIe系统中存在的瓶颈。节点间通信:InfiniBand虽然NVLink和NVSwitch擅长节点内通信,但它们不连接独立的机器。要将训练任务从一台8-GPU服务器扩展到数百台服务器,您需要一个连接节点的高性能网络结构。这是InfiniBand的领域。InfiniBand是高性能计算(HPC)中使用的计算机网络标准,与传统以太网相比,它提供高吞吐量和非常低的延迟。现代InfiniBand标准,如NDR (NVIDIA Quantum-2),每链路可提供高达400 Gb/s的带宽。InfiniBand对AI工作负载的决定性特点是其支持远程直接内存访问(RDMA)。RDMA允许一台服务器的网络接口卡(NIC)直接读写另一台服务器的内存,而无需涉及任何一台服务器的操作系统或CPU。在分布式训练中的全归约操作期间,这意味着GPU的数据可以直接发送到远程GPU的内存,且开销极小。绕过CPU和内核显著降低了通信延迟,这在许多节点间执行频繁、小量更新时是一个重要因素。分层通信架构在实践中,这些技术被组合起来形成一个针对不同规模性能进行优化的分层通信架构。片上: 最快的通信发生在GPU内部。节点内: NVLink和NVSwitch为单个服务器内的GPU提供超高速结构。节点间: 带有RDMA的InfiniBand提供快速、低延迟的网络,用于将多个服务器连接成一个大型、紧密的训练集群。集群服务: 标准以太网通常用于较慢、不太重要的通信,例如连接到存储系统、管理网络或用户访问。这种分层方法确保最频繁和性能最敏感的通信,例如模型并行设置中相邻GPU之间的通信,通过最快的链路进行。digraph G { graph [fontname="sans-serif", ranksep=1.2, nodesep=0.5]; node [shape=box, style="rounded,filled", fontname="sans-serif", margin="0.3,0.2"]; edge [fontname="sans-serif", fontsize=10]; subgraph cluster_node1 { label="服务器节点 1"; bgcolor="#e9ecef"; style=rounded; node1_gpus [label="8个GPU在\nNVSwitch结构上", fillcolor="#a9e34b", shape=box3d, height=1.5]; node1_nic [label="InfiniBand\n网卡", fillcolor="#ffd8a8"]; node1_gpus -> node1_nic [style=dashed, color="#495057"]; } subgraph cluster_node2 { label="服务器节点 2"; bgcolor="#e9ecef"; style=rounded; node2_gpus [label="8个GPU在\nNVSwitch结构上", fillcolor="#a9e34b", shape=box3d, height=1.5]; node2_nic [label="InfiniBand\n网卡", fillcolor="#ffd8a8"]; node2_gpus -> node2_nic [style=dashed, color="#495057"]; } storage [label="网络存储\n(例如:对象存储)", shape=cylinder, fillcolor="#ced4da"]; node1_nic -> node2_nic [ label="InfiniBand (RDMA)\n(节点间梯度同步)" penwidth=3, color="#fd7e14" dir=both ]; node1_nic -> storage [label="以太网\n(数据加载)", color="#868e96"]; node2_nic -> storage [label="以太网\n(数据加载)", color="#868e96"]; }多节点AI集群的分层通信架构。NVLink/NVSwitch处理每个节点内的快速通信,而InfiniBand连接节点以进行分布式训练。标准以太网用于对延迟不那么敏感的任务,例如访问存储。选择合适的互连是基础设施与工作负载匹配的问题。对于小型模型的实验,标准网络可能就足够了。但对于基础模型生产规模的训练,使用NVLink、NVSwitch和InfiniBand的分层架构已不再是奢侈品,而是合理时间内完成训练任务的必要条件。云服务提供商已经认识到这一点,他们最先进的专注于AI的实例现在将这些高性能互连作为标准功能提供。