すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:RDMA: 分散トレーニング用の高性能ネットワーク

最終更新日:Jul 22, 2024

コンピューティングリソースの最適な使用は、基礎モデルの並列コンピューティングで重要です。 これは、通信トラフィックを最小化し、通信との重複計算を行い、通信効率を向上させることで実現できる。 このトピックでは、高性能ネットワークを設定する方法について説明します。

制限事項

このトピックは、サーバーレスLingjunリソースを使用するDLCジョブにのみ適用されます。

高性能ネットワーク変数の設定

デフォルトでは、PAIのLingjunリソースはリモートダイレクトメモリアクセス (RDMA) ネットワークを使用し、NVIDIA Collective Communications Library (NCCL) 環境変数に最適な設定を採用しています。 トレーニングフレームワーク、通信フレームワーク、およびモデル機能に基づいて、NCCL環境変数を設定できます。 最適なパフォーマンスを確保するために、PAIのデフォルト設定を使用することを推奨します。

PAIのデフォルト設定

次の表に、さまざまなLingjun仕様のPAIのNCCL環境変数のデフォルト設定を示します。

Lingjun仕様

NCCL環境変数

  • ml.gu7xf.c96m1600.8-gu108

  • ml.gu7xf.8xlarge-gu108

  • ml.gu7ef.c96m1600.8-gu100

export NCCL_IB_TC=136
export NCCL_IB_SL=5
export NCCL_IB_GID_INDEX=3
export NCCL_SOCKET_IFNAME=eth
export NCCL_DEBUG=INFO
export NCCL_IB_HCA=mlx5
export NCCL_IB_TIMEOUT=22
export NCCL_IB_QPS_PER_CONNECTION=8
export NCCL_NET_PLUGIN=none

ml.gu8xf.8xlarge-gu108

export NCCL_IB_TC=136
export NCCL_IB_SL=5
export NCCL_IB_GID_INDEX=3
export NCCL_SOCKET_IFNAME=eth
export NCCL_DEBUG=INFO
export NCCL_IB_HCA=mlx5
export NCCL_IB_TIMEOUT=22
export NCCL_IB_QPS_PER_CONNECTION=8
export NCCL_NET_PLUGIN=none

詳細については、このトピックの「NCCL環境変数」セクションをご参照ください。

NCCL環境変数

次の表に、主要なNCCL環境変数を示します。 その他の環境変数については、「NCCLドキュメント」をご参照ください。

キーNCCL環境変数

説明

NCCL_IB_TC

Alibaba Cloudが使用するネットワークマッピングルール。 この変数を設定しない場合、または無効な値を指定した場合、ネットワークパフォーマンスが影響を受ける可能性があります。

NCCL_IB_GID_INDEX

RDMAによって使用されるグローバルIDインデックス。 この変数を設定しない場合、または無効な値を指定すると、NCCLにエラーが発生します。

NCCL_SOCKET_IFNAME

NCCLが接続を確立するために使用するIPインターフェイス。 この変数の推奨値は、Lingjun仕様によって異なります。 この変数を設定しない場合、または無効な値を指定した場合、NCCLは接続の確立に失敗する可能性があります。

NCCL_デバッグ

NCCLからのデバッグ情報。 トラブルシューティングを高速化するため、この変数をINFOに設定することを推奨します。

NCCL_IB_HCA

RDMA通信に使用されるInfiniBandデバイス。 InfiniBandデバイスの数と命名規則は、コンピューティングノードによって異なります。 この変数を指定しないか、無効な値を指定すると、ネットワークパフォーマンスに影響を与える可能性があります。

NCCL_IB_タイムアウト

RDMA接続でタイムアウトエラーがトリガーされるまでの期間。 タイムアウトが長くなると、トレーニングジョブのフォールトトレランスが高くなります。 この変数を指定しない、または無効な値を指定すると、トレーニングジョブが中断される可能性があります。

NCCL_IB_QPS_PER_接続

各接続に使用されるInfiniBandキューペアの数。 キューペアの数が多いほど、ネットワークスループットが高くなります。

イメージの設定

公式イメージ

公式PAIイメージを使用して、Lingjunリソースを使用するDLCジョブを送信できます。 詳細については、「Lingjun resource quotas」トピックの「リソースクォータの使用」セクションをご参照ください。 image.png

カスタム画像

Lingjunリソースを使用するDLCジョブのカスタムイメージを作成して使用する場合は、次の考慮事項に注意してください。

環境要件

  • Compute Unified Device Architecture (CUDA) 11.2

  • NCCL 2.12.10

  • Python 3

RDMAライブラリのインストール

サーバーレスLingjunリソースによって提供される高性能RDMAネットワークを活用するには、対応するRDMAライブラリをカスタムイメージのDockerファイルにインストールします。

サンプルコード:

RUN apt-get update && \
    apt-get install -y --allow-downgrades --allow-change-held-packages --no-install-recommends libnl-3-dev libnl-route-3-dev libnl-3-200 libnl-route-3-200 iproute2 udev dmidecode ethtool && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

RUN cd /tmp/ && \
    wget http://pythonrun.oss-cn-zhangjiakou.aliyuncs.com/rdma/nic-libs-mellanox-rdma-5.2-2/nic-lib-rdma-core-installer-ubuntu.tar.gz && \
    tar xzvf nic-lib-rdma-core-installer-ubuntu.tar.gz && \
    cd nic-lib-rdma-core-installer-ubuntu && \
    echo Y | /bin/bash install.sh && \
    cd .. && \
    rm -rf nic-lib-rdma-core-installer-ubuntu && \
    rm -f nic-lib-rdma-core-installer-ubuntu.tar.gz

関連ドキュメント

サーバーレスLingjunリソースを使用してトレーニングジョブを送信する方法については、「トレーニングジョブの送信」をご参照ください。