Share via


CLI (v1) パイプライン ジョブの YAML スキーマ

適用対象:Azure CLI ml 拡張機能 v1

Note

このドキュメントで詳しく説明されている YAML 構文は、v1 バージョンの ML CLI 拡張機能の JSON スキーマに基づいています。 この構文は、ML CLI v1 拡張機能でのみ、動作が保証されています。 ML CLI v2 の構文については、v2 (現在のバージョン) に切り替えてください。

重要

この記事の Azure CLI コマンドの一部では、Azure Machine Learning 用に azure-cli-ml、つまり v1 の拡張機能を使用しています。 v1 拡張機能のサポートは、2025 年 9 月 30 日に終了します。 その日付まで、v1 拡張機能をインストールして使用できます。

2025 年 9 月 30 日より前に、ml (v2) 拡張機能に移行することをお勧めします。 v2 拡張機能の詳細については、Azure ML CLI 拡張機能と Python SDK v2 に関するページを参照してください。

YAML で機械学習パイプラインを定義します。 Azure CLI v1 用の機械学習拡張機能を使用している場合、パイプライン関連のコマンドの多くは、パイプラインを定義した YAML ファイルを必要とします。

次の表に、CLI v1 で使用するための YAML でパイプラインを定義する際に現在サポートされているものと、サポートされていないものを示します。

ステップの種類 サポート対象かどうか
PythonScriptStep はい
ParallelRunStep はい
AdlaStep はい
AzureBatchStep はい
DatabricksStep はい
DataTransferStep はい
AutoMLStep いいえ
HyperDriveStep いいえ
ModuleStep はい
MPIStep いいえ
EstimatorStep いいえ

パイプラインの定義

パイプラインの定義では次のキーを使用します。これらのキーは、Pipelines クラスに対応します。

YAML キー 説明
name パイプラインの説明。
parameters パイプラインへのパラメーター。
data_reference 実行中にデータを使用できるようにする方法と場所を定義します。
default_compute パイプラインのすべてのステップが実行される既定のコンピューティング先。
steps パイプラインで使用されるステップ。

パラメーター

parameters セクションでは次のキーを使用します。これらのキーは、PipelineParameter クラスに対応します。

YAML キー 説明
type パラメーターの値の型。 有効な型は、stringintfloatbool、または datapath です。
default 既定値。

各パラメーターには名前が付けられます。 たとえば、次の YAML スニペットでは、NumIterationsParameterDataPathParameterNodeCountParameter という名前の 3 つのパラメーターが定義されています。

pipeline:
    name: SamplePipelineFromYaml
    parameters:
        NumIterationsParameter:
            type: int
            default: 40
        DataPathParameter:
            type: datapath
            default:
                datastore: workspaceblobstore
                path_on_datastore: sample2.txt
        NodeCountParameter:
            type: int
            default: 4

データ参照

data_references セクションでは次のキーを使用します。これらのキーは、DataReference に対応します。

YAML キー 説明
datastore 参照するデータストア。
path_on_datastore データ参照用バッキング ストレージの相対パス。

各データ参照は 1 つのキーに格納されます。 たとえば、次の YAML スニペットでは、employee_data という名前のキーに格納されているデータ参照が定義されています。

pipeline:
    name: SamplePipelineFromYaml
    parameters:
        PipelineParam1:
            type: int
            default: 3
    data_references:
        employee_data:
            datastore: adftestadla
            path_on_datastore: "adla_sample/sample_input.csv"

手順

ステップは、計算環境とその環境で実行すべきファイルを定義します。 ステップの種類を定義するには、type キーを使用します。

ステップの種類 説明
AdlaStep Azure Data Lake Analytics を使用して U-SQL スクリプトを実行します。 AdlaStep クラスに対応します。
AzureBatchStep Azure Batch を使用してジョブを実行します。 AzureBatchStep クラスに対応します。
DatabricsStep Databricks ノートブック、Python スクリプト、または JAR を追加します。 DatabricksStep クラスに対応します。
DataTransferStep ストレージ オプション間でデータを転送します。 DataTransferStep クラスに対応します。
PythonScriptStep Python スクリプトを実行します。 PythonScriptStep クラスに対応します。
ParallelRunStep Python スクリプトを実行して、大量のデータを非同期的かつ並列的に処理します。 ParallelRunStep クラスに対応します。

ADLA ステップ

YAML キー 説明
script_name U-SQL スクリプトの名前 (source_directory からの相対名)。
compute このステップで使用する Azure Data Lake コンピューティング先。
parameters パイプラインへのパラメーター
inputs 入力は、InputPortBindingDataReferencePortDataReferencePipelineDataDatasetDatasetDefinition、または PipelineDataset のいずれかです。
outputs 出力は、PipelineDataOutputPortBinding のどちらかです。
source_directory スクリプトやアセンブリなどを格納するディレクトリ。
priority 現在のジョブに使用する優先度の値。
params 名前と値の組のディクショナリ。
degree_of_parallelism このジョブに使用する並列処理の次数。
runtime_version Data Lake Analytics エンジンのランタイム バージョン。
allow_reuse 同じ設定でもう一度実行されたときに、ステップで前の結果を再利用するかどうかを決定します。

次に、ADLA ステップの定義のサンプルを示します。

pipeline:
    name: SamplePipelineFromYaml
    parameters:
        PipelineParam1:
            type: int
            default: 3
    data_references:
        employee_data:
            datastore: adftestadla
            path_on_datastore: "adla_sample/sample_input.csv"
    default_compute: adlacomp
    steps:
        Step1:
            runconfig: "D:\\Yaml\\default_runconfig.yml"
            parameters:
                NUM_ITERATIONS_2:
                    source: PipelineParam1
                NUM_ITERATIONS_1: 7
            type: "AdlaStep"
            name: "MyAdlaStep"
            script_name: "sample_script.usql"
            source_directory: "D:\\scripts\\Adla"
            inputs:
                employee_data:
                    source: employee_data
            outputs:
                OutputData:
                    destination: Output4
                    datastore: adftestadla
                    bind_mode: mount

Azure Batch ステップ

YAML キー 説明
compute このステップで使用する Azure Batch コンピューティング先。
inputs 入力は、InputPortBindingDataReferencePortDataReferencePipelineDataDatasetDatasetDefinition、または PipelineDataset のいずれかです。
outputs 出力は、PipelineDataOutputPortBinding のどちらかです。
source_directory モジュール バイナリ、実行可能ファイル、アセンブリなどを格納するディレクトリ。
executable このジョブの一部として実行されるコマンドまたは実行可能ファイルの名前。
create_pool ジョブを実行する前にプールを作成するかどうかを示すブール値のフラグ。
delete_batch_job_after_finish ジョブが完了した後に Batch アカウントからそのジョブを削除するかどうかを示すブール値のフラグ。
delete_batch_pool_after_finish ジョブが完了した後にプールを削除するかどうかを示すブール値のフラグ。
is_positive_exit_code_failure タスクが正数のコードで終了した場合にジョブが失敗するかどうかを示すブール値のフラグ。
vm_image_urn create_poolTrueの場合、VM では VirtualMachineConfiguration が使用されます。
pool_id ジョブが実行されるプールの ID。
allow_reuse 同じ設定でもう一度実行されたときに、ステップで前の結果を再利用するかどうかを決定します。

次に、Azure Batch ステップの定義のサンプルを示します。

pipeline:
    name: SamplePipelineFromYaml
    parameters:
        PipelineParam1:
            type: int
            default: 3
    data_references:
        input:
            datastore: workspaceblobstore
            path_on_datastore: "input.txt"
    default_compute: testbatch
    steps:
        Step1:
            runconfig: "D:\\Yaml\\default_runconfig.yml"
            parameters:
                NUM_ITERATIONS_2:
                    source: PipelineParam1
                NUM_ITERATIONS_1: 7
            type: "AzureBatchStep"
            name: "MyAzureBatchStep"
            pool_id: "MyPoolName"
            create_pool: true
            executable: "azurebatch.cmd"
            source_directory: "D:\\scripts\\AureBatch"
            allow_reuse: false
            inputs:
                input:
                    source: input
            outputs:
                output:
                    destination: output
                    datastore: workspaceblobstore

Databricks ステップ

YAML キー 説明
compute このステップで使用する Azure Databricks コンピューティング先。
inputs 入力は、InputPortBindingDataReferencePortDataReferencePipelineDataDatasetDatasetDefinition、または PipelineDataset のいずれかです。
outputs 出力は、PipelineDataOutputPortBinding のどちらかです。
run_name この実行の Databricks 内の名前。
source_directory スクリプトやその他のファイルを格納するディレクトリ。
num_workers Databricks 実行クラスターのワーカーの静的な数。
runconfig .runconfig ファイルへのパス。 このファイルは RunConfiguration クラスの YAML 表現です。 このファイルの構造について詳しくは、runconfigschema.json を参照してください。
allow_reuse 同じ設定でもう一度実行されたときに、ステップで前の結果を再利用するかどうかを決定します。

次に、Databricks ステップのサンプルを示します。

pipeline:
    name: SamplePipelineFromYaml
    parameters:
        PipelineParam1:
            type: int
            default: 3
    data_references:
        adls_test_data:
            datastore: adftestadla
            path_on_datastore: "testdata"
        blob_test_data:
            datastore: workspaceblobstore
            path_on_datastore: "dbtest"
    default_compute: mydatabricks
    steps:
        Step1:
            runconfig: "D:\\Yaml\\default_runconfig.yml"
            parameters:
                NUM_ITERATIONS_2:
                    source: PipelineParam1
                NUM_ITERATIONS_1: 7
            type: "DatabricksStep"
            name: "MyDatabrickStep"
            run_name: "DatabricksRun"
            python_script_name: "train-db-local.py"
            source_directory: "D:\\scripts\\Databricks"
            num_workers: 1
            allow_reuse: true
            inputs:
                blob_test_data:
                    source: blob_test_data
            outputs:
                OutputData:
                    destination: Output4
                    datastore: workspaceblobstore
                    bind_mode: mount

データ転送ステップ

YAML キー 説明
compute このステップで使用する Azure Data Factory コンピューティング先。
source_data_reference データ転送操作のソースとして機能する入力接続。 サポートされている値は、InputPortBindingDataReferencePortDataReferencePipelineDataDatasetDatasetDefinition、または PipelineDataset です。
destination_data_reference データ転送操作の転送先として機能する入力接続。 サポートされている値は、PipelineDataOutputPortBinding です。
allow_reuse 同じ設定でもう一度実行されたときに、ステップで前の結果を再利用するかどうかを決定します。

次に、データ転送ステップのサンプルを示します。

pipeline:
    name: SamplePipelineFromYaml
    parameters:
        PipelineParam1:
            type: int
            default: 3
    data_references:
        adls_test_data:
            datastore: adftestadla
            path_on_datastore: "testdata"
        blob_test_data:
            datastore: workspaceblobstore
            path_on_datastore: "testdata"
    default_compute: adftest
    steps:
        Step1:
            runconfig: "D:\\Yaml\\default_runconfig.yml"
            parameters:
                NUM_ITERATIONS_2:
                    source: PipelineParam1
                NUM_ITERATIONS_1: 7
            type: "DataTransferStep"
            name: "MyDataTransferStep"
            adla_compute_name: adftest
            source_data_reference:
                adls_test_data:
                    source: adls_test_data
            destination_data_reference:
                blob_test_data:
                    source: blob_test_data

Python スクリプト ステップ

YAML キー 説明
inputs 入力は、InputPortBindingDataReferencePortDataReferencePipelineDataDatasetDatasetDefinition、または PipelineDataset のいずれかです。
outputs 出力は、PipelineDataOutputPortBinding のどちらかです。
script_name Python スクリプトの名前 (source_directory からの相対名)。
source_directory スクリプトや Conda 環境などを格納するディレクトリ。
runconfig .runconfig ファイルへのパス。 このファイルは RunConfiguration クラスの YAML 表現です。 このファイルの構造について詳しくは、runconfig.json を参照してください。
allow_reuse 同じ設定でもう一度実行されたときに、ステップで前の結果を再利用するかどうかを決定します。

次に、Python スクリプト ステップのサンプルを示します。

pipeline:
    name: SamplePipelineFromYaml
    parameters:
        PipelineParam1:
            type: int
            default: 3
    data_references:
        DataReference1:
            datastore: workspaceblobstore
            path_on_datastore: testfolder/sample.txt
    default_compute: cpu-cluster
    steps:
        Step1:
            runconfig: "D:\\Yaml\\default_runconfig.yml"
            parameters:
                NUM_ITERATIONS_2:
                    source: PipelineParam1
                NUM_ITERATIONS_1: 7
            type: "PythonScriptStep"
            name: "MyPythonScriptStep"
            script_name: "train.py"
            allow_reuse: True
            source_directory: "D:\\scripts\\PythonScript"
            inputs:
                InputData:
                    source: DataReference1
            outputs:
                OutputData:
                    destination: Output4
                    datastore: workspaceblobstore
                    bind_mode: mount

並列実行ステップ

YAML キー 説明
inputs 入力には、DatasetDatasetDefinition、または PipelineDataset を指定できます。
outputs 出力は、PipelineDataOutputPortBinding のどちらかです。
script_name Python スクリプトの名前 (source_directory からの相対名)。
source_directory スクリプトや Conda 環境などを格納するディレクトリ。
parallel_run_config parallel_run_config.yml ファイルへのパス。 このファイルは ParallelRunConfig クラスの YAML 表現です。
allow_reuse 同じ設定でもう一度実行されたときに、ステップで前の結果を再利用するかどうかを決定します。

次に、並列実行ステップのサンプルを示します。

pipeline:
    description: SamplePipelineFromYaml
    default_compute: cpu-cluster
    data_references:
        MyMinistInput:
            dataset_name: mnist_sample_data
    parameters:
        PipelineParamTimeout:
            type: int
            default: 600
    steps:        
        Step1:
            parallel_run_config: "yaml/parallel_run_config.yml"
            type: "ParallelRunStep"
            name: "parallel-run-step-1"
            allow_reuse: True
            arguments:
            - "--progress_update_timeout"
            - parameter:timeout_parameter
            - "--side_input"
            - side_input:SideInputData
            parameters:
                timeout_parameter:
                    source: PipelineParamTimeout
            inputs:
                InputData:
                    source: MyMinistInput
            side_inputs:
                SideInputData:
                    source: Output4
                    bind_mode: mount
            outputs:
                OutputDataStep2:
                    destination: Output5
                    datastore: workspaceblobstore
                    bind_mode: mount

複数のステップを含むパイプライン

YAML キー 説明
steps 1 つ以上の PipelineStep 定義のシーケンス。 1 つのステップの outputsdestination キーが次のステップの inputs への source キーになることに注意してください。
pipeline:
    name: SamplePipelineFromYAML
    description: Sample multistep YAML pipeline
    data_references:
        TitanicDS:
            dataset_name: 'titanic_ds'
            bind_mode: download
    default_compute: cpu-cluster
    steps:
        Dataprep:
            type: "PythonScriptStep"
            name: "DataPrep Step"
            compute: cpu-cluster
            runconfig: ".\\default_runconfig.yml"
            script_name: "prep.py"
            arguments:
            - '--train_path'
            - output:train_path
            - '--test_path'
            - output:test_path
            allow_reuse: True
            inputs:
                titanic_ds:
                    source: TitanicDS
                    bind_mode: download
            outputs:
                train_path:
                    destination: train_csv
                    datastore: workspaceblobstore
                test_path:
                    destination: test_csv
        Training:
            type: "PythonScriptStep"
            name: "Training Step"
            compute: cpu-cluster
            runconfig: ".\\default_runconfig.yml"
            script_name: "train.py"
            arguments:
            - "--train_path"
            - input:train_path
            - "--test_path"
            - input:test_path
            inputs:
                train_path:
                    source: train_csv
                    bind_mode: download
                test_path:
                    source: test_csv
                    bind_mode: download

スケジュール

パイプラインのスケジュールを定義する場合、そのスケジュールがデータストアによってトリガーされるか、一定間隔で定期的に実行されるかを選択できます。 スケジュールの定義に使用されるキーは次のとおりです。

YAML キー 説明
description スケジュールの説明。
recurrence スケジュールが定期的に実行される場合、繰り返し設定を格納します。
pipeline_parameters パイプラインに必要なすべてのパラメーター。
wait_for_provisioning スケジュールのプロビジョニングが完了するまで待機するかどうかを指定します。
wait_timeout タイムアウトになるまで待機する秒数。
datastore_name 変更または追加された BLOB を監視するデータストア。
polling_interval 変更または追加された BLOB のポーリング間隔 (分)。 既定値:5 分。 データストアのスケジュールでのみサポートされます。
data_path_parameter_name 変更された BLOB パスで設定するデータ パス パイプライン パラメーターの名前。 データストアのスケジュールでのみサポートされます。
continue_on_step_failure 送信された PipelineRun 内の 1 つのステップが失敗した場合に、他のステップの実行を続行するかどうかを指定します。 指定した場合、パイプラインの continue_on_step_failure 設定はオーバーライドされます。
path_on_datastore 省略可能。 変更または追加された BLOB を監視するデータストア上のパス。 パスはそのデータストアのコンテナーの下にあるため、スケジュールで監視される実際のパスは container/path_on_datastore です。 存在しない場合は、データストア コンテナーが監視されます。 path_on_datastore のサブフォルダーに加えられた追加や変更は監視されません。 データストアのスケジュールでのみサポートされます。

次に、データストアによってトリガーされるスケジュールの定義のサンプルを示します。

Schedule: 
      description: "Test create with datastore" 
      recurrence: ~ 
      pipeline_parameters: {} 
      wait_for_provisioning: True 
      wait_timeout: 3600 
      datastore_name: "workspaceblobstore" 
      polling_interval: 5 
      data_path_parameter_name: "input_data" 
      continue_on_step_failure: None 
      path_on_datastore: "file/path" 

定期的なスケジュールを定義する場合は、recurrence の下で次のキーを使用します。

YAML キー 説明
frequency スケジュールが繰り返される頻度。 有効な値は、"Minute""Hour""Day""Week"、または "Month" です。
interval スケジュールが実行される頻度。 整数値は、スケジュールがもう一度実行されるまで待機する時間単位の数です。
start_time スケジュールの開始時刻。 この値の文字列形式は YYYY-MM-DDThh:mm:ss です。 開始時刻を指定しない場合、最初のワークロードはすぐに実行され、将来のワークロードはスケジュールに基づいて実行されます。 開始時刻が過去の場合、最初のワークロードは、計算された次の実行時に実行されます。
time_zone 開始時刻のタイム ゾーン。 タイム ゾーンを指定しない場合、UTC が使用されます。
hours frequency"Day" または "Week" の場合、パイプラインを実行する時刻 (時) として、0 から 23 までの 1 つ以上の整数をコンマ区切りで指定できます。 使用できるのは、time_of_day か、hoursminutes のみです。
minutes frequency"Day" または "Week" の場合、パイプラインを実行する時刻 (分) として、0 から 59 までの 1 つ以上の整数をコンマ区切りで指定できます。 使用できるのは、time_of_day か、hoursminutes のみです。
time_of_day frequency"Day" または "Week" の場合、スケジュールを実行する時刻を指定できます。 この値の文字列形式は hh:mm です。 使用できるのは、time_of_day か、hoursminutes のみです。
week_days frequency"Week" の場合、スケジュールを実行する 1 つ以上の曜日をコンマ区切りで指定できます。 有効な値は、"Monday""Tuesday""Wednesday""Thursday""Friday""Saturday""Sunday"です。

次に、定期的なスケジュールの定義のサンプルを示します。

Schedule: 
    description: "Test create with recurrence" 
    recurrence: 
        frequency: Week # Can be "Minute", "Hour", "Day", "Week", or "Month". 
        interval: 1 # how often fires 
        start_time: 2019-06-07T10:50:00 
        time_zone: UTC 
        hours: 
        - 1 
        minutes: 
        - 0 
        time_of_day: null 
        week_days: 
        - Friday 
    pipeline_parameters: 
        'a': 1 
    wait_for_provisioning: True 
    wait_timeout: 3600 
    datastore_name: ~ 
    polling_interval: ~ 
    data_path_parameter_name: ~ 
    continue_on_step_failure: None 
    path_on_datastore: ~ 

次のステップ

Azure Machine Learning 用の CLI 拡張機能を使用する方法について学習する。