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 ラーニングの既定値experiment_nameは、ジョブが作成された作業ディレクトリの名前になります。
tags オブジェクト ジョブのタグの辞書。
settings object パイプライン ジョブの既定の設定。 構成可能なプロパティのsettingsセットについては、キーの属性を参照してください。
jobs オブジェクト 必須です。 パイプライン内のステップとして実行する個々のジョブのセットの辞書。 これらのジョブは、親パイプライン ジョブの子ジョブと見なされます。

キーは、パイプライン ジョブのコンテキスト内のステップの名前です。 この名前は、子ジョブの一意のジョブ名とは異なります。 値はジョブの仕様であり、コマンド ジョブ スキーマまたはスイープ ジョブ スキーマ従うことができます。 現時点では、パイプラインで実行できるのはコマンド ジョブとスイープ ジョブだけです。 今後のリリースでは、他の種類のジョブがサポートされます。
inputs object パイプライン ジョブへの入力の辞書。 キーは、ジョブのコンテキスト内の入力の名前です。 値は入力値です。

パイプライン内の個々のステップ ジョブの入力は、式を使用してこれらのパイプライン入力を ${{ parent.inputs.<input_name> }} 参照できます。 パイプライン ステップの入力を最上位のパイプライン ジョブの入力にバインドする方法の詳細については、「パイプライン ジョブのステップ間で入力と出力をバインドするための式の構文」を参照してください。
inputs.<input_name> 数値、整数、ブール値、文字列、またはオブジェクト リテラル値 (型番号、整数、ブール値、または文字列) のいずれか、またはジョブ入力データ仕様を含むオブジェクト。
outputs object パイプライン ジョブの出力構成の辞書。 キーは、ジョブのコンテキスト内の出力の名前です。 値は出力構成です。

パイプライン内の個々のステップ ジョブの出力は、式を使用してこれらのパイプライン出力を ${{ parents.outputs.<output_name> }} 参照できます。 パイプライン ステップの出力を最上位のパイプライン ジョブの出力にバインドする方法の詳細については、パイプライン ジョブのステップ間で入力と出力をバインドするための式構文を参照してください。
outputs.<output_name> オブジェクト オブジェクトは空のままにしておくことができます。 この場合、既定では、出力は種類uri_folderになり、Azure Machine ラーニングは、次のテンプレート化されたパス{settings.datastore}/azureml/{job-name}/{output-name}/に基づいて出力の出力場所をシステム生成します。 出力ディレクトリへのファイルは、読み取り/書き込みマウントを介して書き込まれます。 別の出力モードを指定するには、ジョブ出力仕様を含むオブジェクトを 指定します
identity オブジェクト データにアクセスすると、ID が使用されます。 ユーザー ID 構成、マネージド ID 構成またはなしを指定できます。 UserIdentityConfiguration の場合、ジョブ送信者の ID を使用して入力データにアクセスし、結果を出力フォルダーに書き込みます。 それ以外の場合、UserIdentityConfiguration はコンピューティング 先のマネージド 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_fileuri_folder、、 mltablemlflow_model uri_folder
path string 入力として使用するデータのパス。 これは、いくつかの方法で指定できます。

- データ ソース ファイルまたはフォルダーへのローカル パス (例: path: ./iris.csv)。 ジョブの送信中にデータがアップロードされます。

- 入力として使用するファイルまたはフォルダーへのクラウド パスの URI。 サポートされる URI の種類は azuremlhttpswasbsabfssadl です。 URI 形式の使用方法のazureml://詳細については、Core yaml 構文に関するページを参照してください

- 入力として使用する既存の登録済み Azure Machine Learning データ資産。 登録済みデータ資産を参照するには、構文をazureml:<data_name>:<data_version>使用するかazureml:<data_name>@latest(そのデータ資産の最新バージョンを参照する場合)、例: path: azureml:cifar10-data:1path: azureml:cifar10-data@latest
mode string コンピューティング先にデータを配信する方法のモード。

読み取り専用マウントの場合 (ro_mount)、データはマウント パスとして使用されます。 フォルダーはフォルダーとしてマウントされ、ファイルはファイルとしてマウントされます。 Azure Machine ラーニングは、入力をマウント パスに解決します。

モードの場合 download 、データはコンピューティング 先にダウンロードされます。 Azure Machine ラーニングは、ダウンロードしたパスへの入力を解決します。

データ自体をマウントまたはダウンロードする代わりに、データ成果物または成果物の保存場所の URL だけを使用します direct 。 これにより、ジョブ入力としてストレージの場所の URL が渡されます。 この場合、ストレージにアクセスするための資格情報を処理する責任があります。
ro_mountdownloaddirect ro_mount

ジョブ出力

キー Type 説明 使用できる値 既定値
type string ジョブ出力の種類。 既定の uri_folder の種類の場合、出力はフォルダーに対応します。 uri_fileuri_folder、、 mltablemlflow_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 ラーニング ジョブを管理できます。

例については、 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.0/labels/latest
    compute: azureml:cpu-cluster
  world_job:
    command: echo "world"
    environment: azureml://registries/azureml/environments/sklearn-1.0/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.0/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.0/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.0/labels/latest
  world_job:
    command: echo 202204190 & echo "hello"
    environment: azureml://registries/azureml/environments/sklearn-1.0/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.0/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.0/labels/latest
    outputs:
      world_output:
  c:
    command: echo ${{inputs.world_input}}/world.txt
    environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
    inputs:
      world_input: ${{parent.jobs.b.outputs.world_output}}

次の手順