CLI (v2) コマンド コンポーネント YAML スキーマ

適用対象: Azure CLI ML 拡張機能 v2 (現行)

ソース JSON スキーマは https://azuremlschemas.azureedge.net/latest/commandComponent.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 必須。 コンポーネント名。 先頭には小文字を使用する必要があります。 使用できる文字は、小文字、数字、アンダースコア (_) です。 最大文字数は 255 文字です。
version string コンポーネントのバージョン。 省略した場合、Azure Machine Learning によってバージョンが自動生成されます。
display_name string Studio UI でのコンポーネントの表示名。 ワークスペース内で一意ではない場合があります。
description string コンポーネントの説明。
tags object コンポーネントのタグの辞書。
is_deterministic boolean このオプションにより、コンポーネントが同じ入力データに対して同じ出力を生成するかどうかが判別されます。 URL からのデータのインポートなど、外部ソースからデータを読み込むコンポーネントの場合は、通常、これを false に設定する必要があります。 これは、URL のデータが時間の経過と共に変化する可能性があるためです。 true
command string 必須。 実行するコマンドです。
code string アップロードしてコンポーネントに使用するソース コード ディレクトリへのローカル パス。
environment 文字列またはオブジェクト 必須です。 コンポーネントに使用する環境。 この値は、ワークスペース内の既存のバージョン管理された環境への参照、またはインライン環境仕様のいずれかになります。

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

環境をインラインで定義するには、環境スキーマに従います。 name プロパティと version プロパティは、インライン環境ではサポートされていないため、除外します。
distribution object 分散トレーニング シナリオの配布構成。 MpiConfigurationPyTorchConfigurationTensorFlowConfiguration のいずれか。
resources.instance_count 整数 (integer) ジョブに使用するノードの数。 1
inputs object コンポーネント入力の辞書。 キーはコンポーネントのコンテキスト内の入力の名前であり、値はコンポーネントの入力定義です。

入力は、${{ inputs.<input_name> }} 式を使用して command で参照できます。
inputs.<input_name> object コンポーネントの入力定義。 構成可能なプロパティのセットについては、コンポーネントの入力を参照してください。
outputs object コンポーネント出力の辞書。 キーはコンポーネントのコンテキスト内の出力の名前であり、値はコンポーネントの出力定義です。

出力は、${{ outputs.<output_name> }} 式を使用して command で参照できます。
outputs.<output_name> object コンポーネントの出力定義。 構成可能なプロパティのセットについては、コンポーネントの出力を参照してください。

配布構成

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 必須。 コンポーネント入力の種類。 データ アクセスの詳細について確認してください number, integer, boolean, string, uri_file, uri_folder, mltable, mlflow_model
description string 入力の説明。
default number、integer、boolean、または string 入力の既定値。
optional boolean 入力が必須かどうか。 true に設定されている場合は、$[[]] を使用して、オプションの入力を含むコマンドを使用する必要があります。 false
min integer または number 入力に許容される最小値。 このフィールドは、type フィールドが number または integer の場合にのみ指定できます。
max integer または number 入力に許容される最大値。 このフィールドは、type フィールドが number または integer の場合にのみ指定できます。
enum array 入力に使用できる値のリスト。 type フィールドが string の場合のみ適用されます。

コンポーネント出力

キー Type 説明 使用できる値 既定値
type string 必須。 コンポーネント出力の種類。 uri_file, uri_folder, mltable, mlflow_model
description string 出力の説明。

Remarks

az ml component コマンドを使用して、Azure Machine Learning コンポーネントを管理できます。

コマンド コンポーネントの例は、GitHub リポジトリの例にあります。 以下に選択可能な例を示します。

例は、GitHub リポジトリの例にあります。 以下にいくつか示します。

YAML: Hello world コマンド コンポーネント

$schema: https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
type: command

name: hello_python_world
display_name: Hello_Python_World
version: 1

code: ./src

environment: 
  image: python

command: >-
  python hello.py

YAML: 入力の種類が異なるコンポーネント

$schema: https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
name: train_data_component_cli
display_name: train_data
description: A example train component
tags:
  author: azureml-sdk-team
version: 9
type: command
inputs:
  training_data: 
    type: uri_folder
  max_epocs:
    type: integer
    optional: true
  learning_rate: 
    type: number
    default: 0.01
    optional: true
  learning_rate_schedule: 
    type: string
    default: time-based
    optional: true
outputs:
  model_output:
    type: uri_folder
code: ./train_src
environment: azureml://registries/azureml/environments/sklearn-1.0/labels/latest
command: >-
  python train.py 
  --training_data ${{inputs.training_data}} 
  $[[--max_epocs ${{inputs.max_epocs}}]]
  $[[--learning_rate ${{inputs.learning_rate}}]]
  $[[--learning_rate_schedule ${{inputs.learning_rate_schedule}}]]
  --model_output ${{outputs.model_output}}

コマンド ラインで省略可能な入力を定義する

入力が optional = true として設定されている場合、入力を含むコマンド ラインを $[[]] を使用して囲む必要があります。 たとえば、「 $[[--input1 ${{inputs.input1}}] 」のように指定します。 実行時のコマンド ラインでは、異なる入力がある場合があります。

  • 必須の training_datamodel_output のパラメーターの指定のみを使用する場合、コマンド ラインは次のようになります。
python train.py --training_data some_input_path --learning_rate 0.01 --learning_rate_schedule time-based --model_output some_output_path

実行時に値が指定されない場合、learning_rate および learning_rate_schedule では既定値が使用されます。

  • 実行時にすべての入力/出力で値が提供される場合、コマンド ラインは次のようになります。
python train.py --training_data some_input_path --max_epocs 10 --learning_rate 0.01 --learning_rate_schedule time-based --model_output some_output_path

一般的なエラーと推奨事項

コンポーネントを定義するときの一般的なエラーとそれに対応する推奨事項を次に示します。

キー エラー 推奨
command 1. $[[]] にはオプションの入力のみを入力できます
2. コマンドでは、\ を使用して新しい行を作成することはできません。
3. 入力または出力が見つかりません。
1. コマンドで使用されるすべての入力または出力が、inputs および outputs セクションで定義済みであることを確認し、省略可能な入力 $[[]] または必須の入力 ${{}} に正しい形式を使用します。
2. 新しい行を作成するために \ を使用することはサポートされていません。
環境 1. 環境 {envName} バージョン {envVersion} の定義が存在しません。
2. 名前 {envName}、バージョン {envVersion} の環境は存在しません。
3. ID {envAssetId} の資産は見つかりませんでした。
1. コンポーネント定義で参照する環境名とバージョンが存在することを確認します。
2. 登録済み環境を参照する場合は、バージョンを指定する必要があります。
入出力 1. 入力または出力名がシステム予約済みパラメーターと競合しています。
2. 入力または出力の名前が重複しています。
1. 入力または出力名として、予約済みパラメーター pathld_library_pathuserlognamehomepwdshell のいずれも使用しないでください。
2. 入力と出力の名前が重複していないことを確認します。

次の手順