Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

NVIDIA 配置

NVIDIA® ConnectX® 系列网络接口卡 (NIC) 提供先进的硬件卸载和加速功能,速度高达 400G,支持以太网和 Infiniband 协议。

进行更改时,请务必参考官方制造商文档。本节提供基于 AI JVD 实验室测试的一些指南。

将 NVIDIA ConnectX NIC 从 Infiniband 转换为以太网

默认情况下,NVIDIA ConnectX NIC 设置为作为 Infiniband 接口运行,并且必须使用 mlxconfig 工具转换为以太网。

1) 使用 sudo mst status 检查 ConnectX NIC 的状态。

注意:Mellanox 软件工具 (MST) 是 Mellanox 固件工具套件的一部分,可用于管理 Mellanox 网络适配器并与之交互。

如有必要,启动 mst 服务或加载 mst 模块。

示例:

示例显示“MST PCI模块未 加载”。 要加载它,请使用命令

2) 确定要转换的接口,

sudo mst status -v 命令将提供系统上检测到的 Mellanox 设备(ConnectX-6 和 ConnectX-7 NIC)的列表,以及它们的类型、Mellanox 设备名称、PCI 地址、RDMA 接口名称、NET 接口名称和 NUMA ID,如下例所示:

对于列表中的第一个接口,您可以识别以下内容:

  • 类型 = ConnectX7(rev:0)
  • Mellanox 设备名称 = mt4129_pciconf7 (/dev/mst/mt4129_pciconf7)
  • PCI 地址 = cb:00.0
  • RDMA 接口名称 = mlx5_12
  • NET 接口名称 = net-gpu6_eth
  • NUMA = 1

请注意,对于某些接口,名称遵循标准 Linux 接口命名方案(例如 net-enp14s0f1np1),而其他接口则不然(例如 net-gpu0_eth)。不遵循标准的接口名称是用户定义的名称,以便于识别。这意味着 /etc/netplan/ 中的默认名称已更改。我们将在本节后面展示如何执行此作的示例。

3) 识别给定接口正在运行什么模式

mlxconfig -d <device> 查询

示例:

请注意,您需要使用 Mellanox 设备名称,包括路径 (/dev/mst/mt4129_pciconf7)。

此外,LINK_TYPE_P1 和 LINK_TYPE_P2 指的是双端口 Mellanox 适配器中的两个物理端口。

4) 如果接口在 Infiniband 模式下运行,您可以使用以下命令更改以太网模式的模式

mlxconfig -d <device> set [LINK_TYPE_P1=<link_type>] [LINK_TYPE_P2=<link_type>]

示例

同样,请注意您需要使用 Mellanox 设备名称,包括路径 (/dev/mst/mt4129_pciconf7)。

注意: 通过 mlxconfig 进行更改需要重新启动盒子。

要检查接口的状态,您可以使用 mlxlink:

更多详情可以参考:

如何查找 Mellanox 适配器类型和固件/驱动程序版本 (Linux) (nvidia.com)

固件支持和下载 - 识别适配器卡 (nvidia.com)

识别 NIC 和 GPU 映射并分配适当的接口名称

NIC 可随时由任何 GPU 使用;给定的 GPU 只能使用特定的 NIC 卡与外部世界通信,这并没有硬编码。但是,GPU 和 NIC 之间存在首选的通信路径,在某些情况下可以将其视为它们之间的 1:1 对应关系。这将在以下步骤中显示。

NCCL(NVIDIA 集体通信库)将选择从给定 GPU 到其中一个 NIC 的最佳连接路径。

要确定 NCCL 选择的路径以及 GPU 和 NIC 之间的最佳路径是什么,请执行以下步骤:

使用 nvidia-smi topo -m 命令(显示有关系统的拓扑信息)来识别 GPU 和 NIC 之间的连接类型:

示例:

  • DGX H100:

图 92.Nvidia H100 系统管理接口 (SMI) 系统拓扑信息

系统管理接口 SMI |NVIDIA 开发者

基于我们的研究:

表 26:每种连接类型的性能

连接类型 描述 性能
像素 PCIe 安装在同一台交换机上 良好
PXB PCIe 可通过多个交换机,但不能通过主机桥接 良好
PHB PCIe 交换机并通过同一 NUMA 上的主机网桥 - 使用 CPU 确定
节点 PCIe 交换机以及同一 NUMA 上的多个主机网桥
系统 PCIe 交换机和 NUMA 节点之间的 QPI/UPI 总线 - 使用 CPU 非常糟糕
内华达州# NVLink 非常好
  • HGX A100:

图 93.Nvidia A100 系统管理接口 (SMI) 系统拓扑信息

识别 PBX 连接

如果关注 nvidia-smi 输出的突出显示部分,您可以看到每个 GPU 都有一个或多个 PXB 类型的 NIC 连接。这是从每个 GPU 到给定 NIC 的首选“直接”路径。这意味着,当 GPU 需要与远程设备通信时,它将使用这些特定 NIC 之一作为第一个选项。

  • DGX H100:

图 94.Nvidia H100 系统管理接口 (SMI) 系统拓扑 PBX 连接

图 95.Nvidia H100 系统架构

A diagram of a computer system Description automatically generated

  • HGX A100:

图 96.Nvidia A100 系统管理接口 (SMI) 系统拓扑 PBX 连接

图 97.Nvidia A100 系统架构

A computer diagram of a computer network Description automatically generated with medium confidence

注意:这些路径是固定的。

您还可以在 Nvidia 的 A100 或 H100 用户指南中找到这些映射。

例如,在 DGX H100/H200 系统上,根据 NVIDIA 的 DGX H100/H200 系统用户指南表 5 和表 6 的端口映射如下:

表 27:GPU 到 NIC 的映射

端口 ConnectX GPU 默认 RDMA NIC
OSFP4P2 CX1 0 IBP24S0 mlx5_0 网卡 0
OSFP3P2 CX3 1 IBP64S0 mlx5_3 NIC3
OSFP3P1 CX2 2 IBP79S0 mlx5_4 NIC4
OSFP4P1 CX0 3 IBP94S0 mlx5_5 NIC5
OSFP1P2 CX1 4 IBP154S0 mlx5_6 NIC6
OSFP2P2 CX3 5 IBP192S0 mlx5_9 NIC9
OSFP2P1 CX2 6 IBP206S0 mlx5_10 NIC10
OSFP1P1 CX0 7 IBP220S0 mlx5_11 NIC11

表 28:GPU 到 NIC 的连接

NIC GPU0 GPU1 GPU2 GPU3 GPU4 GPU5 GPU6 GPU7
网卡 0 PXB 系统 系统 系统 系统 系统 系统 系统
NIC3 系统 PXB 系统 系统 系统 系统 系统 系统
NIC4 系统 系统 PXB 系统 系统 系统 系统 系统
NIC5 系统 系统 系统 PXB 系统 系统 系统 系统
NIC6 系统 系统 系统 系统 PXB 系统 系统 系统
NIC9 系统 系统 系统 系统 系统 PXB 系统 系统
NIC10 系统 系统 系统 系统 系统 系统 PXB 系统
NIC11 系统 系统 系统 系统 系统 系统 系统 PXB

图 98.Nvidia H100 前面板

A screenshot of a computer Description automatically generated

有关 A100 系统的更多信息和映射,请检查:

NVIDIA HGX A100 系统介绍 — NVIDIA HGX A100 用户指南 1 文档

NVIDIA DGX H100/H200 系统简介 — NVIDIA DGX H100/H200 用户指南 1 文档

更改 NIC 的接口名称,并分配 IP 地址和路由

NIC 属性(如 IP 地址或接口名称)可以通过编辑并重新应用到网络计划来创建。

网络配置在文件/etc/netplan/01-netcfg.yaml中进行了说明,如下表所示。任何属性更改都涉及编辑此文件并重新应用网络计划,如本部分后面的示例所示。

表 29:Nvidia HGX A100 接口配置示例:

netcfg.yaml 输出
jvd@A100-01:/etc/netplan$ 更多 01-netcfg.yaml
# 这是 'subiquity' 编写的网络配置 gpu0_eth: gpu4_eth:
网络: 匹配: 匹配:
版本:2 MAC地址:94:6D:AE:54:72:22 MAC地址:94:6D:AE:5B:28:70
以太网: DHCP4:错误 DHCP4:错误
mgmt_eth: MTU:9000 MTU:9000
匹配: 地址: 地址:
MAC地址:7C:C2:55:42:B2:28 - 10.200.0.8/24 - 10.200.4.8/24
DHCP4:错误 路线: 路线:
地址: - 至:10.200.0.0/16 - 至:10.200.0.0/16
- 10.10.1.0/31 通过: 10.200.0.254 通过: 10.200.4.254
域名服务器: 发件人: 10.200.0.8 发件人: 10.200.4.8
地址: 集合名称:gpu0_eth 集合名称:gpu4_eth
- 8.8.8.8 gpu1_eth: gpu5_eth:
路线: 匹配: 匹配:
- to:默认 MAC地址:94:6d:ae:5b:01:d0 MAC地址:94:6D:AE:5B:27:F0
通过: 10.10.1.1 DHCP4:错误 DHCP4:错误
集合名称:mgmt_eth MTU:9000 MTU:9000
weka_eth: 地址: 地址:
匹配: - 10.200.1.8/24 - 10.200.5.8/24
MAC地址:B8:3F:D2:8B:68:E0 路线: 路线:
DHCP4:错误 - 至:10.200.0.0/16 - 至:10.200.0.0/16
MTU:9000 通过: 10.200.1.254 通过: 10.200.5.254
地址: 发件人: 10.200.1.8 发件人: 10.200.5.8
- 10.100.1.0/31 集合名称:gpu1_eth 集合名称:gpu5_eth
路线: gpu2_eth: gpu6_eth:
- 收件人:10.100.0.0/22 匹配: 匹配:
通过:10.100.1.1 MAC地址:94:6D:AE:5B:28:60 MAC地址:94:6D:AE:54:78:E2
集合名称:weka_eth DHCP4:错误 DHCP4:错误
  MTU:9000 MTU:9000
  地址: 地址:
  - 10.200.2.8/24 - 10.200.6.8/24
  路线: 路线:
  - 至:10.200.0.0/16 - 至:10.200.0.0/16
  通过: 10.200.2.254 通过: 10.200.6.254
  发件人: 10.200.2.8 发件人: 10.200.6.8
  集合名称:gpu2_eth 集合名称:gpu6_eth
  gpu3_eth: gpu7_eth:
  匹配: 匹配:
  MAC地址:94:6D:AE:5B:01:E0 MAC地址:94:6D:AE:54:72:12
  DHCP4:错误 DHCP4:错误
  MTU:9000 MTU:9000
  地址: 地址:
  - 10.200.3.8/24 - 10.200.7.8/24
  路线: 路线:
  - 至:10.200.0.0/16 - 至:10.200.0.0/16
  通过: 10.200.3.254 通过: 10.200.7.254
  发件人: 10.200.3.8 发件人:10.200.7.8
  集合名称:gpu3_eth 集合名称:gpu7_eth

将接口名称映射到特定 NIC(物理接口)

将接口名称映射到配置文件中物理接口的 MAC:

图 99.Nvidia A100 物理接口识别示例

其中:

EN = 以太网网络接口。

P203S0 = 网络接口的物理位置。

203 公交车号码。

s0 = 总线上的插槽编号 0。

F1 = 网络接口的功能编号 1。

np1 = 网络端口 1

A computer code with black text Description automatically generated

功能 0:可能是主以太网接口。

功能 1:可能是第二个以太网接口。

功能 2:可能是管理接口或诊断接口。

图 100.Nvidia A100 网络计划文件修改示例

您可以在 devnames 文件中找到所有逻辑接口的名称:

使用 netplan apply 命令应用更改

图 101.Nvidia A100 网络计划应用示例

更改 NIC 名称

更改配置文件中的 set-name 值并保存更改:

图 102.Nvidia A100 网络计划接口名称更改示例

使用 netplan apply 命令应用更改

图 103.Nvidia A100 网络计划接口名称更改应用和验证示例

A computer screen shot of a computer code Description automatically generated

更改当前 IP 地址或将 IP 地址分配给 NIC

在配置文件中的相应接口下更改或添加地址,然后保存更改:

图 104.Nvidia A100 网络计划接口 IP 地址更改示例

输入前面带连字符并缩进的 IP 地址;确保添加子网掩码。

使用 netplan apply 命令应用更改

图 105.Nvidia A100 网络计划接口新 IP 地址应用和验证示例

更改路由或添加到 NIC

在配置文件中的相应接口下更改或添加路由,然后保存更改。

图 106.Nvidia A100 netplan 附加路由示例

使用 netplan apply 命令应用更改

图 107.Nvidia A100 netplan 附加路由应用和验证示例:

配置 NVIDIA DCQCN – ECN

图 108:NVIDIA DCQCN – ECN

从 MLNX_OFED 4.1 开始,默认启用 ECN(在固件中)。

要确认已启用 ECN,请使用以下命令: mlxconfig -d <device> q | grep ROCE_CC

示例:

掩码 255 表示已为 NIC 上配置的所有 TC(流量类)启用 DCQCN (ECN)。

要禁用 ECN,可以使用以下命令更改掩码: mlxconfig -d <device> s ROCE_CC_PRIO_MASK_P1=<mask>

示例:

如果要避免系统询问是否要应用新配置,请添加 -y 选项,如以下示例所示:

输出指出需要重新启动服务器。或者,您可以使用以下命令重置接口: mlxfwreset -d <device> -l 3 -y r。

设备可以输入为 /dev/mst/mt4129_pciconf2mlx5_0(gpu0_eth 格式不是此命令的有效格式)

示例:

ECN作参数位于以下路径上: /sys/class/net/<interface>/ecn

使用以下命令查找接口:

对于 RoCE 流量,IP 报头上的 ECN 位始终标有 10。

通知点 (NP) 参数

启用 ECN 的接收方收到带有 ECN 标记的 RoCE 数据包时,会通过发送 CNP(拥塞通知数据包)进行响应。

以下命令描述通知参数:

示例:

cnp_802p_prio = CNP 数据包的 PCP(优先级代码点)字段的值。

PCP 是使用 IEEE 802.1Q 定义的 VLAN 标记帧时,以太网帧头中的一个 3 位字段。

cnp_dscp = CNP 数据包的 DSCP(差异化服务代码点)字段的值。

min_time_between_cnps = 发送的两个连续 CNP 之间的最短时间。如果 ECN 标记的 RoCE 数据包到达的时间小于 min_time_between_cnps 自上次发送的 CNP 以来,则不会发送任何 CNP 作为响应。此值以微秒为单位。默认值 = 0

输出显示,roce_np已为所有优先级值启用。

注意:发送 CNP 数据包是按端口全局处理的,此处启用的任何优先级都会将发送 CNP 数据包设置为 on (1)。

要更改上述属性,请使用 mlxconfig 实用程序:

示例:

反应点 (RP) 参数

启用 ECN 的发送方收到 CNP 数据包时,会通过减慢指定流的传输速度(优先级)来做出响应。

以下参数定义 CNP 数据包到达后流量的速率限制方式:

示例:

rpg_max_rate = 反应点节点可以传输的最大速率。达到此限制后,RP 不再受速率限制。

此值以 Mbits/sec 为单位配置。默认值 = 0(全速 - 无最大值)

输出显示,roce_rp已为所有优先级值启用。

注意:处理 CNP 是按优先级配置的。

要检查 ECN 统计信息,请使用: ethtool -S <interface> |GREP ECN

示例:

NVIDIA DCQCN – PFC 配置

IEEE 802.1Qbb 将暂停功能应用于以太网链路上的特定流量类别。

图 109:NVIDIA DCQCN – PFC 配置A diagram of a computer program Description automatically generated with medium confidence

要检查接口上是否启用了 PFC,请使用: mlnx_qos -i <接口>

示例:

要启用/禁用 PFC,请使用以下步骤: mlnx_qos -i <interface> --pfc <0/1>,<0/1>,<0/1>,<0/1>,<0/1>,<0/1>,<0/1>,<0/1>

示例:

- 检查当前配置:

示例中的输出指示,已为优先级 3 启用 PFC。

  • 为优先级 2 启用 PFC,为优先级 3 禁用 PFC:
此示例说明如何更改配置;确保它与叶节点上的 PFC 配置匹配(set class-of-service forwarding-classes class NO-LOSS pfc-priority 3)。
  • 检查 PFC 统计信息:
注意:Pause 计数器仅通过 ethtool 对启用了 PFC 的优先级可见。

用于 RDMA-CM QPS(RDMA 流量)的 NVIDIA TOS/DSCP 配置

图 110:NVIDIA TOS/DSCP

A diagram of a machine Description automatically generated

必须正确标记 RDMA 流量,以便交换机对其进行正确分类,并将其置于无损队列中以便进行正确处理。标记可以是 IP 报头中的 DSCP,也可以是以太网帧 vlan-tag 字段中的 PCP。是否使用 DSCP 或 PCP 取决于 GPU 服务器和交换机之间的接口是否正在执行 VLAN 标记 (802.1q)。

要检查当前配置并更改 RDMA 出站流量的 TOS 值,请使用 MLNX_OFED 4.0 中的 cma_roce_tos 脚本。

要检查 TOS 字段的当前值,请输入 sudo cma_roce_tos,不带任何选项。

示例:

在本例中,当前 TOS 值 = 106,这意味着 DSCP 值 = 48,ECN 位设置为 10。

注意:TOS字段为8位,而DSCP为6位。要将 DSCP 值设置为 X,您需要将此值乘以 4 (SHIFT 2)。例如,要将 DSCP 值设置为 24,(24x4=96)。将 TOS 位设置为 96。您需要添加 2 以包含 ECN。

A screenshot of a graph Description automatically generated

要更改值,请使用: cma_roce_tos –d <ib_device> -t <TOS>

您需要在此命令中输入ib_device。以下脚本会自动执行物理接口与ib_device之间的映射。

示例:

图 111.脚本结果示例

图 112.参考 TOS、DSCP 映射:

A table with numbers and symbols

配置 NVIDIA 以使用 NCCL 控制流量的管理接口

NCCL 使用 TCP 会话将进程连接在一起,并交换 RoCE、GID(全局 ID)、本地和远程缓冲区地址、RDMA 密钥(用于内存访问权限的 RKEY)的 QP 信息

这些流量与用于同步模型参数、部分运算结果等的 RoCEv2 流量(端口 4791)是分开的。

这些会话在作业启动时创建,默认情况下使用其中一个 GPU 接口(与用于 RoCEv2 流量的接口相同)。

示例:

建议在启动作业时移至管理界面(连接到(前端交换矩阵),包括以下参数: export NCCL_SOCKET_IFNAME=“mgmt_eth”

示例:

默认情况下,这些会话启用 ECN; net.ipv4.tcp_ecn = 1 ,但可以使用以下方式禁用: sudo sysctl -w net.ipv4.tcp_ecn=0