CLI (v2) コマンド ジョブ YAML スキーマ

ソース JSON スキーマは https://azuremlschemas.azureedge.net/latest/commandJob.schema.json にあります。

重要

現在、この機能はパブリック プレビュー段階にあります。 このプレビュー バージョンはサービス レベル アグリーメントなしで提供されています。運用環境のワークロードに使用することはお勧めできません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。

YAML 構文

キー Type 説明 使用できる値 既定値
$schema string YAML スキーマ。 Azure Machine Learning 用 VS Code 拡張機能を使用して YAML ファイルを作成する場合は、ファイルの先頭に $schema を含めることで、スキーマとリソースの入力候補を呼び出すことができます。
type const ジョブの種類。 command command
name string ジョブの名前。 ワークスペース内のすべてのジョブで一意である必要があります。 省略した場合、Azure ML によって名前の GUID が自動生成されます。
display_name string スタジオ UI でのジョブの表示名。 ワークスペース内では一意ではない場合があります。 省略した場合、Azure ML では、表示名の人間が判読できる形容詞と名詞の識別子が自動生成されます。
experiment_name string ジョブを整理するための実験名。 各ジョブの実行レコードは、スタジオの [実験] タブの対応する実験の下に整理されます。省略した場合、Azure ML は既定で、ジョブが作成された作業ディレクトリの名前を設定します。
description string ジョブの説明。
tags object ジョブのタグの辞書。
command string 必須。 実行するコマンドです。
code.local_path string アップロードしてジョブに使用するソース コード ディレクトリへのローカル パス。
environment 文字列またはオブジェクト 必須。 ジョブに使用する環境です。 これは、ワークスペース内の既存のバージョン管理された環境への参照、またはインライン環境仕様のいずれかになります。

既存の環境を参照するには、azureml:<environment_name>:<environment_version> 構文を使用します。

環境のインラインを定義するには、環境スキーマに従ってください。 name プロパティと version プロパティは、インライン環境ではサポートされていないため、除外します。
environment_variables object コマンドが実行されるプロセスに設定する環境変数の名前と値のペアのディクショナリ。
distribution object 分散トレーニング シナリオの配布構成。 MpiConfigurationPyTorchConfigurationTensorFlowConfiguration のいずれか。
compute string ジョブを実行するコンピューティング先の名前。 これは、ワークスペース内の既存のコンピューティングへの参照 (azureml:<compute_name> 構文を使用) または local でローカル実行を指定する場合があります。 local
resources.instance_count 整数 (integer) ジョブに使用するノードの数。 1
limits.timeout 整数 (integer) ジョブの実行が許可される最大時間 (秒単位)。 この制限に達すると、システムによってジョブが取り消されます。
inputs object ジョブへの入力のディクショナリ。 キーは、ジョブのコンテキスト内の入力の名前であり、値は入力値です。

入力は、command 式を使用して ${{ inputs.<input_name> }} で参照できます。
inputs.<input_name> 数値、整数、ブール値、文字列、またはオブジェクト リテラル値 (number、integer、boolean、または string 型)、JobInputUri、または JobInputDataset のいずれか。
outputs object ジョブの出力構成のディクショナリ。 キーはジョブのコンテキスト内の出力の名前であり、値は出力構成です。

出力は、command 式を使用して ${{ outputs.<output_name> }} で参照できます。
outputs.<output_name> object 省略可能な mode を指定するか、オブジェクトを空のままにします。 outputs 辞書に指定された名前付き出力ごとに、Azure ML は出力の場所を自動生成します。
outputs.<output_name>.mode string 出力ファイルを宛先ストレージに配信する方法のモード。 読み取り/書き込みマウント モードでは、出力ディレクトリはマウントされたディレクトリになります。 アップロード モードの場合、出力ディレクトリに書き込まれたファイルがジョブの最後にアップロードされます。 rw_mount, upload rw_mount

配布構成

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

ジョブの入力

JobInputUri

キー Type 説明 使用できる値 既定値
file string 入力として使用する 1 つのファイルへの URI。 サポートされる URI の種類は azuremlhttpswasbsabfssadl です。 azureml:// URI 形式の使用方法の詳細については、コア yaml 構文に関するページを参照してください。 file または folder のいずれかが必須です。
folder string 入力として使用するフォルダーの URI。 サポートされる URI の種類は azuremlwasbsabfssadl です。 azureml:// URI 形式の使用方法の詳細については、コア yaml 構文に関するページを参照してください。 file または folder のいずれかが必須です。
mode string コンピューティング先にデータを配信する方法のモード。 読み取り専用マウントと読み取り/書き込みマウントの場合、データはマウント パスとして使用されます。 フォルダーはフォルダーとしてマウントされ、ファイルはファイルとしてマウントされます。 ダウンロード モードの場合、データはダウンロードされたパスとして使用されます。 ro_mount, rw_mount, download ro_mount

JobInputDataset

キー Type 説明 使用できる値 既定値
dataset 文字列またはオブジェクト 必須。 入力として使用するデータセット。 これは、ワークスペース内の既存のバージョン管理されたデータセットへの参照またはインライン データセットの仕様のいずれかです。

既存のデータセットを参照するには、azureml:<dataset_name>:<dataset_version> 構文を使用します。

データセットをインラインで定義するには、データセット スキーマに従います。 name プロパティおよび version プロパティはインライン データセットではサポートされていないので、除外します。
mode string データセットをコンピューティング先に配信する方法のモード。 読み取り専用マウントの場合、データセットはマウント パスとして使用されます。 フォルダーはフォルダーとしてマウントされ、ファイルは親フォルダーとしてマウントされます。 ダウンロード モードの場合、データセットはダウンロードされたパスとして使用されます。 ro_mount, download ro_mount

解説

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: python:latest
compute: azureml:cpu-cluster

YAML: 表示名、実験名、説明、タグ

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world"
environment:
  image: python:latest
compute: azureml:cpu-cluster
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: python:latest
compute: azureml:cpu-cluster
environment_variables:
  hello_env_var: "hello world"

YAML: ソース コード

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: ls
code:
  local_path: src
environment:
  image: python:latest
compute: azureml:cpu-cluster

YAML: リテラル入力

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: >-
  echo ${{inputs.hello_string}}
  &&
  echo ${{inputs.hello_number}}
environment:
  image: python:latest
inputs:
  hello_string: "hello world"
  hello_number: 42
compute: azureml:cpu-cluster

YAML: 既定の出力への書き込み

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world" > ./outputs/helloworld.txt
environment:
  image: python:latest
compute: azureml:cpu-cluster

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
compute: azureml:cpu-cluster

YAML: データストア URI ファイルの入力

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: >-
  echo "--iris-csv: ${{inputs.iris_csv}}"
  &&
  pip install pandas
  &&
  python hello-iris.py
  --iris-csv ${{inputs.iris_csv}}
code:
  local_path: src
inputs:
  iris_csv: 
    file: azureml://datastores/workspaceblobstore/paths/example-data/iris.csv
environment:
  image: python:latest
compute: azureml:cpu-cluster

YAML: データストア URI フォルダーの入力

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: >-
  ls ${{inputs.data_dir}}
  &&
  echo "--iris-csv: ${{inputs.data_dir}}/iris.csv"
  &&
  pip install pandas
  &&
  python hello-iris.py
  --iris-csv ${{inputs.data_dir}}/iris.csv
code:
  local_path: src
inputs:
  data_dir: 
    folder: azureml://datastores/workspaceblobstore/paths/example-data/
    mode: rw_mount
environment:
  image: python:latest
compute: azureml:cpu-cluster

YAML: URI ファイルの入力

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: >-
  echo "--iris-csv: ${{inputs.iris_csv}}"
  &&
  pip install pandas
  &&
  python hello-iris.py
  --iris-csv ${{inputs.iris_csv}}
code:
  local_path: src
inputs:
  iris_csv: 
    file: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
environment:
  image: python:latest
compute: azureml:cpu-cluster

YAML: URI フォルダーの入力

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: >-
  ls ${{inputs.data_dir}}
  &&
  echo "--iris-csv: ${{inputs.data_dir}}/iris.csv"
  &&
  pip install pandas
  &&
  python hello-iris.py
  --iris-csv ${{inputs.data_dir}}/iris.csv
code:
  local_path: src
inputs:
  data_dir: 
    folder: wasbs://datasets@azuremlexamples.blob.core.windows.net/
environment:
  image: python:latest
compute: azureml:cpu-cluster

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:
  local_path: src
environment:
  image: python:latest
compute: azureml:cpu-cluster

YAML: 基本的な Python モデル トレーニング

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: 
  local_path: src
command: >-
  python main.py 
  --iris-csv ${{inputs.iris_csv}}
  --C ${{inputs.C}}
  --kernel ${{inputs.kernel}}
  --coef0 ${{inputs.coef0}}
inputs:
  iris_csv: 
    file: wasbs://datasets@azuremlexamples.blob.core.windows.net/iris.csv
  C: 0.8
  kernel: "rbf"
  coef0: 0.1
environment: azureml:AzureML-sklearn-0.24-ubuntu18.04-py37-cpu:9
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:
  local_path: src
inputs:
  iris: 
    file: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
environment:
  build:
    local_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: 
  local_path: 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:
    dataset: azureml:cifar-10-example:1
environment: azureml:AzureML-pytorch-1.9-ubuntu18.04-py37-cuda11-gpu:6
compute: azureml:gpu-cluster
distribution:
  type: pytorch 
  process_count_per_instance: 2
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:
  local_path: 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.4-ubuntu18.04-py37-cuda11-gpu:14
compute: azureml:gpu-cluster
resources:
  instance_count: 2
distribution:
  type: tensorflow
  worker_count: 2
  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.

YAML: 分散 MPI

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code:
  local_path: src
command: >-
  python train.py
  --epochs ${{inputs.epochs}}
inputs:
  epochs: 1
environment: azureml:AzureML-tensorflow-2.4-ubuntu18.04-py37-cuda11-gpu:14
compute: azureml:gpu-cluster
resources:
  instance_count: 2
distribution:
  type: mpi
  process_count_per_instance: 2
display_name: tensorflow-mnist-distributed-horovod-example
experiment_name: tensorflow-mnist-distributed-horovod-example
description: Train a basic neural network with TensorFlow on the MNIST dataset, distributed via Horovod.

次の手順