网络

DGX 设备联网是一个重要主题,因为需要为 GPU 提供数据以进行处理。对于许多任务,尤其是深度学习,GPU 比 CPU 快得多。因此,用于连接 CPU 服务器的网络原则可能不足以用于 DGX 设备。随着 DGX 设备数量随时间增长,这一点尤其重要。

DGX-1 网络

为了理解 DGX-1 网络连接的最佳实践以及规划未来增长,最好从简要回顾 DGX-1 设备本身开始。回想一下,DGX-1 配备了四个 EDR InfiniBand 卡(每个 100 Gb/s)和两个 10Gb/s 以太网卡(铜缆)。这些网络接口可用于将 DGX-1 连接到网络以进行通信和存储。
图 1. 网络接口 网络接口

请注意,每两个 GPU 都连接到系统板上的单个 PCIe 交换机。该交换机还连接到 InfiniBand (IB) 网卡。为了减少延迟并提高吞吐量,来自这两个 GPU 的网络流量应 направляться 到相关的 IB 卡。这就是 DGX-1 设备中包含四个 IB 卡的原因。

DGX-1 InfiniBand 网络

如果您想使用 InfiniBand (IB) 网络连接 DGX 设备,理论上,您只需使用其中一个 IB 卡即可。但是,这将把数据流量推送到 CPU 之间的 QPI 链接上,对于 GPU 流量而言,这是一个非常慢的链接(即,它会成为瓶颈)。更好的解决方案是使用两个 IB 卡,每个 CPU 连接一个。可以是 IB0 和 IB2,或者 IB1 和 IB3,或者 IB0 和 IB3,或者 IB1 和 IB2。这将大大减少必须遍历 QPI 链接的流量。最佳性能始终是将所有四个 IB 链接都连接到 IB 交换机。

使用 IB 链接将所有四个 IB 卡连接到 IB 结构的最佳方法。如果您使用多个 DGX 设备进行训练,这将带来最佳性能(完全对分带宽和最低延迟)。

通常,最小的 IB 交换机带有 36 个端口。这意味着单个 IB 交换机可以使用所有四个 IB 卡容纳九 (9) 个 DGX-1 设备。这允许从 DGX-1 到交换机提供 400 Gb/s 的带宽。

如果您的应用程序不需要 DGX-1 设备之间的带宽,您可以如前所述,每个 DGX-1 使用两个 IB 连接。这允许您将最多 18 个 DGX-1 设备连接到单个 36 端口 IB 交换机。
注意:不建议仅使用单个 IB 卡,但如果出于某种原因这是配置,则可以将最多 36 个 DGX-1 设备连接到单个交换机。

对于更大数量的 DGX-1 设备,您可能需要使用两级交换。经典 HPC 配置是使用 36 端口 IB 交换机作为第一级(有时称为叶交换机),并将它们连接到单个大型核心交换机,有时称为 director 级交换机。最大的 director 级 InfiniBand 交换机具有 648 个端口。您可以使用多个核心交换机,但配置将变得相当复杂。如果您正在考虑这样做,请联系您的 NVIDIA 销售团队进行讨论。

对于两层交换,如果每个 DGX-1 设备的所有四个 IB 卡都用于连接到 36 端口交换机,并且没有过载,则每个交换机的最大 DGX-1 设备数量为 4。这是来自每个 DGX-1 的 4 个端口进入交换机,总共 16 个。然后,从叶交换机到核心交换机(director 级交换机)有 16 个上行链路。总共 40 个 36 端口叶交换机可以连接到 648 端口核心交换机 (648/16)。这使得 160 个 DGX-1 设备以完全双向带宽连接。

在设计 IB 网络时,您还可以使用所谓的过载订阅。过载订阅意味着来自上行链路的带宽小于进入设备的带宽(换句话说,带宽性能较差)。如果我们使用从 DGX-1 设备到第一级交换机(36 端口叶交换机)的 2:1 过载订阅,则每个 DGX-1 设备仅使用两个 IB 卡连接到交换机。这导致带宽比使用所有四个卡时要小,并且延迟也更高。

如果我们保持从叶交换机到核心目录交换机的网络带宽为 1:1(换句话说,没有过载订阅,完全双向带宽),那么我们可以将九 (9) 个 DGX-1 设备放入单个叶交换机中(总共 18 个端口从 DGX 设备进入叶交换机,以及 18 个上行链路端口连接到核心交换机)。结果是总共 36 个叶交换机可以连接到核心交换机。这使得总共 324 个 DGX-1 设备可以连接在一起。

您甚至可以通过使用从叶交换机到核心交换机的过载订阅来进一步定制 IB 网络。这可以通过使用四个 IB 连接到来自每个 DGX 设备的叶交换机,然后进行 2:1 过载订阅到核心交换机,或者甚至使用两个 IB 连接到叶交换机,然后进行 2:1 过载订阅到核心交换机来完成。这些设计留给用户自行决定,但如果您想考虑这样做,请联系您的 NVIDIA 销售团队进行讨论。

InfiniBand 网络连接的另一个重要方面是子网管理器 (SM)。SM 只是管理 IB 网络。在任何给定时间,都有一个 SM 管理 IB 结构,但您可以运行其他 SM,并在第一个 SM 崩溃时准备好接管。选择运行多少个 SM 以及在何处运行它们可能会对集群的设计产生重大影响。

首先要做的决定是您想在哪里运行 SM。如果需要,它们可以在 IB 交换机上运行。这称为硬件 SM,因为它在交换机硬件上运行。这样做的好处是您不需要任何其他也可以运行 SM 的服务器。在节点上运行 SM 称为软件 SM。运行硬件 SM 的一个缺点是,如果 IB 流量很大,SM 可能会遇到困难。对于大量的 IB 流量和更大的网络,最佳实践是在专用服务器上使用软件 SM。

第二个要做的决定是您想运行多少个 SM。至少,您必须运行一个 SM。最便宜的解决方案是运行单个硬件 SM。这对于 DGX-1 设备的小型集群(可能为 2-4 个)来说效果很好。随着单元数量的增长,您将需要考虑同时运行两个 SM 以获得 HA(高可用性)能力。您需要 HA 的原因是,集群上的用户更多,集群宕机的影响比少量设备更大。

随着设备数量的增长,请考虑在专用服务器(软件 SM)上运行 SM。您还需要为集群运行至少两个 SM。理想情况下,这意味着为 SM 提供两个专用服务器,但可能有一个更好的解决方案可以解决其他一些问题;头节点。

DGX-1 以太网

每个 DGX-1 系统都配有两个 10Gb/s 网卡。这些网卡可用于将系统连接到本地网络,以实现各种功能,例如登录和存储流量。作为起点,建议通过这些网卡将 NFS 流量推送到 DGX-1。您应该在此配置中监控 IO 对模型性能的影响。

如果您需要超过一级的以太网交换来连接所有 DGX-1 单元和存储,请注意如何配置网络。您很可能必须启用生成树协议以防止网络中的环路。生成树协议可能会影响网络性能,因此,您可能会看到应用程序性能下降。

DGX-1 随附的 InfiniBand 网卡也可以用作运行 TCP 的以太网网卡。卡上的端口是 QSFP28,因此您可以将它们插入兼容的以太网网络或兼容的 InfiniBand 网络。您必须向设备添加一些软件并更改网络,但您可以将网卡用作 100GigE 以太网卡。

有关更多信息,请参阅DGX-1 中切换 InfiniBand 和以太网

DGX-1 绑定网卡

DGX-1 提供两个 10GbE 端口。出厂时,这两个端口未绑定,但如果需要,可以绑定它们。特别是,可以实现跨两个 10 GbE 卡的 VLAN 标记的绑定网卡。

在将网卡绑定在一起之前,请确保您熟悉以下内容:
  • 确保您的网络团队参与其中,因为您需要为网卡选择绑定模式。
  • 确保您有可用的网络连接来拉取 VLAN 软件包。为此,首先设置一个基本的单网卡网络(无 VLAN/绑定)连接,并下载相应的软件包。然后,为 LACP/VLAN 重新配置交换机。
提示:由于网络在此过程中会反复启动和关闭,因此从远程控制台工作更容易。
以下过程逐步介绍了将两个网卡绑定在一起的示例:
  1. 编辑 /etc/network/interfaces 文件,以在标准网络上设置接口,以便我们可以访问所需的软件包。
    auto em1
    	iface em1 inet static
    	   address 10.253.0.50
     	   netmask 255.255.255.0
     	   network 10.253.0.0
     	   gateway 10.253.0.1
     	   dns-nameservers 8.8.8.8
  2. 启动更新后的接口。
    sudo ifdown em1 && sudo ifup em1
  3. 拉取所需的绑定和 VLAN 软件包。
    sudo apt-get install vlan
    sudo apt-get install ifenslave
  4. 关闭网络。
    sudo stop networking
  5. 将以下行添加到 /etc/modules 以加载相应的驱动程序。
    sudo echo "8021q" >> /etc/modules
    sudo echo "bonding" >> /etc/modules
  6. 加载驱动程序。
    sudo modprobe 8021q
    sudo modprobe bonding
  7. 重新配置您的 /etc/network/interfaces 文件。有一些配置参数将取决于客户网络,您需要与您的网络工程师之一合作。
    以下示例在 em1/em2 上创建 IP 为 172.16.1.11 和 VLAN ID 为 430 的绑定网络。您在网卡名称 (bond0.###) 中指定 VLAN ID。另请注意,此示例使用绑定模式 4。您使用哪种模式取决于您和您的情况。
    auto lo
    iface lo inet loopback
    
    
    # The following 3 sections create the bond (bond0) and associated network ports (em1, em2)
    auto bond0
    iface bond0 inet manual
    bond-mode 4
    bond-miimon 100
    bond-slaves em1 em2
     
    auto em1
    iface em1 inet manual
    bond-master bond0
    bond-primary em1
     
    auto em2
    iface em2 inet manual
    bond-master bond0
    
    
    # This section creates a VLAN on top of the bond.  The naming format is device.vlan_id
    auto bond0.430
    iface bond0.430 inet static
    address 172.16.1.11
    netmask 255.255.255.0
    gateway 172.16.1.254
    dns-nameservers 172.16.1.254
    dns-search company.net
    vlan-raw-device bond0
  8. 重启网络。
    sudo start networking
  9. 启动绑定的接口。
    ifup bond0
  10. 让您的网络工程师重新配置交换机上的 LACP 和 VLAN。
  11. 测试配置。

DGX-2 网络

由于 DGX-2 中相对于 DGX-1DGX Station 有更多的网络设备,并且它们可以以不同的方式使用,要了解有关 DGX-2 网络的更多信息,请参阅 DGX-2 用户指南