CLI (v2) コマンド ジョブ YAML スキーマ
適用対象: Azure CLI ml 拡張機能 v2 (現行)
ソース JSON スキーマは https://azuremlschemas.azureedge.net/latest/commandJob.schema.json にあります。
Note
このドキュメントで詳しく説明されている YAML 構文は、最新バージョンの ML CLI v2 拡張機能の JSON スキーマに基づいています。 この構文は、ML CLI v2 拡張機能の最新バージョンでのみ動作することが保証されています。 以前のバージョンの拡張機能のスキーマについては、https://azuremlschemasprod.azureedge.net/ でご確認いただけます。
YAML 構文
キー | Type | 説明 | 使用できる値 | 既定値 |
---|---|---|---|---|
$schema |
string | YAML スキーマ。 Azure Machine Learning 用 VS Code 拡張機能を使用して YAML ファイルを作成する場合は、ファイルの先頭に $schema を含めることで、スキーマとリソースの入力候補を呼び出すことができます。 |
||
type |
const | ジョブの種類。 | command |
command |
name |
string | ジョブの名前。 ワークスペース内のすべてのジョブで一意である必要があります。 省略した場合、Azure Machine Learning によって名前の GUID が自動生成されます。 | ||
display_name |
string | スタジオ UI でのジョブの表示名。 ワークスペース内で一意ではない場合があります。 省略した場合、Azure Machine Learning により、表示名として、人間が判読できる形容詞と名詞の識別子が自動生成されます。 | ||
experiment_name |
string | ジョブを整理するための実験名。 各ジョブの実行レコードは、スタジオの [実験] タブの対応する実験の下に編成されます。省略した場合、Azure Machine Learning では既定でジョブが作成された作業ディレクトリの名前が使用されます。 | ||
description |
string | ジョブの説明。 | ||
tags |
object | ジョブのタグの辞書。 | ||
command |
string | 実行するコマンドです。 | ||
code |
string | アップロードしてジョブに使用するソース コード ディレクトリへのローカル パス。 | ||
environment |
文字列またはオブジェクト | ジョブに使用する環境。 ワークスペース内の既存のバージョン管理された環境への参照またはインライン環境の仕様のいずれかを指定できます。 既存の環境を参照するには、 azureml:<environment_name>:<environment_version> 構文または azureml:<environment_name>@latest (環境の最新バージョンを参照する場合) を使用します。 環境をインラインで定義するには、環境スキーマに従います。 name プロパティと version プロパティは、インライン環境ではサポートされていないため、除外します。 |
||
environment_variables |
オブジェクト | コマンドが実行されるプロセスに設定する環境変数のキーと値のペアの辞書。 | ||
distribution |
object | 分散トレーニング シナリオの配布構成。 MpiConfiguration、PyTorchConfiguration、TensorFlowConfiguration のいずれか。 | ||
compute |
string | ジョブを実行するコンピューティング先の名前。 ワークスペース内の既存のコンピューティングへの参照 ( azureml:<compute_name> 構文を使用) または local してローカル実行を指定できます。 注: パイプライン内のジョブでは local を compute としてサポートしていませんでした |
local |
|
resources.instance_count |
整数 (integer) | ジョブに使用するノードの数。 | 1 |
|
resources.instance_type |
string | ジョブに使用するインスタンスの種類。 Azure Arc 対応 Kubernetes コンピューティングで実行されているジョブに適用されます (compute フィールドに指定されたコンピューティング先は type: kubernentes のものです)。 省略すると、Kubernetes クラスターの既定のインスタンスの種類が既定値になります。 詳細については、Kubernetes インスタンスの種類を作成して選択に関するページを参照してください。 |
||
resources.shm_size |
string | Docker コンテナーの共有メモリ ブロックのサイズ。 数値を 0 より大きくする必要があり、単位は b (バイト)、k (キロバイト)、m (メガバイト)、またはg (ギガバイト) のいずれかである<number><unit> の形式にする必要があります。 |
2g |
|
limits.timeout |
integer | ジョブを実行できる最大時間 (秒単位)。 この制限に達すると、システムはジョブを取り消します。 | ||
inputs |
オブジェクト | ジョブへの入力の辞書。 キーは、ジョブのコンテキスト内の入力の名前であり、値は入力値です。 入力は、 ${{ inputs.<input_name> }} 式を使用して command で参照できます。 |
||
inputs.<input_name> |
number、integer、boolean、string、または object | リテラル値 (型番号、整数、ブール値、または文字列) のいずれか、またはジョブ入力データ仕様を含むオブジェクト。 | ||
outputs |
object | ジョブの出力構成の辞書。 キーはジョブのコンテキスト内の出力の名前であり、値は出力構成です。 出力は、 ${{ outputs.<output_name> }} 式を使用して command で参照できます。 |
||
outputs.<output_name> |
オブジェクト | オブジェクトは空のままにしておくことができます。この場合、既定では出力の種類は uri_folder になり、Azure Machine Learning によって出力の出力場所が生成されます。 出力ディレクトリへのファイルは、読み取り/書き込みマウントを使用して書き込まれます。 出力に別のモードを指定する場合は、ジョブ出力仕様を含むオブジェクトを指定します。 |
||
identity |
object | ID は、データアクセスに使用されます。 UserIdentityConfiguration、ManagedIdentityConfiguration、または None を指定できます。 UserIdentityConfiguration の場合、ジョブの送信者の ID を使用して、データへのアクセス、データの入力、出力フォルダーへの結果の書き込みを行います。それ以外の場合は、コンピューティング 先のマネージド ID が使用されます。 |
配布構成
MpiConfiguration
キー | Type | 説明 | 使用できる値 |
---|---|---|---|
type |
const | 必須。 配布の種類。 | mpi |
process_count_per_instance |
整数 (integer) | 必須。 ジョブに対して起動するノードあたりのプロセスの数。 |
PyTorchConfiguration
キー | Type | 説明 | 使用できる値 | 既定値 |
---|---|---|---|---|
type |
const | 必須。 配布の種類。 | pytorch |
|
process_count_per_instance |
整数 (integer) | ジョブに対して起動するノードあたりのプロセスの数。 | 1 |
TensorFlowConfiguration
キー | Type | 説明 | 使用できる値 | 既定値 |
---|---|---|---|---|
type |
const | 必須。 配布の種類。 | tensorflow |
|
worker_count |
整数 (integer) | ジョブに対して起動するワーカーの数。 | 既定値は resources.instance_count です。 |
|
parameter_server_count |
整数 (integer) | ジョブに対して起動するパラメーター サーバーの数。 | 0 |
ジョブの入力
キー | Type | 説明 | 使用できる値 | 既定値 |
---|---|---|---|---|
type |
string | ジョブ入力の種類。 1 つのファイル ソースを指す入力データの場合は uri_file 、フォルダー ソースを指す入力データの場合は uri_folder を指定します。 |
uri_file 、 uri_folder 、 mlflow_model 、 custom_model |
uri_folder |
path |
string | 入力として使用するデータのパス。 いくつかの方法で指定できます。 - データ ソース ファイルまたはフォルダーへのローカル パス (例: path: ./iris.csv )。 ジョブの送信中にデータがアップロードされます。 - 入力として使用するファイルまたはフォルダーへのクラウド パスの URI。 サポートされる URI の種類は azureml 、https 、wasbs 、abfss 、adl です。 azureml:// URI 形式の使用方法の詳細については、コア yaml 構文に関するページを参照してください。 - 入力として使用する既存の登録済み Azure Machine Learning データ資産。 登録済みデータ資産を参照するには、 azureml:<data_name>:<data_version> 構文または azureml:<data_name>@latest (そのデータ資産の最新バージョンを参照する場合) を使用します。(例: path: azureml:cifar10-data:1 または path: azureml:cifar10-data@latest )。 |
||
mode |
string | コンピューティング先にデータを配信する方法のモード。 読み取り専用マウント ( ro_mount ) の場合、データはマウント パスとして使用されます。 フォルダーはフォルダーとしてマウントされ、ファイルはファイルとしてマウントされます。 Azure Machine Learning は、マウント パスへの入力を解決します。 download モードの場合、データはコンピューティング 先にダウンロードされます。 Azure Machine Learning は、ダウンロードしたパスへの入力を解決します。 データ自体をマウントまたはダウンロードするのではなく、データ成果物の保存場所の URL のみを使用する場合は、 direct モードを使用できます。 このモードでは、ジョブ入力としてストレージの場所の URL が渡されます。 この場合、ストレージにアクセスするための資格情報を処理する責任があります。 eval_mount モードと eval_download モードは MLTable に固有であり、データをパスとしてマウントするか、コンピューティング 先にデータをダウンロードします。 詳細については、「ジョブ内データへのアクセス」 を参照してください |
ro_mount 、 download 、 direct 、 eval_download 、 eval_mount |
ro_mount |
ジョブ出力
キー | Type | 説明 | 使用できる値 | 既定値 |
---|---|---|---|---|
type |
string | ジョブ出力の種類。 既定の uri_folder の種類の場合、出力はフォルダーに対応します。 |
uri_folder 、 mlflow_model 、 custom_model |
uri_folder |
mode |
string | 出力ファイルを宛先ストレージに配信する方法のモード。 読み取り/書き込みマウント モード (rw_mount ) の場合、出力ディレクトリはマウントされたディレクトリです。 アップロード モードの場合、書き込まれたファイルはジョブの最後にアップロードされます。 |
rw_mount , upload |
rw_mount |
ID の構成
UserIdentityConfiguration
キー | Type | 説明 | 使用できる値 |
---|---|---|---|
type |
const | 必須です。 ID の型。 | user_identity |
ManagedIdentityConfiguration
キー | Type | 説明 | 使用できる値 |
---|---|---|---|
type |
const | 必須です。 ID の型。 | managed または managed_identity |
解説
az ml job
コマンドは、Azure Machine Learning ジョブを管理するために使用できます。
例
例は、GitHub リポジトリの例にあります。 次のセクションでは、いくつかの例を示します。
YAML: hello world
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world"
environment:
image: library/python:latest
YAML: 表示名、実験名、説明、タグ
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world"
environment:
image: library/python:latest
tags:
hello: world
display_name: hello-world-example
experiment_name: hello-world-example
description: |
# Azure Machine Learning "hello world" job
This is a "hello world" job running in the cloud via Azure Machine Learning!
## Description
Markdown is supported in the studio for job descriptions! You can edit the description there or via CLI.
YAML: 環境変数
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo $hello_env_var
environment:
image: library/python:latest
environment_variables:
hello_env_var: "hello world"
YAML: ソース コード
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: ls
code: src
environment:
image: library/python:latest
YAML: リテラル入力
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
echo ${{inputs.hello_string}}
echo ${{inputs.hello_number}}
environment:
image: library/python:latest
inputs:
hello_string: "hello world"
hello_number: 42
YAML: 既定の出力への書き込み
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world" > ./outputs/helloworld.txt
environment:
image: library/python:latest
YAML: 名前付きデータ出力に書き込む
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world" > ${{outputs.hello_output}}/helloworld.txt
outputs:
hello_output:
environment:
image: python
YAML: データストア URI ファイルの入力
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
echo "--iris-csv: ${{inputs.iris_csv}}"
python hello-iris.py --iris-csv ${{inputs.iris_csv}}
code: src
inputs:
iris_csv:
type: uri_file
path: azureml://datastores/workspaceblobstore/paths/example-data/iris.csv
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
YAML: データストア URI フォルダーの入力
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
ls ${{inputs.data_dir}}
echo "--iris-csv: ${{inputs.data_dir}}/iris.csv"
python hello-iris.py --iris-csv ${{inputs.data_dir}}/iris.csv
code: src
inputs:
data_dir:
type: uri_folder
path: azureml://datastores/workspaceblobstore/paths/example-data/
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
YAML: URI ファイルの入力
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
echo "--iris-csv: ${{inputs.iris_csv}}"
python hello-iris.py --iris-csv ${{inputs.iris_csv}}
code: src
inputs:
iris_csv:
type: uri_file
path: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
YAML: URI フォルダーの入力
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
ls ${{inputs.data_dir}}
echo "--iris-csv: ${{inputs.data_dir}}/iris.csv"
python hello-iris.py --iris-csv ${{inputs.data_dir}}/iris.csv
code: src
inputs:
data_dir:
type: uri_folder
path: wasbs://datasets@azuremlexamples.blob.core.windows.net/
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
YAML: 紙を使用したノートブック
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
pip install ipykernel papermill
papermill hello-notebook.ipynb outputs/out.ipynb -k python
code: src
environment:
image: library/python:3.11.6
YAML: 基本的な Python モデル トレーニング
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
python main.py
--iris-csv ${{inputs.iris_csv}}
--C ${{inputs.C}}
--kernel ${{inputs.kernel}}
--coef0 ${{inputs.coef0}}
inputs:
iris_csv:
type: uri_file
path: wasbs://datasets@azuremlexamples.blob.core.windows.net/iris.csv
C: 0.8
kernel: "rbf"
coef0: 0.1
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
compute: azureml:cpu-cluster
display_name: sklearn-iris-example
experiment_name: sklearn-iris-example
description: Train a scikit-learn SVM on the Iris dataset.
YAML: ローカル Docker ビルド コンテキストを使用した基本的な R モデル トレーニング
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: >
Rscript train.R
--data_folder ${{inputs.iris}}
code: src
inputs:
iris:
type: uri_file
path: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
environment:
build:
path: docker-context
compute: azureml:cpu-cluster
display_name: r-iris-example
experiment_name: r-iris-example
description: Train an R model on the Iris dataset.
YAML: 分散 PyTorch
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
python train.py
--epochs ${{inputs.epochs}}
--learning-rate ${{inputs.learning_rate}}
--data-dir ${{inputs.cifar}}
inputs:
epochs: 1
learning_rate: 0.2
cifar:
type: uri_folder
path: azureml:cifar-10-example@latest
environment: azureml:AzureML-acpt-pytorch-2.2-cuda12.1@latest
compute: azureml:gpu-cluster
distribution:
type: pytorch
process_count_per_instance: 1
resources:
instance_count: 2
display_name: pytorch-cifar-distributed-example
experiment_name: pytorch-cifar-distributed-example
description: Train a basic convolutional neural network (CNN) with PyTorch on the CIFAR-10 dataset, distributed via PyTorch.
YAML: 分散 TensorFlow
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
python train.py
--epochs ${{inputs.epochs}}
--model-dir ${{inputs.model_dir}}
inputs:
epochs: 1
model_dir: outputs/keras-model
environment: azureml:AzureML-tensorflow-2.16-cuda12@latest
compute: azureml:gpu-cluster
resources:
instance_count: 2
distribution:
type: tensorflow
worker_count: 2
display_name: tensorflow-mnist-distributed-example
experiment_name: tensorflow-mnist-distributed-example
description: Train a basic neural network with TensorFlow on the MNIST dataset, distributed via TensorFlow.