Platform for AI (PAI) の Deep Learning Containers (DLC) は、機械学習のための柔軟で安定した、使いやすく、パフォーマンス専有型のトレーニング環境を提供する、オールインワンのクラウドネイティブなディープラーニングプラットフォームです。このトピックでは、mpirun と DeepSpeed を使用して、DLC で MPIJob タイプの分散トレーニングジョブを送信する方法について説明します。
前提条件
DLC がアクティブ化され、デフォルトのワークスペースが作成されていること。詳細については、「PAI のアクティブ化とデフォルトワークスペースの作成」をご参照ください。
インテリジェントコンピューティング Lingjun リソースが購入され、リソースクォータが作成されていること。詳細については、「リソースクォータの作成」をご参照ください。
制限事項
MPIJob トレーニングジョブは、中国 (ウランチャブ) リージョンでのみ Lingjun リソースを使用して送信できます。
MPIJob トレーニングジョブの送信
MPIJob タイプの分散トレーニングジョブを送信するには、次のステップを実行します。
ステップ 1: コードソースの準備
公式の DeepSpeed サンプルを使用してデータセットを作成します。必須パラメーターを構成します。次のセクションでは、主要なパラメーターについて説明します。他のパラメーターにはデフォルト設定を使用します。詳細については、「コードビルド」をご参照ください。
名前: データセットの名前。この例では、deepspeed-examples を使用します。
Git リポジトリ: https://github.com/microsoft/DeepSpeedExamples.git。
ステップ 2: 分散トレーニングジョブの送信
次のいずれかのメソッドを使用して、分散トレーニングジョブを送信できます。
mpirun
[ジョブの作成] ページに移動します。
PAI コンソールにログインします。ページの上部でターゲットリージョンとワークスペースを選択し、[Deep Learning Containers (DLC)] をクリックします。
Deep Learning Containers (DLC) ページで、[ジョブの作成] をクリックします。
[ジョブの作成] ページで、次の表で説明されている主要なパラメーターを構成します。他のパラメーターの詳細については、「トレーニングジョブの作成」をご参照ください。
パラメーター
説明
環境情報
ノードイメージ
このソリューションは、MPIJob を送信して分散トレーニングタスクを実行するためのテストイメージを提供します。[イメージアドレス] をクリックし、テキストボックスに dsw-registry-vpc.<RegionID>.cr.aliyuncs.com/pai-common/deepspeed-training:23.08-gpu-py310-cu122-ubuntu22.04 と入力します。イメージアドレスで、
<RegionID>をリージョン ID に置き換えます。たとえば、中国 (ウランチャブ) のリージョン ID は cn-wulanchabu です。リージョン ID の詳細については、「リージョンとゾーン」をご参照ください。起動コマンド
分散トレーニングジョブのすべてのノードで実行されるコマンドです。この例では、システム環境変数のデフォルト構成が使用されます。コマンドで環境変数を構成して、デフォルト構成を上書きできます。詳細については、「システム環境変数」をご参照ください。
cd /root/code/DeepSpeedExamples/training/cifar/ # --np 2 2つのノードを開始します。 mpirun -np 2 --allow-run-as-root -bind-to none -map-by slot -x LD_LIBRARY_PATH -x PATH -mca pml ob1 -mca btl ^openib python /root/code/DeepSpeedExamples/training/cifar/cifar10_tutorial.pyコードビルド
[オンライン構成] を選択し、作成したコードを選択します。[マウントパス] のデフォルト値を保持します。
リソース情報
リソースタイプ
[Lingjun AI コンピューティングサービス] を選択します。
説明このパラメーターは、ワークスペースが Lingjun リソースと一般リソースの両方を使用して DLC タスクを送信することをサポートしている場合にのみ使用できます。
ソース
[リソースクォータ] を選択します。
リソースクォータ
作成した Lingjun リソースクォータを選択します。
フレームワーク
[MPIJob] を選択します。
ジョブリソース
[ノード] を 2 に設定します。
[vCPU] を 4 に設定します。
[GPU] を 1 に設定します。
[メモリ (GiB)] を 8 に設定します。
[共有メモリ (GiB)] を 8 に設定します。
ドライバー設定
上記のテストイメージを使用する場合、ドライバーのバージョンを [535.54.03] に設定することをお勧めします。
説明Lingjun リソースのみがこのパラメーターをサポートします。
[確認] をクリックします。
Deepspeed (pdsh)
このメソッドを使用して分散トレーニングジョブを送信する場合、[起動コマンド] に次のコードを使用します。他のパラメーターの構成は、mpirun メソッドの構成と同じです。
cd /root/code/DeepSpeedExamples/training/pipeline_parallelism
deepspeed --hostfile /etc/mpi/hostfile train.py --deepspeed_config=ds_config.json -p 2 --steps=200カスタムイメージを使用して DeepSpeed ジョブを実行する場合は、イメージに MPIJob と DeepSpeed に必要なライブラリをインストールする必要があります。DockerHub から公式の DeepSpeed イメージを取得することもできます。MPIJob と DeepSpeed に必要なライブラリは、イメージにプリインストールされています。
この例では、システム環境変数のデフォルト構成が使用されます。起動コマンドで環境変数を構成して、デフォルト構成を上書きすることもできます。詳細については、「システム環境変数」をご参照ください。
ステップ 3: ジョブの詳細とログの表示
ジョブが送信された後、[Deep Learning Containers (DLC)] ページでジョブの名前をクリックします。
ジョブの詳細ページで、ジョブの基本情報と実行ステータスを表示します。
ジョブ詳細ページの下部にある [インスタンス] セクションで、タイプが [launcher] のインスタンスを見つけ、[アクション] 列の [ログ] をクリックしてジョブの実行ステータスを表示します。

システム環境変数
MPI 分散ジョブは、launcher と worker の 2 つのロールを使用します。これらのロールは、トレーニング中に相互に通信する必要があります。デフォルトでは、DLC は launcher ロールの環境変数を構成します。ビジネス要件に基づいて、環境変数を構成してデフォルト構成を上書きできます。次の表に環境変数を示します。
環境変数 | 説明 | デフォルト値 | シナリオ |
OMPI_MCA_btl_tcp_if_include | launcher ロールと worker ロール間の通信に使用するネットワークインターフェースコントローラー (NIC) を指定します。複数の NIC はカンマ (,) で区切ります。 | eth0 | mpirun を使用したジョブの開始に適しています。 |
OMPI_MCA_orte_default_hostfile | mpirun コマンドのホストファイルを指定します。ホストファイルは DLC で自動的に生成できます。 |
| |
OMPI_MCA_plm_rsh_agent | launcher ロールが worker ジョブをリモートで開始する方法を指定します。 |
| |
PDSH_RCMD_TYPE | PDSH のリモートコマンドタイプ。 | ssh | DeepSpeed を使用したジョブの開始に適しています。 |