CLI (v2) パイプライン ジョブの YAML スキーマ
適用対象: Azure CLI ml 拡張機能 v2 (現行)
ソース JSON スキーマは、 https://azuremlschemas.azureedge.net/latest/pipelineJob.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 | 必須です。 ジョブの種類。 | pipeline |
|
name |
string | ジョブの名前。 ワークスペース内のすべてのジョブで一意である必要があります。 省略した場合、Azure Machine Learning によって名前の GUID が自動生成されます。 | ||
display_name |
string | スタジオ UI でのジョブの表示名。 ワークスペース内で一意ではない場合があります。 省略した場合、Azure Machine Learning により、表示名として、人間が判読できる形容詞と名詞の識別子が自動生成されます。 | ||
experiment_name |
string | 実験名でジョブを整理します。 各ジョブの実行レコードは、スタジオの [実験] タブの対応する実験の下に編成されます。 省略すると、Azure Machine Learning は既定でジョブが作成された作業ディレクトリの名前に experiment_name します。 |
||
tags |
オブジェクト | ジョブのタグの辞書。 | ||
settings |
object | パイプライン ジョブの既定の設定。 構成可能なプロパティのセットについては、settings キーの属性を参照してください。 |
||
jobs |
オブジェクト | 必須です。 パイプライン内のステップとして実行する個々のジョブのセットの辞書。 これらのジョブは、親パイプライン ジョブの子ジョブと見なされます。 キーは、パイプライン ジョブのコンテキスト内のステップの名前です。 この名前は、子ジョブの一意のジョブ名とは異なります。 この値はジョブの仕様であり、 コマンド ジョブ スキーマ または sweep ジョブ スキーマに従うことができます。 現時点では、パイプラインで実行できるのはコマンド ジョブとスイープ ジョブだけです。 今後のリリースでは、他の種類のジョブがサポートされます。 |
||
inputs |
object | パイプライン ジョブへの入力の辞書。 キーは、ジョブのコンテキスト内の入力の名前です。 値は入力値です。 パイプライン内の個々のステップ ジョブの入力は、 ${{ parent.inputs.<input_name> }} 式を使用してこれらのパイプライン入力を参照できます。 パイプライン ステップの入力を最上位のパイプライン ジョブの入力にバインドする方法の詳細については、パイプライン ジョブのステップ間で入力と出力をバインドするための Expression 構文を参照してください。 |
||
inputs.<input_name> |
数値、整数、ブール値、文字列、またはオブジェクト | リテラル値 (型番号、整数、ブール値、または文字列) のいずれか、またはジョブ入力データ仕様を含むオブジェクト。 | ||
outputs |
object | パイプライン ジョブの出力構成の辞書。 キーは、ジョブのコンテキスト内の出力の名前です。 値は出力構成です。 パイプライン内の個々のステップ ジョブの出力は、 ${{ parents.outputs.<output_name> }} 式を使用してこれらのパイプライン出力を参照できます。 パイプライン ステップの出力を最上位のパイプライン ジョブの出力にバインドする方法の詳細については、パイプライン ジョブのステップ間で入力と出力をバインドするための Expression 構文を参照してください。 |
||
outputs.<output_name> |
オブジェクト | オブジェクトは空のままにしておくことができます。 この場合、既定では、出力は uri_folder 型になり、Azure Machine Learning では、このテンプレート化されたパス ( {settings.datastore}/azureml/{job-name}/{output-name}/ ) に基づいて出力の出力場所がシステムによって生成されます。 出力ディレクトリへのファイルは、読み取り/書き込みマウントを介して書き込まれます。 別の出力モードを指定するには、 job 出力仕様を含むオブジェクトを指定。 |
||
identity |
オブジェクト | ID は、データアクセスに使用されます。 UserIdentityConfiguration、ManagedIdentityConfiguration、または None を指定できます。 UserIdentityConfiguration の場合、ジョブの送信者の ID を使用して入力データにアクセスし、結果を出力フォルダーに書き込みます。それ以外の場合は、コンピューティング 先のマネージド ID が使用されます。 |
settings
キーの属性
キー | Type | 説明 | 既定値 |
---|---|---|---|
default_datastore |
string | パイプライン ジョブの既定のデータストアとして使用するデータストアの名前。 この値は、 azureml:<datastore-name> 構文を使用して、ワークスペース内の既存のデータストアへの参照である必要があります。 親パイプライン ジョブまたは子ステップ ジョブの outputs プロパティで定義されているすべての出力は、このデータストアに格納されます。 省略すると、出力はワークスペース BLOB データストアに格納されます。 |
|
default_compute |
string | パイプライン内のすべてのステップの既定のコンピューティングとして使用するコンピューティング 先の名前。 ステップ レベルで定義されたコンピューティングは、その特定のステップの既定のコンピューティングをオーバーライドします。 default_compute 値は、azureml:<compute-name> 構文を使用して、ワークスペース内の既存のコンピューティングへの参照である必要があります。 |
|
continue_on_step_failure |
boolean | この設定によって、パイプラインのステップが失敗した場合の動作が決定します。 既定では、1 つのステップが失敗した場合でも、パイプラインは引き続き実行されます。 これは、失敗したステップに依存しないすべてのステップが引き続き実行されることを意味します。 ただし、この設定を False に変更すると、パイプライン全体の実行が停止し、1 つのステップが失敗した場合、現在実行中のステップはすべて取り消されます。 | True |
force_rerun |
boolean | パイプライン全体を強制的に再実行するかどうか。 既定値は False です。 つまり、既定では、パイプラインは再利用条件を満たしている場合に、前のジョブの出力を再利用しようとします。 True に設定された場合、パイプライン内のすべてのステップが再実行されます。 |
False |
ジョブの入力
キー | Type | 説明 | 使用できる値 | 既定値 |
---|---|---|---|---|
type |
string | ジョブ入力の種類。 1 つのファイル ソースを指す入力データの場合は uri_file 、フォルダー ソースを指す入力データの場合は uri_folder を指定します。 詳細については、 データ アクセスの詳細を参照してください。 |
uri_file 、 uri_folder 、 mltable 、 mlflow_model |
uri_folder |
path |
string | 入力として使用するデータのパス。 これは、いくつかの方法で指定できます。 - データ ソース ファイルまたはフォルダーへのローカル パス (例: path: ./iris.csv )。 ジョブの送信中にデータがアップロードされます。 - 入力として使用するファイルまたはフォルダーへのクラウド パスの URI。 サポートされる URI の種類は azureml 、https 、wasbs 、abfss 、adl です。 azureml:// URI 形式の使用方法の詳細については、Core 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 が渡されます。 この場合、ストレージにアクセスするための資格情報を処理する責任があります。 |
ro_mount 、 download 、 direct |
ro_mount |
ジョブ出力
キー | Type | 説明 | 使用できる値 | 既定値 |
---|---|---|---|---|
type |
string | ジョブ出力の種類。 既定の uri_folder の種類の場合、出力はフォルダーに対応します。 |
uri_file 、 uri_folder 、 mltable 、 mlflow_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 パイプライン
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: hello_pipeline
jobs:
hello_job:
command: echo "hello"
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
compute: azureml:cpu-cluster
world_job:
command: echo "world"
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
compute: azureml:cpu-cluster
YAML: 入力/出力の依存関係
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: hello_pipeline_io
jobs:
hello_job:
command: echo "hello" && echo "world" > ${{outputs.world_output}}/world.txt
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
compute: azureml:cpu-cluster
outputs:
world_output:
world_job:
command: cat ${{inputs.world_input}}/world.txt
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
compute: azureml:cpu-cluster
inputs:
world_input: ${{parent.jobs.hello_job.outputs.world_output}}
YAML: 一般的なパイプライン ジョブ設定
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: hello_pipeline_settings
settings:
default_datastore: azureml:workspaceblobstore
default_compute: azureml:cpu-cluster
jobs:
hello_job:
command: echo 202204190 & echo "hello"
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
world_job:
command: echo 202204190 & echo "hello"
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
YAML: 上位の入力と一般的なパイプライン ジョブ設定のオーバーライド
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: hello_pipeline_abc
settings:
default_compute: azureml:cpu-cluster
inputs:
hello_string_top_level_input: "hello world"
jobs:
a:
command: echo hello ${{inputs.hello_string}}
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
inputs:
hello_string: ${{parent.inputs.hello_string_top_level_input}}
b:
command: echo "world" >> ${{outputs.world_output}}/world.txt
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
outputs:
world_output:
c:
command: echo ${{inputs.world_input}}/world.txt
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
inputs:
world_input: ${{parent.jobs.b.outputs.world_output}}