YAML-Schema für einen CLI-Pipelineauftrag (v1)

GILT FÜR:Azure CLI ML-Erweiterung v1

Hinweis

Die in diesem Dokument beschriebene YAML-Syntax basiert auf dem JSON-Schema für die Version v1 der ML-CLI-Erweiterung. Die Funktion dieser Syntax wird nur mit der Version der ML-CLI-v1-Erweiterung garantiert. Wechseln Sie zu v2 (aktuelle Version) für die Syntax für CLI v2 für ML.

Wichtig

Einige Azure CLI-Befehle in diesem Artikel verwenden die Erweiterung azure-cli-ml oder v1 für Azure Machine Learning. Der Support für die v1-Erweiterung endet am 30. September 2025. Sie können die v1-Erweiterung bis zu diesem Datum installieren und verwenden.

Es wird empfohlen, vor dem 30. September 2025 zur ml- oder v2-Erweiterung zu wechseln. Weitere Informationen zur v2-Erweiterung finden Sie unter Was sind die Azure Machine Learning CLI und das Python SDK v2?.

Definieren Sie Ihre Machine Learning-Pipelines in YAML. Wenn Sie die Machine Learning-Erweiterung für die Azure CLI v1 verwenden, erwarten viele der auf die Pipeline ausgerichteten Befehle eine YAML-Datei, die die Pipeline definiert.

In der folgenden Tabelle ist aufgeführt, was beim Definieren einer Pipeline in YAML zur Verwendung mit CLI v1 derzeit unterstützt bzw. nicht unterstützt wird:

Schritttyp Unterstützt?
PythonScriptStep Ja
ParallelRunStep Ja
AdlaStep Ja
AzureBatchStep Ja
DatabricksStep Ja
DataTransferStep Ja
AutoMLStep Nein
HyperDriveStep Nein
ModuleStep Ja
MPIStep Nein
EstimatorStep Nein

Definition der Pipeline

In einer Pipelinedefinition werden die folgenden Schlüssel verwendet, die der Pipelines-Klasse entsprechen:

YAML-Schlüssel BESCHREIBUNG
name Die Beschreibung der Pipeline.
parameters Parameter für die Pipeline.
data_reference Definiert, wie und wo Daten in einer Ausführung verfügbar sein sollen.
default_compute Standardmäßiges Computeziel, bei dem alle Schritte in der Pipeline ausgeführt werden.
steps Die in der Pipeline verwendeten Schritte.

Parameter

Der Abschnitt parameters verwendet die folgenden Schlüssel, die der PipelineParameter-Klasse entsprechen:

YAML-Schlüssel BESCHREIBUNG
type Der Werttyp des Parameters. Gültige Typen sind string, int, float, bool oder datapath.
default Der Standardwert.

Jeder Parameter ist benannt. Der folgende YAML-Codeausschnitt definiert beispielsweise drei Parameter mit dem Namen NumIterationsParameter, DataPathParameter und NodeCountParameter:

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

Datenverweis

Der Abschnitt data_references verwendet die folgenden Schlüssel, die der DataReference-Klasse entsprechen:

YAML-Schlüssel BESCHREIBUNG
datastore Der Datenspeicher, auf den verwiesen wird.
path_on_datastore Der relative Pfad im Sicherungsspeicher für den Datenverweis.

Jeder Datenverweis ist in einem Schlüssel enthalten. Der folgende YAML-Codeausschnitt definiert beispielsweise einen Datenverweis, der im Schlüssel namens employee_data gespeichert ist:

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

Schritte

Die Schritte definieren eine Compute-Umgebung und die Dateien, die in der Umgebung ausgeführt werden sollen. Zum Definieren des Typs eines Schritts verwenden Sie den Schlüssel type:

Schritttyp BESCHREIBUNG
AdlaStep Führt ein U-SQL-Skript mit Azure Data Lake Analytics aus. Entspricht der AdlaStep-Klasse.
AzureBatchStep Führt Aufträge mithilfe von Azure Batch aus. Entspricht der AzureBatchStep-Klasse.
DatabricsStep Fügt ein Databricks-Notebook, ein Python-Skript oder JAR hinzu. Entspricht der DatabricksStep-Klasse.
DataTransferStep Überträgt Daten zwischen verschiedenen Speicheroptionen. Entspricht der DataTransferStep-Klasse.
PythonScriptStep Führt ein Python-Skript aus. Entspricht der PythonScriptStep-Klasse.
ParallelRunStep Führt ein Python-Skript aus, um große Datenmengen asynchron und parallel zu verarbeiten. Entspricht der ParallelRunStep-Klasse.

ADLA-Schritt

YAML-Schlüssel BESCHREIBUNG
script_name Der Name des U-SQL-Skripts (relativ zum source_directory).
compute Das für diesen Schritt zu verwendende Azure Data Lake-Computeziel.
parameters Parameter für die Pipeline.
inputs Mögliche Eingaben sind InputPortBinding, DataReference, PortDataReference, PipelineData, Dataset, DatasetDefinition oder PipelineDataset.
outputs Mögliche Ausgaben sind PipelineData oder OutputPortBinding.
source_directory Das Verzeichnis, das das Skript, Assemblys usw. enthält.
priority Der für den aktuellen Auftrag zu verwendenden Prioritätswert.
params Ein Wörterbuch von Name/Wert-Paaren.
degree_of_parallelism Der für diesen Auftrag zu verwendende Grad an Parallelität.
runtime_version Die Runtimeversion der Data Lake Analytics-Engine.
allow_reuse Bestimmt, ob bei dem Schritt vorherige Ergebnisse wiederverwendet werden sollen, wenn er mit den gleichen Einstellungen ausgeführt wird.

Das folgende Beispiel enthält die Definition eines ADLA-Schritts:

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-Schritt

YAML-Schlüssel BESCHREIBUNG
compute Das für diesen Schritt zu verwendende Azure Batch-Computeziel.
inputs Mögliche Eingaben sind InputPortBinding, DataReference, PortDataReference, PipelineData, Dataset, DatasetDefinition oder PipelineDataset.
outputs Mögliche Ausgaben sind PipelineData oder OutputPortBinding.
source_directory Verzeichnis, das die Binärdateien des Modul, die ausführbare Datei, die Assemblys usw. enthält.
executable Der Name des Befehls/der ausführbaren Datei, der/die als Teil dieses Auftrags ausgeführt wird.
create_pool Boolesches Flag, das angibt, ob der Pool vor der Ausführung des Auftrags erstellt werden soll.
delete_batch_job_after_finish Boolesches Flag, das angibt, ob der Auftrag nach seinem Abschluss aus dem Batch-Konto gelöscht werden soll.
delete_batch_pool_after_finish Boolesches Flag, das angibt, ob der Pool nach Abschluss des Auftrags gelöscht werden soll.
is_positive_exit_code_failure Boolesches Flag, das angibt, ob der Auftrag fehlschlägt, wenn die Aufgabe mit einem positiven Code beendet wird.
vm_image_urn Wenn create_poolTrue ist und die VM VirtualMachineConfiguration verwendet.
pool_id Die ID des Pools, in dem der Auftrag ausgeführt wird.
allow_reuse Bestimmt, ob bei dem Schritt vorherige Ergebnisse wiederverwendet werden sollen, wenn er mit den gleichen Einstellungen ausgeführt wird.

Das folgende Beispiel enthält die Definition eines Azure Batch-Schritts:

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-Schritt

YAML-Schlüssel BESCHREIBUNG
compute Das für diesen Schritt zu verwendende Azure Databricks-Computeziel.
inputs Mögliche Eingaben sind InputPortBinding, DataReference, PortDataReference, PipelineData, Dataset, DatasetDefinition oder PipelineDataset.
outputs Mögliche Ausgaben sind PipelineData oder OutputPortBinding.
run_name Der Name für diese Ausführung in Databricks.
source_directory Das Verzeichnis, das das Skript und andere Dateien enthält.
num_workers Die statische Anzahl von Workern für den Databricks-Cluster.
runconfig Der Pfad zur Datei .runconfig. Diese Datei ist eine YAML-Darstellung der RunConfiguration-Klasse. Weitere Informationen zur Struktur dieser Datei finden Sie unter runconfigschema.json.
allow_reuse Bestimmt, ob bei dem Schritt vorherige Ergebnisse wiederverwendet werden sollen, wenn er mit den gleichen Einstellungen ausgeführt wird.

Das folgende Beispiel enthält einen Databricks-Schritt:

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

Datenübertragungsschritt

YAML-Schlüssel BESCHREIBUNG
compute Das für diesen Schritt zu verwendende Azure Data Factory-Computeziel.
source_data_reference Eingabeverbindung, die als Quelle für Datenübertragungsvorgängen dient. Es werden die Werte InputPortBinding, DataReference, PortDataReference, PipelineData, Dataset, DatasetDefinition oder PipelineDataset unterstützt.
destination_data_reference Eingabeverbindung, die als Ziel für Datenübertragungsvorgängen dient. Es werden die Werte PipelineData und OutputPortBinding unterstützt.
allow_reuse Bestimmt, ob bei dem Schritt vorherige Ergebnisse wiederverwendet werden sollen, wenn er mit den gleichen Einstellungen ausgeführt wird.

Das folgende Beispiel enthält einen Datenübertragungsschritt:

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-Skriptschritt

YAML-Schlüssel BESCHREIBUNG
inputs Mögliche Eingaben sind InputPortBinding, DataReference, PortDataReference, PipelineData, Dataset, DatasetDefinition oder PipelineDataset.
outputs Mögliche Ausgaben sind PipelineData oder OutputPortBinding.
script_name Der Name des Python-Skripts (relativ zum source_directory).
source_directory Verzeichnis, das das Skript, die Conda-Umgebung usw. enthält.
runconfig Der Pfad zur Datei .runconfig. Diese Datei ist eine YAML-Darstellung der RunConfiguration-Klasse. Weitere Informationen zur Struktur dieser Datei finden Sie unter runconfig.json.
allow_reuse Bestimmt, ob bei dem Schritt vorherige Ergebnisse wiederverwendet werden sollen, wenn er mit den gleichen Einstellungen ausgeführt wird.

Das folgende Beispiel enthält einen Python-Skriptschritt:

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

Schritt zur parallelen Ausführung

YAML-Schlüssel BESCHREIBUNG
inputs Eingaben können Dataset, DatasetDefinition oder PipelineDataset sein.
outputs Mögliche Ausgaben sind PipelineData oder OutputPortBinding.
script_name Der Name des Python-Skripts (relativ zum source_directory).
source_directory Verzeichnis, das das Skript, die Conda-Umgebung usw. enthält.
parallel_run_config Der Pfad zur Datei parallel_run_config.yml. Diese Datei ist eine YAML-Darstellung der ParallelRunConfig-Klasse.
allow_reuse Bestimmt, ob bei dem Schritt vorherige Ergebnisse wiederverwendet werden sollen, wenn er mit den gleichen Einstellungen ausgeführt wird.

Das folgende Beispiel enthält einen Schritt zur parallelen Ausführung:

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

Pipeline mit mehreren Schritten

YAML-Schlüssel BESCHREIBUNG
steps Folge von PipelineStep-Definitionen. Beachten Sie, dass die destination-Schlüssel der outputs eines Schritts zu den source-Schlüsseln der inputs des nächsten Schritts werden.
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

Zeitpläne

Bei der Definition des Zeitplans für eine Pipeline kann dieser entweder datenspeichergesteuert oder sich wiederholend basierend auf einem Zeitintervall ausgeführt werden. Im folgenden Abschnitt finden Sie die Schlüssel, die zum Definieren eines Zeitplans verwendet werden:

YAML-Schlüssel BESCHREIBUNG
description Eine Beschreibung des Zeitplans.
recurrence Enthält Serieneinstellungen, wenn sich der Zeitplan wiederholt.
pipeline_parameters Jegliche Parameter, die für die Pipeline erforderlich sind.
wait_for_provisioning Gibt an, ob auf die Bereitstellung des Zeitplans gewartet werden soll.
wait_timeout Die Anzahl der Sekunden, die gewartet werden soll, bevor ein Timeout eintritt.
datastore_name Der Datenspeicher, der hinsichtlich geänderter/hinzugefügter Blobdaten überwacht werden soll.
polling_interval Gibt an, wie viel Zeit (in Minuten) zwischen dem Abruf von geänderten/hinzugefügten Blobdaten liegen soll. Standardwert: 5 Minuten. Wird nur für Datenspeicherzeitpläne unterstützt.
data_path_parameter_name Der Name des Pipelineparameters des Datenpfads, der mit dem geänderten Blobpfad festgelegt werden soll. Wird nur für Datenspeicherzeitpläne unterstützt.
continue_on_step_failure Gibt an, ob die Ausführung weiterer Schritte im übermittelten PipelineRun fortgesetzt werden soll, wenn ein Schritt nicht erfolgreich war. Wenn angegeben, wird die continue_on_step_failure-Einstellung der Pipeline überschrieben.
path_on_datastore Optional. Der Pfad im Datenspeicher, der hinsichtlich geänderter/hinzugefügter Blobdaten überwacht werden soll. Der Pfad befindet sich unter dem Container des Datenspeichers, sodass der tatsächliche Pfad, den der Zeitplan überwacht Container/path_on_datastore ist. Wenn nichts angegeben ist, wird der Datenspeichercontainer überwacht. Ergänzungen/Änderungen, die in einem Unterordner des path_on_datastore vorgenommen werden, werden nicht überwacht. Wird nur für Datenspeicherzeitpläne unterstützt.

Das folgende Beispiel enthält die Definition für einen von einem Datenspeicher ausgelösten Zeitplan:

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" 

Wenn Sie einen wiederkehrenden Zeitplan definieren, verwenden Sie die folgenden Schlüssel unter recurrence:

YAML-Schlüssel BESCHREIBUNG
frequency Gibt an, wie oft der Zeitplan wiederholt wird. Gültige Werte sind "Minute", "Hour", "Day", "Week" oder "Month".
interval Gibt an, wie oft der Zeitplan ausgelöst wird. Der ganzzahlige Wert ist die Anzahl der Zeiteinheiten, die gewartet werden soll, bis der Zeitplan erneut ausgelöst wird.
start_time Die Startzeit für den Zeitplan. Das Zeichenfolgenformat des Werts ist YYYY-MM-DDThh:mm:ss. Wenn keine Startzeit angegeben ist, wird der erste Workload sofort ausgeführt, und zukünftige Workloads werden basierend auf dem Zeitplan ausgeführt. Wenn die Startzeit in der Vergangenheit liegt, wird die erste Workload zur nächsten berechneten Laufzeit ausgeführt.
time_zone Die Zeitzone für die Startzeit. Wenn keine Zeitzone angegeben ist, wird UTC verwendet.
hours Wenn frequency"Day" oder "Week" ist, können Sie eine ganze Zahl oder eine durch Kommas getrennte Liste mit ganzen Zahlen von 0 bis 23 als die Stunden des Tages angeben, zu denen die Pipeline ausgeführt werden soll. Es können nur time_of_day oder hours und minutes verwendet werden.
minutes Wenn frequency"Day" oder "Week" ist, können Sie eine ganze Zahl oder eine durch Kommas getrennte Liste mit ganzen Zahlen von 0 bis 59 als die Minuten der Stunde angeben, zu denen die Pipeline ausgeführt werden soll. Es können nur time_of_day oder hours und minutes verwendet werden.
time_of_day Wenn frequency"Day" oder "Week"ist, können Sie eine Uhrzeit angeben, zu der der Zeitplan ausgeführt werden soll. Das Zeichenfolgenformat des Werts ist hh:mm. Es können nur time_of_day oder hours und minutes verwendet werden.
week_days Wenn frequency"Week" ist, können Sie einen Tag oder eine durch Kommas getrennte Liste von Tagen angeben, an denen der Zeitplan ausgeführt werden soll. Gültige Werte sind "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" und "Sunday".

Das folgende Beispiel enthält die Definition für einen sich wiederholenden Zeitplan:

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: ~ 

Nächste Schritte

Erfahren Sie mehr zum Verwenden der CLI-Erweiterung für Azure Machine Learning.