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>クエリ

例:

パス(/dev/mst/mt4129_pciconf7)を含むMellanoxデバイス名を使用する必要があることに注意してください。

また、LINK_TYPE_P1とLINK_TYPE_P2は、デュアルポートMellanoxアダプターの2つの物理ポートを指します。

4) インターフェイスがInfinibandモードで動作している場合、を使用してイーサネットモードのモードを変更できます。

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

例文

ここでも、パス(/dev/mst/mt4129_pciconf7)を含むMellanoxデバイス名を使用する必要があることに注意してください。

注意: mlxconfig による変更には、ボックスの電源を入れ直す必要があります。

インターフェイスのステータスを確認するには、mlxlinkを使用できます。

詳細については、以下を参照してください。

Mellanox アダプターの種類とファームウェア/ドライバーのバージョンを見つける方法 (Linux) (nvidia.com)

ファームウェアのサポートとダウンロード - アダプターカードの識別(nvidia.com)

NICとGPUのマッピングの識別と適切なインターフェイス名の割り当て

NIC は、いつでもどの GPU でも使用できます。特定のGPUが特定のNICカードを使用して外部とのみ通信できることはハードコードされていません。ただし、GPU と NIC の間には優先される通信パスがあり、場合によっては 1:1 の対応と見なすことができます。これは、以下の手順で示されます。

NCCL(NVIDIA Collective Communications Library)は、特定のGPUからいずれかのNICへの接続が最適なパスを選択します。

NCCL によって選択されたパスと、GPU と NIC の間の最適なパスを特定するには、次の手順に従います。

システムに関するトポロジー情報を表示するnvidia-smi topo -mコマンドを使用して、GPUとNIC間の接続タイプを特定します。

:

  • DGX H100:

図92.Nvidia H100システム管理インターフェイス(SMI)システムトポロジー情報

システム管理インターフェイスSMI |NVIDIA開発者

私たちの調査によると:

表26:接続タイプごとのパフォーマンス

接続タイプ 説明 パフォーマンス
PIX 同じスイッチ上のPCIe 良い
PXB 複数のスイッチを介したPCIeだが、ホストブリッジではない 良い
PHB PCIeスイッチと同じNUMA上のホストブリッジ間 - CPUを使用 OK
ノード PCIeスイッチと複数のホストブリッジを同じNUMAにまたがる 悪い
システム PCIe スイッチと NUMA ノード間の QPI/UPI バス間 - CPU を使用 非常に悪い
ネバダ州# NVLink とても良い
  • HGX A100:

図93.Nvidia A100 システム管理インターフェイス(SMI)システムトポロジー情報

PBX接続を特定する

nvidia-smi 出力の強調表示されたセクションに注目すると、各 GPU に PXB タイプの NIC 接続が 1 つ以上あることがわかります。これは、各GPUから特定のNICへの優先される「直接」パスです。つまり、GPU がリモート デバイスと通信する必要がある場合、最初のオプションとしてこれらの特定の NIC の 1 つが使用されます。

  • 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へのマッピング

ポート コネクトX GPU デフォルト RDMA NIC
OSFP4P2 CX1 0 IBP24S0 mlx5_0 NIC0
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
NIC0 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アドレスとルートの割り当て

IPアドレスやインターフェイス名などのNIC属性は、ネットプランを編集して再適用することで作成できます。

ネットワーク設定は、以下の表の例に示すように、ファイル/etc/netplan/01-netcfg.yamlに記述されています。属性の変更には、このセクションの後半の例で示すように、このファイルを編集し、ネットワークプランを再適用する必要があります。

表29:Nvidia HGX A100インターフェイス設定例:

netcfg.yaml出力
jvd@A100-01:/etc/netplan$ more 01-netcfg.yaml
# これは 'subiquity' によって書かれたネットワーク設定です gpu0_eth: gpu4_eth:
ネットワーク: 一致: 一致:
バージョン:2 MACアドレス: 94:6D:AE:54:72:22 MACアドレス: 94:6D:AE:5B:28:70
イーサネット: dhcp4:false dhcp4:false
mgmt_eth: MTU:9000 MTU:9000
一致: アドレス: アドレス:
MACアドレス:7C:C2:55:42:B2:28 - 10.200.0.8/24 - 10.200.4.8/24
dhcp4:false ルート: ルート:
アドレス: - 宛先: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:false dhcp4:false
セット名: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:false - 宛先: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:false dhcp4:false
  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:false dhcp4:false
  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番目のイーサネットインターフェイスである可能性があります。

機能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 netplanインターフェース、新規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_pciconf2またはmlx5_0として入力できます( gpu0_ethこのコマンドには有効な形式ではありません)

例:

ECN操作パラメーターは、次のパスにあります/sys/class/net/<interface>/ecn

インターフェイスを見つけるには、次のコマンドを使用します。

IPヘッダーのECNビットは、RoCEトラフィックに対して常に10でマークされます。

通知ポイント(NP)パラメーター

ECN対応の受信側は、ECNでマークされたRoCEパケットを受信すると、CNP(Congestion Notification Packets)を送信して応答します。

以下のコマンドは、通知パラメーターを記述します。

例:

cnp_802p_prio = CNP パケットの PCP(プライオリティ コード ポイント)フィールドの値。

PCPは、IEEE 802.1Qで定義されているVLANタグ付きフレームを使用する場合のイーサネットフレームヘッダー内の3ビットフィールドです。

cnp_dscp = CNPパケットのDSCP(Differentiated Services Code Point)フィールドの値。

min_time_between_cnps = 連続して送信された 2 つの CNP 間の最小時間。ECNでマークされたRoCEパケットが、前回送信されたCNPからmin_time_between_cnps未満の期間に到着した場合、CNPは応答として送信されません。この値はマイクロ秒単位です。デフォルト = 0

出力は、すべての優先度値でroce_npが有効になっていることを示しています。

注:CNPパケットの送信はポートごとにグローバルに処理され、ここで有効にした優先度を指定すると、CNPパケットの送信が(1)に設定されます。

上記の属性を変更するには、 mlxconfig ユーティリティを使用します。

例:

反応点(RP)パラメータ

ECN対応送信者がCNPパケットを受信すると、指定されたフロー(優先度)の送信を遅くすることで応答します。

以下のパラメーターは、CNP パケット到着後のトラフィック フローのレート制限方法を定義します。

例:

rpg_max_rate = リアクションポイントノードが送信できる最大レート。この制限に達すると、RP はレート制限されなくなります。

この値はMbits/秒で設定されます。デフォルト = 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 <interface>を使用します。

例:

PFCを有効/無効にするには、次の手順に従います。 mlnx_qos -i <interface> --pfc <0/1>,<0/1>,<0/1>,<0/1>,<0/1>,<0/1>,<0/1>,<0/1>

例:

- 現在の設定を確認します。

この例の出力は、PFCが優先度3に対して有効になっていることを示しています。

  • 優先度2のPFCを有効にし、優先度3のPFCを無効にします。
この例では、設定を変更する方法を示しています。リーフノードのPFC設定と一致していることを確認します(set class-of-service forwarding-classes class NO-LOSS pfc-priority 3)。
  • PFC統計の確認:
注: Pause カウンターは、PFC が有効になっている優先度に対してのみ ethtool を介して表示されます。

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に設定します。ECNを含めるには、2を追加する必要があります。

A screenshot of a graph Description automatically generated

値を変更するには、cma_roce_tos –d -t <TOS> を使用します。

このコマンドにib_deviceを入力する必要があります。次のスクリプトは、物理インターフェイスとib_device間のマッピングを自動的に実行します。

例:

図111.スクリプト結果の例

図112.参照TOS、DSCPマッピング:

A table with numbers and symbols

NCCL 制御トラフィックに管理インターフェイスを使用するための NVIDIA の設定

NCCLはTCPセッションを使用してプロセスを相互に接続し、RoCE、GID(グローバルID)、ローカルおよびリモートバッファアドレス、RDMAキー(メモリアクセス許可のRKEY)のQP情報を交換します

これらは、モデルパラメーターや部分的な操作結果などの同期に使用されるRoCEv2トラフィック(ポート4791)とは別のものです。

これらのセッションはジョブの開始時に作成され、デフォルトではGPUインターフェイス(RoCEv2トラフィックに使用されるのと同じインターフェイス)の1つを使用します。

例:

ジョブを開始するときに、次のパラメーターを含めて管理インターフェイス((フロントエンドファブリックに接続)に移動することをお勧めします: export NCCL_SOCKET_IFNAME="mgmt_eth"

例:

これらのセッションでは、ECNがデフォルトで有効になっています。 net.ipv4.tcp_ecn = 1 ですが、 sudo sysctl -w net.ipv4.tcp_ecn=0 で無効にできます。