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

Platform For AI:MPIJobトレーニングの仕事を提出する

最終更新日:Jul 22, 2024

Deep Learning Containers (DLC) of Platform for AI (PAI) は、機械学習のための柔軟で安定した使いやすい高性能なトレーニング環境を提供するオールインワンのクラウドネイティブ深層学習プラットフォームです。 このトピックでは、mpirunとDeepSpeedを使用して、DLCでMPIJobタイプの分散トレーニングジョブを送信する方法について説明します。

前提条件

  • DLCがアクティブになり、デフォルトのワークスペースが作成されます。 詳細については、「PAIの有効化とデフォルトワークスペースの作成」をご参照ください。

  • インテリジェントコンピューティングLingjunリソースはリソースグループで購入され、リソースクォータが作成されます。 詳細については、「Lingjun resource quotas」をご参照ください。

制限事項

中国 (Ulanqab) リージョンでのみ、Lingjunリソースを使用してMPIJobトレーニングジョブを送信できます。

MPIJobトレーニング求人

MPIJobタイプの分散トレーニングジョブを送信するには、次の手順を実行します。

手順1: コードソースの準備

公式のDeepSpeedの例を使用して、データセットを作成します。 必要なパラメーターを設定します。 次のセクションでは、主要なパラメーターについて説明します。 他のパラメーターについてはデフォルト値を使用します。 詳細については、「コードビルド」をご参照ください。

ステップ2: 分散トレーニングジョブの送信

次のいずれかの方法を使用して、分散トレーニングジョブを送信できます。

mpirun

  1. [ジョブの作成] ページに移動します。

    1. PAIコンソールにログインします。

    2. 左側のナビゲーションウィンドウで、[ワークスペース] をクリックします。 管理するワークスペースを見つけて、ワークスペースIDをクリックします。

    3. [ワークスペース] ページの左側のナビゲーションウィンドウで、[モデルの開発とトレーニング] > [ディープラーニングコンテナ (DLC)] を選択します。 [分散トレーニングジョブ] ページで、[ジョブの作成] をクリックします。 [ジョブの作成] ページが表示されます。

  2. [ジョブの作成] ページで、次のキーパラメーターを設定します。 詳細については、「トレーニングジョブの送信」をご参照ください。

    • ノードイメージ: この例では、テストイメージが提供され、MPIJobタイプの分散トレーニングジョブを送信するために使用されます。 [画像アドレス] をクリックし、フィールドに [registry.cn-wulanchabu.aliyuncs.com/pai-dlc/deepspeed-training:23.08-gpu-py310-cu122-ubuntu22.04] と入力します。

    • Startup Command: 分散トレーニングジョブのすべてのノードで実行されるコマンド。 この例では、システム環境変数のデフォルト設定が使用されています。 コマンドで環境変数を設定して、デフォルトの設定を上書きできます。 詳細については、「システム環境変数」をご参照ください。

      cd /root/code/DeepSpeedExamples/training/cifar/
      
      # --np 2 Start two nodes. 
      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
    • リソースクォータ: 作成したリソースクォータを選択します。

    • フレームワーク: [MPIJob] を選択します。

    • ジョブリソース: ノードを2、vCPUを4、GPUを1、メモリ (GiB) を8、共有メモリ (GiB) を8に設定します。

    • ドライバー設定: 上記のテストイメージを使用する場合は、ドライバーのバージョンを535.54.03に設定することを推奨します。

  3. [OK] をクリックします。

DeepSpeed (pdsh)

このメソッドを使用して分散トレーニングジョブを送信する場合は、Startup Commandに次のコードを使用します。 その他のパラメータの設定は、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に必要なライブラリは、公式イメージにプリインストールされています。

この例では、システム環境変数のデフォルト設定が使用されています。 startupコマンドで環境変数を設定して、デフォルトの設定を上書きすることもできます。 詳細については、「システム環境変数」をご参照ください。

ステップ3: ジョブの詳細とログの表示

  1. ジョブが送信されたら、[Deep Learning Containers (DLC)] ページでジョブの名前をクリックします。

  2. ジョブの詳細ページで、ジョブの基本情報と実行ステータスを表示します。

  3. ジョブの詳細ページの下部にある [インスタンス] セクションで、タイプがランチャーのインスタンスを見つけ、[操作] 列の [ログ] をクリックしてジョブの実行ステータスを表示します。image

システム環境変数

MPI分散ジョブは、ランチャーとワーカーの2つの役割を使用します。 役割はトレーニング中に互いにコミュニケーションする必要があります。 デフォルトでは、DLCはランチャーロールの環境変数を構成します。 ビジネス要件に基づいて既定の設定を上書きするように環境変数を設定できます。 次の表に、環境変数を示します。

環境変数

説明

デフォルト値

シナリオ

OMPI_MCA_btl_tcp_if_include

ランチャーとワーカーロール間の通信用のネットワークインターフェイスコントローラー (NIC) を指定します。 複数のNICはコンマ (,) で区切ります。

eth0

mpirunを使用してジョブを開始するのに適しています。

OMPI_MCA_orte_default_hostfile

mpirunコマンドのホストファイルを指定します。 ホストファイルはDLCで自動的に生成できます。

/etc/mpi/hostfile

OMPI_MCA_plm_rsh_agent

ランチャーロールのワーカージョブをリモートで開始する方法を指定します。

/etc/mpi/kubexec.sh

PDSH_RCMD_TYPE

PDSHのリモートコマンドタイプ。

ssh

DeepSpeedを使用してジョブを開始するのに適しています。