9.4. RDMA 用のクラスター設定
NVIDIA GPUDirect RDMA は、Remote Direct Memory Access (RDMA) を使用して直接 GPU 相互接続を提供します。RDMA 用にクラスターを設定するには、クラスター管理者が複数の Operator をインストールして設定する必要があります。
前提条件
- クラスター管理者として OpenShift クラスターにアクセスできる。
- クラスターには、サポート対象の NVIDIA GPU を備えた複数のワーカーノードがあり、互換性のある NVIDIA 高速ネットワークプラットフォームにアクセスできる。
- 分散ワークロードコンポーネントのインストール の説明に従って、必要な分散トレーニングコンポーネント共に Red Hat OpenShift AI をインストールした。
- 分散ワークロードの管理 の説明に従って、分散トレーニングリソースを設定した。
手順
- OpenShift コンソールにクラスター管理者としてログインします。
OpenShift AI で NVIDIA GPU サポートを有効にします。
このプロセスには、Node Feature Discovery Operator と NVIDIA GPU Operator のインストールが含まれます。詳細は、NVIDIA GPU の有効化 を参照してください。
注記NVIDIA GPU Operator をインストールした後、
ClusterPolicyカスタムリソースインスタンスでrdmaがenabledに設定されていることを確認します。NVIDIA ネットワークリソースの管理を単純化するには、次のように NVIDIA Network Operator をインストールして設定します。
- OpenShift ドキュメントの クラスターへの Operator の追加 の説明に従って、NVIDIA Network Operator をインストールします。
- NVIDIA ドキュメントの Network Operator Application Notes に記載されているサンプルデプロイメントの説明に従って、NVIDIA Network Operator を設定します。
[オプション] Single Root I/O Virtualization (SR-IOV) デプロイメントモードを使用するには、次のステップを実行します。
- OpenShift ドキュメントの SR-IOV Network Operator のインストール セクションの説明に従って、SR-IOV Network Operator をインストールします。
- OpenShift ドキュメントの SR-IOV Network Operator の設定 セクションの説明に従って、SR-IOV Network Operator を設定します。
以下のように、Machine Configuration Operator を使用して、コンテナーエンジン (CRI-O) 設定で非 root ユーザーの固定メモリーの制限を増やします。
-
OpenShift コンソールの Administrator パースペクティブで、Compute
MachineConfigs をクリックします。 - Create MachineConfig をクリックします。
プレースホルダーテキストを次の内容に置き換えます。
マシン設定の例
apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: labels: machineconfiguration.openshift.io/role: worker name: 02-worker-container-runtime spec: config: ignition: version: 3.2.0 storage: files: - contents: inline: | [crio.runtime] default_ulimits = [ "memlock=-1:-1" ] mode: 420 overwrite: true path: /etc/crio/crio.conf.d/10-custom-
default_ulimitsエントリーを編集して、設定に適切な値を指定します。デフォルト制限の詳細は、ナレッジベースソリューション Set default ulimits on CRIO Using machine config を参照してください。 - Create をクリックします。
- ワーカーノードを再起動してマシン設定を適用します。
この設定により、非 root ユーザーは、最も制限の厳しい OpenShift のデフォルトセキュリティーコンテキストで、RDMA を使用してトレーニングジョブを実行できるようになります。
-
OpenShift コンソールの Administrator パースペクティブで、Compute
検証
以下を実行して、Operator が正しくインストールされていることを確認します。
-
OpenShift Console の Administrator パースペクティブで、Workloads
Pods をクリックします。 - Project リストからプロジェクトを選択します。
- 新しくインストールされた各 Operator に対して Pod が実行されていることを確認します。
-
OpenShift Console の Administrator パースペクティブで、Workloads
以下を実行して、RDMA が使用されていることを確認します。
次の例に示すように、
PyTorchJobリソースを編集して、*NCCL_DEBUG*環境変数をINFOに設定します。NCCL デバッグレベルを INFO に設定する
spec: containers: - command: - /bin/bash - -c - "your container command" env: - name: NCCL_SOCKET_IFNAME value: "net1" - name: NCCL_IB_HCA value: "mlx5_1" - name: NCCL_DEBUG value: "INFO"- PyTorch ジョブを実行します。
Pod ログに次のテキストのようなエントリーが含まれていることを確認します。
Pod ログエントリーの例
NCCL INFO NET/IB : Using [0]mlx5_1:1/RoCE [RO]