コンソール、Python SDK、または CLI を使用して、DLC で単一ノードまたは分散トレーニングジョブを作成します。
クイックスタート
MNIST ベースの単一 GPU またはマルチノード・マルチ GPU トレーニングのウォークスルーについては、「DLC 分散トレーニングクイックスタート」をご参照ください。
コンソールのパラメーター
基本情報
Job Name と Tag を設定します。
環境情報
|
パラメーター |
説明 |
|
Image Configuration |
Alibaba Cloud Image に加えて、次のイメージタイプが利用可能です:
|
|
Mount dataset |
モデルトレーニング用のデータファイルをマウントします。サポートされているデータセットタイプ:
Mount Path: DLC コンテナ内のマウントパスです (例: 重要
CPFS データセットを使用する場合、DLC ジョブに VPC を設定する必要があります。VPC は CPFS ファイルシステムの VPC と一致する必要があります。そうでない場合、ジョブが準備中状態のままになる可能性があります。 |
|
Mount storage |
データの読み取りや出力ファイルの保存のためにデータソースパスをマウントします。
詳細については、「DLC トレーニングジョブでクラウドストレージを使用する」をご参照ください。 |
|
Startup Command |
ジョブの起動コマンド (シェルコマンドをサポート)。DLC は、
|
リソース情報
|
パラメーター |
説明 |
|
Resource Type |
デフォルト値は General Computing です。Lingjun Intelligence Resources は、中国 (ウランチャブ)、シンガポール、中国 (深セン)、中国 (北京)、中国 (上海)、中国 (杭州) リージョンでのみ選択できます。 |
|
Source |
|
|
Framework |
サポートされているディープラーニングトレーニングフレームワーク: TensorFlow、PyTorch、ElasticBatch、XGBoost、OneFlow、MPIJob、Ray。 説明
Resource Quota を選択し、Lingjun AI コンピューティングリソースを使用する場合、TensorFlow、PyTorch、ElasticBatch、MPIJob、Ray ジョブのみを送信できます。 |
|
Job Resource |
選択した Framework に基づいて、Worker、PS、Chief、Evaluator、GraphLearn ノードのリソースを設定します。Ray フレームワークの場合、Add Role をクリックして Worker ロールをカスタマイズし、異種リソースでジョブを実行します。
|
VPC 設定
-
VPC がない場合、ジョブは帯域幅が制限されたパブリックゲートウェイを使用するため、ジョブの実行が遅くなったり失敗したりする可能性があります。
-
対応する vSwitch とセキュリティグループを持つ VPC を設定して、ネットワーク帯域幅、安定性、セキュリティを向上させます。ジョブクラスターは VPC 内のサービスに直接アクセスできます。
重要-
VPC を使用する場合、リソースグループインスタンス、データセットストレージ (OSS)、およびコードリポジトリはすべて同じ VPC 内にある必要があります。
-
CPFS データセットの場合、ジョブが CPFS ファイルシステムと同じ VPC を使用するように設定します。そうでない場合、DLC トレーニングジョブが準備中状態のままになる可能性があります。
-
プリエンプティブルな Lingjun AI コンピューティングリソースを使用する DLC ジョブには VPC が必要です。
Internet Access Gateway を設定します。2 つの方法がサポートされています:
-
Public Gateway: 帯域幅が制限されており、高同時実行アクセスや大容量ファイルのダウンロード中に不十分になる可能性があります。
-
Private Gateway: パブリックゲートウェイの帯域幅制限を克服するために、DLC ジョブの VPC にインターネット NAT Gateway を作成し、EIP をバインドし、SNAT エントリを設定できます。詳細については、「プライベートゲートウェイを使用してパブリックネットワークアクセス速度を向上させる」をご参照ください。
-
フォールトトレランスと診断
|
パラメーター |
説明 |
|
Automatic Fault Tolerance |
Automatic Fault Tolerance を有効にして、アルゴリズムレベルのエラーを検出し処理し、GPU 使用率を向上させます。詳細については、「AIMaster: 弾力的な自動フォールトトレランスエンジン」をご参照ください。 説明
自動フォールトトレランスを有効にすると、ジョブと並行して実行される AIMaster インスタンスが起動し、次のリソースを消費します:
|
|
Sanity Check |
Sanity Check を有効にして、トレーニングリソースのヘルスチェックを行います。障害のあるノードを自動的に隔離し、バックエンドの O&M をトリガーして、初期段階の障害を防ぎます。詳細については、「SanityCheck: コンピューティングリソースのヘルスチェック」をご参照ください。 説明
ヘルスチェックは、GPU 数が 0 より大きい Lingjun AI コンピューティングリソースクォータで送信された PyTorch ジョブでのみサポートされます。 |
ロールと権限
インスタンスの RAM ロールを設定します。詳細については、「DLC RAM ロールの設定」をご参照ください。
|
インスタンス RAM ロール |
説明 |
|
Default Role of PAI |
詳細な MaxCompute および OSS 権限を持つ AliyunPAIDLCDefaultRole サービスリンクロールを使用します。一時的な認証情報は以下を許可します:
|
|
Custom Role |
カスタム RAM ロールを選択または入力します。インスタンスは、STS の一時的な認証情報を使用して Alibaba Cloud サービスにアクセスする際に、このロールの権限を偽装します。 |
|
Does Not Associate Role |
DLC ジョブに関連付けられる RAM ロールはありません。デフォルトのオプションです。 |
参考資料
-
ジョブの詳細、リソース使用量、操作ログの表示: トレーニング詳細の表示。
-
ジョブの課金詳細の表示: 請求詳細。
-
DLC ジョブの問題のトラブルシューティング: DLC よくある質問。
-
DLC のユースケース: DLC ユースケース。
付録
SDK または CLI を使用したジョブの作成
Python SDK
ステップ 1: Alibaba Cloud Credentials ツールのインストール
Alibaba Cloud SDK API 呼び出しの認証情報を設定するために、Credentials ツールをインストールします。前提条件:
-
Python 3.7 以降。
-
Alibaba Cloud SDK 2.0 以降。
pip install alibabacloud_credentials
ステップ 2: AccessKey の取得
この例では、AccessKey ペアを使用してアクセス認証情報を設定します。セキュリティリスクを軽減するため、AccessKey ID と AccessKey Secret を ALIBABA_CLOUD_ACCESS_KEY_ID および ALIBABA_CLOUD_ACCESS_KEY_SECRET 環境変数に設定することを推奨します。
-
AccessKey を取得するには、「AccessKey の作成」をご参照ください。
-
環境変数の設定方法については、「環境変数の設定」をご参照ください。
-
その他の認証情報の設定方法については、「Credentials ツールのインストール」をご参照ください。
ステップ 3: Python SDK のインストール
-
ワークスペース SDK をインストールします。
pip install alibabacloud_aiworkspace20210204==3.0.1 -
DLC SDK をインストールします。
pip install alibabacloud_pai_dlc20201203==1.4.17
ステップ 4: ジョブの送信
パブリックリソースの使用
以下のサンプルコードは、ジョブを作成して送信します。
サブスクリプションクォータの使用
-
PAI コンソールにログインします。
-
以下に示すように、[ワークスペース] ページでワークスペース ID を見つけます。

-
以下に示すように、専用リソースグループのリソースクォータ ID を見つけます。

-
次のサンプルコードを使用して、ジョブを作成して送信します。利用可能なパブリックイメージのリストについては、「ステップ 2: イメージの準備」をご参照ください。
from alibabacloud_pai_dlc20201203.client import Client from alibabacloud_credentials.client import Client as CredClient from alibabacloud_tea_openapi.models import Config from alibabacloud_pai_dlc20201203.models import ( CreateJobRequest, JobSpec, ResourceConfig, GetJobRequest ) # DLC API にアクセスするためのクライアントを初期化します。 region = 'cn-hangzhou' # AccessKey は完全な API アクセスを提供します。セキュリティを向上させるため、API アクセスや日常の O&M には RAM ユーザーを使用することを推奨します。 # AccessKey ID と AccessKey Secret をコードにハードコーディングしないでください。これにより、認証情報が漏洩し、リソースのセキュリティが損なわれる可能性があります。 # この例では、Credentials SDK を使用して環境変数から AccessKey を読み取って認証します。 cred = CredClient() client = Client( config=Config( credential=cred, region_id=region, endpoint=f'pai-dlc.{region}.aliyuncs.com', ) ) # ジョブのリソース設定を宣言します。イメージの選択については、ドキュメントのパブリックイメージリストを参照するか、独自のイメージ URL を提供できます。 spec = JobSpec( type='Worker', image=f'registry-vpc.cn-hangzhou.aliyuncs.com/pai-dlc/tensorflow-training:1.15-cpu-py36-ubuntu18.04', pod_count=1, resource_config=ResourceConfig(cpu='1', memory='2Gi') ) # ジョブを定義します。 req = CreateJobRequest( resource_id='<リソースクォータ ID に置き換えてください>', workspace_id='<ワークスペース ID に置き換えてください>', display_name='sample-dlc-job', job_type='TFJob', job_specs=[spec], user_command='echo "Hello World"', ) # ジョブを送信します。 response = client.create_job(req) # ジョブ ID を取得します。 job_id = response.body.job_id # ジョブのステータスを照会します。 job = client.get_job(job_id, GetJobRequest()).body print('job status:', job.status) # ジョブのコマンドを表示します。 job.user_command
プリエンプティブルインスタンスの使用
-
SpotDiscountLimit (スポット割引)
#!/usr/bin/env python3 from alibabacloud_tea_openapi.models import Config from alibabacloud_credentials.client import Client as CredClient from alibabacloud_pai_dlc20201203.client import Client as DLCClient from alibabacloud_pai_dlc20201203.models import CreateJobRequest region_id = '<region-id>' # DLC ジョブが存在するリージョンの ID (例: cn-hangzhou)。 cred = CredClient() workspace_id = '12****' # DLC ジョブが属するワークスペースの ID。 dlc_client = DLCClient( Config(credential=cred, region_id=region_id, endpoint='pai-dlc.{}.aliyuncs.com'.format(region_id), protocol='http')) create_job_resp = dlc_client.create_job(CreateJobRequest().from_map({ 'WorkspaceId': workspace_id, 'DisplayName': 'sample-spot-job', 'JobType': 'PyTorchJob', 'JobSpecs': [ { "Type": "Worker", "Image": "dsw-registry-vpc.<region-id>.cr.aliyuncs.com/pai/pytorch-training:1.12-cpu-py39-ubuntu20.04", "PodCount": 1, "EcsSpec": 'ecs.g7.xlarge', "SpotSpec": { "SpotStrategy": "SpotWithPriceLimit", "SpotDiscountLimit": 0.4, } }, ], 'UserVpc': { "VpcId": "vpc-0jlq8l7qech3m2ta2****", "SwitchId": "vsw-0jlc46eg4k3pivwpz8****", "SecurityGroupId": "sg-0jl4bd9wwh5auei9****", }, "UserCommand": "echo 'Hello World' && ls -R /mnt/data/ && sleep 30 && echo 'DONE'", })) job_id = create_job_resp.body.job_id print(f'jobId is {job_id}') -
SpotPriceLimit (スポット価格)
#!/usr/bin/env python3 from alibabacloud_tea_openapi.models import Config from alibabacloud_credentials.client import Client as CredClient from alibabacloud_pai_dlc20201203.client import Client as DLCClient from alibabacloud_pai_dlc20201203.models import CreateJobRequest region_id = '<region-id>' cred = CredClient() workspace_id = '12****' dlc_client = DLCClient( Config(credential=cred, region_id=region_id, endpoint='pai-dlc.{}.aliyuncs.com'.format(region_id), protocol='http')) create_job_resp = dlc_client.create_job(CreateJobRequest().from_map({ 'WorkspaceId': workspace_id, 'DisplayName': 'sample-spot-job', 'JobType': 'PyTorchJob', 'JobSpecs': [ { "Type": "Worker", "Image": "dsw-registry-vpc.<region-id>.cr.aliyuncs.com/pai/pytorch-training:1.12-cpu-py39-ubuntu20.04", "PodCount": 1, "EcsSpec": 'ecs.g7.xlarge', "SpotSpec": { "SpotStrategy": "SpotWithPriceLimit", "SpotPriceLimit": 0.011, } }, ], 'UserVpc': { "VpcId": "vpc-0jlq8l7qech3m2ta2****", "SwitchId": "vsw-0jlc46eg4k3pivwpz8****", "SecurityGroupId": "sg-0jl4bd9wwh5auei9****", }, "UserCommand": "echo 'Hello World' && ls -R /mnt/data/ && sleep 30 && echo 'DONE'", })) job_id = create_job_resp.body.job_id print(f'jobId is {job_id}')
プリエンプティブルインスタンスの主要なパラメーター。
パラメーター | 説明 |
SpotStrategy | 入札ポリシー。入札タイプのパラメーターは、このパラメーターを SpotWithPriceLimit に設定した場合にのみ有効になります。 |
SpotDiscountLimit | スポット割引入札タイプ。 説明
|
SpotPriceLimit | スポット価格入札タイプ。 |
UserVpc | Lingjun リソースを使用してジョブを送信する場合、このパラメーターは必須です。ジョブが存在するリージョンの VPC、vSwitch、およびセキュリティグループ ID を設定します。 |
CLI
ステップ 1: クライアントのダウンロードと認証
Linux (64 ビット) または macOS 用のクライアントをダウンロードし、ユーザー認証を完了します。詳細については、「準備」をご参照ください。
ステップ 2: ジョブの送信
-
PAI コンソールにログインします。
-
以下に示すように、[ワークスペース] ページでワークスペース ID を見つけます。

-
以下に示すように、リソースクォータ ID を見つけます。

-
次の例のように、
tfjob.paramsという名前のパラメーターファイルを準備します。パラメーターファイルの設定方法の詳細については、「送信コマンド」をご参照ください。name=test_cli_tfjob_001 workers=1 worker_cpu=4 worker_gpu=0 worker_memory=4Gi worker_shared_memory=4Gi worker_image=registry-vpc.cn-beijing.aliyuncs.com/pai-dlc/tensorflow-training:1.12.2PAI-cpu-py27-ubuntu16.04 command=echo good && sleep 120 resource_id=<リソースクォータ ID に置き換えてください> workspace_id=<ワークスペース ID に置き換えてください> -
次のコマンドを実行して、パラメーターファイルを使用して指定されたワークスペースとリソースクォータに DLC ジョブを送信します。
./dlc submit tfjob --job_file ./tfjob.params -
次のコマンドを実行して、送信された DLC ジョブを表示します。
./dlc get job <jobID>
詳細パラメーター
|
パラメーター (キー) |
サポートされているフレームワーク |
説明 |
値 |
|
|
すべて |
カスタムリソースリリース ポリシー。デフォルト: ジョブ完了後にすべての Pod リソースが解放されます。pod-exit に設定すると、その Pod が終了するとすぐに Pod のリソースが解放されます。 |
pod-exit |
|
|
すべて |
GPU ドライバーのロード時に IBGDA を有効または無効にします。 |
|
|
|
すべて |
true に設定すると、GDRCopy カーネルモジュール (バージョン 2.4.4) がインストールされます。 |
|
|
|
すべて |
NUMA バインディングを有効または無効にします。 |
|
|
|
すべて |
送信時に、クォータにジョブ内のすべてのロールに対して十分な合計リソース (ノード仕様) があるかどうかを確認します。 |
|
|
|
PyTorch |
ワーカー間のネットワーク通信を有効または無効にします。
有効にすると、各ワーカーのドメイン名はワーカー名 (例: |
|
|
|
PyTorch |
各ワーカーで開くネットワークポートを定義します。このパラメーターは このパラメーターが設定されていない場合、デフォルトではマスターでポート 23456 のみが開かれます。したがって、このカスタムポートリストにポート 23456 が含まれていないことを確認してください。 重要
このパラメーターは |
セミコロン (;) で区切られた文字列のセット。各文字列は、ポート番号またはハイフン (-) で指定されたポート範囲にすることができます。例: |
|
|
PyTorch |
各ワーカーで開くネットワークポートの数。このパラメーターは このパラメーターが設定されていない場合、デフォルトではマスターでポート 23456 のみが開かれます。DLC は、指定された数のポートを各ワーカーにランダムに割り当てます。割り当てられたポートは、セミコロンで区切られた形式で、 重要
|
整数 (最大 65536) |
|
|
Ray |
Ray の場合、RayRuntimeEnv を設定して実行環境を定義します。 重要
環境変数とサードパーティライブラリの設定は、この設定によって上書きされます。 |
環境変数とサードパーティライブラリを設定します ( |
|
|
Ray |
外部 GCS Redis のアドレス。 |
文字列 |
|
|
Ray |
外部 GCS Redis のユーザー名。 |
文字列 |
|
|
Ray |
外部 GCS Redis のパスワード。 |
文字列 |
|
|
Ray |
サブミッターのリトライ回数。 |
正の整数 (int) |
|
|
Ray |
ノードの共有メモリを設定します。たとえば、ノードごとに 1 GiB の共有メモリを設定するには、次のようにします:
|
正の整数 (int) |
ボタンをクリックして、入札方法を選択します: