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

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

最終更新日:Dec 25, 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 コンソールにログインします。 リージョンとワークスペースを選択します。 次に、[ディープラーニングコンテナ (DLC) の入力] をクリックします。

    2. [ディープラーニングコンテナ (DLC)] ページで、[ジョブの作成] をクリックします。

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

    パラメーター

    説明

    環境情報

    ノードイメージ

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

    Startupコマンド

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

    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

    コードビルド

    [オンライン設定] を選択し、作成したコードを選択します。 マウントパスのデフォルト値を保持します。

    リソース情報

    リソースタイプ

    [Lingjun AI Computing Service] を選択します。

    説明

    このパラメーターは、ワークスペースがLingjunリソースと一般リソースの両方を使用してDLCタスクの送信をサポートしている場合にのみ使用できます。

    ソース

    [リソースクォータ] を選択します。

    リソースクォータ

    作成したLingjunリソースクォータを選択します。

    フレームワーク

    [MPIJob] を選択します。

    求人リソース

    • [ノード] を2に設定します。

    • vCPUを4に設定します。

    • [GPU] を1に設定します。

    • メモリ (GiB) を8に設定します。

    • 共有メモリ (GiB) を8に設定します。

    ドライバー設定

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

    説明

    Lingjunリソースのみがこのパラメータをサポートしています。

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

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を使用してジョブを開始するのに適しています。