大規模モデル AI の並列計算では、通信オーバーヘッドの削減、計算と通信のオーバーラップ、通信効率の向上といった最適化が必要です。リモートダイレクトメモリアクセス (RDMA) は、ネットワーク遅延を大幅に削減し、Lingjun AI 計算リソース 上で実行される分散トレーニングジョブに最適です。
使用制限
この機能は、Lingjun AI 計算リソース 上で送信するトレーニングジョブにのみ適用されます。
高性能ネットワーク変数の設定
Platform for AI (PAI) は、Lingjun AI 計算リソース 上で RDMA 機能を有効にし、最適な NVIDIA Collective Communications Library (NCCL) 変数を事前に設定します。パフォーマンス向上のため、デフォルト変数の使用を推奨します。また、トレーニングフレームワークやモデル特性に基づいて調整することも可能です。
デフォルト変数 (プラットフォームプリセット)
Lingjun インスタンスタイプに応じて、プラットフォームはデフォルト変数を事前に設定します。次の表に詳細を示します。
|
Lingjun インスタンスタイプ |
NCCL 変数 |
|
|
NCCL 変数の詳細については、「環境変数の説明」をご参照ください。
環境変数の説明
次の表で、主要な NCCL 環境変数について説明します。詳細については、「NCCL ドキュメント」をご参照ください。
|
主要な環境変数 |
説明 |
|
NCCL_IB_TC |
Alibaba Cloud のネットワークマッピングルールに一致します。この変数が設定されていない、または誤って設定されている場合、パフォーマンスが低下する可能性があります。 |
|
NCCL_IB_GID_INDEX |
推奨値を提供します。この変数が設定されていない、または誤って設定されている場合、 NCCL がエラーを報告する可能性があります。 |
|
NCCL_SOCKET_IFNAME |
接続確立に使用するネットワークインターフェイスを指定します。インスタンスタイプによって必要なインターフェイスが異なります。この変数が設定されていない、または誤って設定されている場合、 NCCL が接続の確立に失敗する可能性があります。 |
|
NCCL_DEBUG |
通常は INFO に設定すると、より多くの NCCL 関連ログが出力され、潜在的な問題の特定と解決に役立ちます。 |
|
NCCL_IB_HCA |
RDMA 通信用のネットワークインターフェイスコントローラー (NIC) を指定します。InfiniBand デバイスの数と命名規則は、コンピュートノード 間で異なります。この変数が設定されていない、または誤って設定されている場合、パフォーマンスが低下する可能性があります。 |
|
NCCL_IB_TIMEOUT |
RDMA 接続タイムアウトを増加させて、トレーニングジョブのフォールトトレランスを向上させます。この変数が設定されていない、または誤って設定されている場合、トレーニングジョブが中断される可能性があります。 |
|
NCCL_IB_QPS_PER_CONNECTION |
接続ごとのキューペア (QP) 数を増加させて、ネットワークスループットを向上させます。 |
イメージの設定
Lingjun インテリジェントコンピューティングリソースを使用してトレーニングジョブを送信する際は、DLC が提供する公式の組み込みイメージを使用してください。
次の 3 つの公式 GPU トレーニングイメージを利用できます。
deepspeed-training:23.06-gpu-py310-cu121-ubuntu22.04
megatron-training:23.06-gpu-py310-cu121-ubuntu22.04
nemo-training:23.06-gpu-py310-cu121-ubuntu22.04
これら 3 つのイメージすべてに、 PyTorch 2.1、Megatron-LM 23.06、DeepSpeed 0.9.5、Transformers 4.29.2、NVIDIA NeMo 1.19.0、CUDA 12.1、Ubuntu 22.04、Python 3.10 が含まれています。これらのイメージは China (Ulanqab) リージョンにデプロイされています。
関連ドキュメント
Lingjun AI 計算リソース 上でトレーニングジョブを送信する詳細な手順については、「トレーニングジョブの作成」をご参照ください。