Schemat YAML zadania potoku interfejsu wiersza polecenia (wersja 1)

DOTYCZY ROZSZERZENIA ML interfejsu wiersza polecenia platformy Azure w wersji 1

Uwaga

Składnia YAML szczegółowo w tym dokumencie jest oparta na schemacie JSON dla wersji 1 rozszerzenia interfejsu wiersza polecenia uczenia maszynowego. Ta składnia jest gwarantowana tylko do pracy z rozszerzeniem interfejsu wiersza polecenia uczenia maszynowego w wersji 1. Przejdź do wersji 2 (bieżąca wersja) dla składni interfejsu wiersza polecenia uczenia maszynowego w wersji 2.

Ważne

Niektóre polecenia interfejsu wiersza polecenia platformy Azure w tym artykule używają azure-cli-mlrozszerzenia , lub v1 dla usługi Azure Machine Edukacja. Obsługa rozszerzenia w wersji 1 zakończy się 30 września 2025 r. Będzie można zainstalować rozszerzenie v1 i używać go do tej daty.

Zalecamy przejście do mlrozszerzenia , lub w wersji 2 przed 30 września 2025 r. Aby uzyskać więcej informacji na temat rozszerzenia w wersji 2, zobacz Rozszerzenie interfejsu wiersza polecenia usługi Azure ML i zestaw Python SDK w wersji 2.

Zdefiniuj potoki uczenia maszynowego w języku YAML. W przypadku korzystania z rozszerzenia uczenia maszynowego dla interfejsu wiersza polecenia platformy Azure w wersji 1. wiele poleceń związanych z potokiem oczekuje pliku YAML definiującego potok.

Poniższa tabela zawiera listę elementów, które nie są obecnie obsługiwane podczas definiowania potoku w języku YAML do użycia z interfejsem wiersza polecenia w wersji 1:

Typ kroku Obsługiwane?
PythonScriptStep Tak
ParallelRunStep Tak
AdlaStep Tak
AzureBatchStep Tak
DatabricksStep Tak
DataTransferStep Tak
AutoMLStep Nie.
HyperDriveStep Nie.
ModuleStep Tak
MPIStep Nie.
Narzędzie do szacowaniaKrok Nie.

Definicja potoku

Definicja potoku używa następujących kluczy, które odpowiadają klasie Pipelines :

Klucz YAML opis
name Opis potoku.
parameters Parametry do potoku.
data_reference Definiuje, jak i gdzie dane powinny być udostępniane w przebiegu.
default_compute Domyślny docelowy obiekt obliczeniowy, w którym wszystkie kroki w przebiegu potoku.
steps Kroki używane w potoku.

Parametry

Sekcja parameters używa następujących kluczy, które odpowiadają klasie PipelineParameter :

Klucz YAML opis
type Typ wartości parametru. Prawidłowe typy to string, , floatint, boollub datapath.
default Wartość domyślna.

Każdy parametr ma nazwę. Na przykład poniższy fragment kodu YAML definiuje trzy parametry o nazwie NumIterationsParameter, DataPathParameteri 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

Opis danych

W data_references sekcji używane są następujące klucze, które odpowiadają funkcji DataReference:

Klucz YAML opis
datastore Magazyn danych do odwołania.
path_on_datastore Ścieżka względna w magazynie zapasowym dla odwołania do danych.

Każde odwołanie do danych znajduje się w kluczu. Na przykład poniższy fragment kodu YAML definiuje odwołanie do danych przechowywane w kluczu o nazwie 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"

Kroki

Kroki definiują środowisko obliczeniowe wraz z plikami, które mają być uruchamiane w środowisku. Aby zdefiniować typ kroku, użyj type klucza:

Typ kroku opis
AdlaStep Uruchamia skrypt U-SQL za pomocą usługi Azure Data Lake Analytics. Odpowiada klasie AdlaStep.
AzureBatchStep Uruchamia zadania przy użyciu usługi Azure Batch. Odpowiada klasie AzureBatchStep.
DatabricsStep Dodaje notes usługi Databricks, skrypt języka Python lub plik JAR. Odpowiada klasie DatabricksStep.
DataTransferStep Transferuje dane między opcjami magazynu. Odpowiada klasie DataTransferStep.
PythonScriptStep Uruchamia skrypt języka Python. Odpowiada klasie PythonScriptStep.
ParallelRunStep Uruchamia skrypt języka Python, aby przetwarzać duże ilości danych asynchronicznie i równolegle. Odpowiada klasie ParallelRunStep.

Krok ADLA

Klucz YAML opis
script_name Nazwa skryptu U-SQL (względem elementu source_directory).
compute Docelowy obiekt obliczeniowy usługi Azure Data Lake do użycia w tym kroku.
parameters Parametry potoku.
inputs Dane wejściowe to InputPortBinding, DataReference, PortDataReference, PipelineData, Dataset, DatasetDefinition lub PipelineDataset.
outputs Dane wyjściowe mogą mieć wartość PipelineData lub OutputPortBinding.
source_directory Katalog zawierający skrypt, zestawy itp.
priority Wartość priorytetu do użycia dla bieżącego zadania.
params Słownik par nazwa-wartość.
degree_of_parallelism Stopień równoległości do użycia w tym zadaniu.
runtime_version Wersja środowiska uruchomieniowego aparatu usługi Data Lake Analytics.
allow_reuse Określa, czy krok powinien ponownie używać poprzednich wyników po ponownym uruchomieniu z tymi samymi ustawieniami.

Poniższy przykład zawiera definicję kroku usługi 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

Krok usługi Azure Batch

Klucz YAML opis
compute Docelowy obiekt obliczeniowy usługi Azure Batch do użycia w tym kroku.
inputs Dane wejściowe to InputPortBinding, DataReference, PortDataReference, PipelineData, Dataset, DatasetDefinition lub PipelineDataset.
outputs Dane wyjściowe mogą mieć wartość PipelineData lub OutputPortBinding.
source_directory Katalog zawierający pliki binarne modułu, plik wykonywalny, zestawy itp.
executable Nazwa polecenia/pliku wykonywalnego, który zostanie uruchomiony w ramach tego zadania.
create_pool Flaga logiczna wskazująca, czy należy utworzyć pulę przed uruchomieniem zadania.
delete_batch_job_after_finish Flaga logiczna wskazująca, czy zadanie ma zostać usunięte z konta usługi Batch po zakończeniu.
delete_batch_pool_after_finish Flaga logiczna wskazująca, czy usunąć pulę po zakończeniu zadania.
is_positive_exit_code_failure Flaga logiczna wskazująca, czy zadanie zakończy się niepowodzeniem, jeśli zadanie zakończy się z kodem dodatnim.
vm_image_urn Jeśli create_pool parametr to True, a maszyna wirtualna używa polecenia VirtualMachineConfiguration.
pool_id Identyfikator puli, w której zostanie uruchomione zadanie.
allow_reuse Określa, czy krok powinien ponownie używać poprzednich wyników po ponownym uruchomieniu z tymi samymi ustawieniami.

Poniższy przykład zawiera definicję kroku usługi 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

Krok usługi Databricks

Klucz YAML opis
compute Docelowy obiekt obliczeniowy usługi Azure Databricks do użycia w tym kroku.
inputs Dane wejściowe to InputPortBinding, DataReference, PortDataReference, PipelineData, Dataset, DatasetDefinition lub PipelineDataset.
outputs Dane wyjściowe mogą mieć wartość PipelineData lub OutputPortBinding.
run_name Nazwa w usłudze Databricks dla tego przebiegu.
source_directory Katalog zawierający skrypt i inne pliki.
num_workers Statyczna liczba procesów roboczych dla klastra uruchamiania usługi Databricks.
runconfig Ścieżka do .runconfig pliku. Ten plik jest reprezentacją YAML klasy RunConfiguration . Aby uzyskać więcej informacji na temat struktury tego pliku, zobacz runconfigschema.json.
allow_reuse Określa, czy krok powinien ponownie używać poprzednich wyników po ponownym uruchomieniu z tymi samymi ustawieniami.

Poniższy przykład zawiera krok usługi 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

Krok transferu danych

Klucz YAML opis
compute Docelowy obiekt obliczeniowy usługi Azure Data Factory do użycia w tym kroku.
source_data_reference Połączenie wejściowe, które służy jako źródło operacji transferu danych. Obsługiwane wartości to InputPortBinding, DataReference, PortDataReference, PipelineData, DatasetDefinition lub PipelineDataset.
destination_data_reference Połączenie wejściowe, które służy jako miejsce docelowe operacji transferu danych. Obsługiwane wartości to PipelineData i OutputPortBinding.
allow_reuse Określa, czy krok powinien ponownie używać poprzednich wyników po ponownym uruchomieniu z tymi samymi ustawieniami.

Poniższy przykład zawiera krok transferu danych:

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

Krok skryptu języka Python

Klucz YAML opis
inputs Dane wejściowe to InputPortBinding, DataReference, PortDataReference, PipelineData, Dataset, DatasetDefinition lub PipelineDataset.
outputs Dane wyjściowe mogą mieć wartość PipelineData lub OutputPortBinding.
script_name Nazwa skryptu języka Python (względem source_directory).
source_directory Katalog zawierający skrypt, środowisko Conda itp.
runconfig Ścieżka do .runconfig pliku. Ten plik jest reprezentacją YAML klasy RunConfiguration . Aby uzyskać więcej informacji na temat struktury tego pliku, zobacz runconfig.json.
allow_reuse Określa, czy krok powinien ponownie używać poprzednich wyników po ponownym uruchomieniu z tymi samymi ustawieniami.

Poniższy przykład zawiera krok skryptu języka 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

Krok przebiegu równoległego

Klucz YAML opis
inputs Dane wejściowe mogą być zestawem danych, zestawem danychDefinition lub pipelineDataset.
outputs Dane wyjściowe mogą mieć wartość PipelineData lub OutputPortBinding.
script_name Nazwa skryptu języka Python (względem source_directory).
source_directory Katalog zawierający skrypt, środowisko Conda itp.
parallel_run_config Ścieżka do parallel_run_config.yml pliku. Ten plik jest reprezentacją YAML klasy ParallelRunConfig .
allow_reuse Określa, czy krok powinien ponownie używać poprzednich wyników po ponownym uruchomieniu z tymi samymi ustawieniami.

Poniższy przykład zawiera krok przebiegu równoległego:

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

Potok z wieloma krokami

Klucz YAML opis
steps Sekwencja co najmniej jednej definicji PipelineStep. Należy pamiętać, że destination klucze jednego kroku outputs stają się kluczami sourceinputs do następnego kroku.
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

Harmonogramy

Podczas definiowania harmonogramu potoku może on być wyzwalany przez magazyn danych lub cykliczny na podstawie interwału czasu. Poniżej przedstawiono klucze używane do definiowania harmonogramu:

Klucz YAML opis
description Opis harmonogramu.
recurrence Zawiera ustawienia cyklu, jeśli harmonogram jest cykliczny.
pipeline_parameters Wszystkie parametry wymagane przez potok.
wait_for_provisioning Czy poczekać na aprowizowanie harmonogramu do ukończenia.
wait_timeout Liczba sekund oczekiwania przed upływem limitu czasu.
datastore_name Magazyn danych do monitorowania zmodyfikowanych/dodanych obiektów blob.
polling_interval Jak długo, w minutach, między sondowaniem zmodyfikowanych/dodanych obiektów blob. Wartość domyślna: 5 minut. Obsługiwane tylko w przypadku harmonogramów magazynu danych.
data_path_parameter_name Nazwa parametru potoku ścieżki danych do ustawienia ze zmienioną ścieżką obiektu blob. Obsługiwane tylko w przypadku harmonogramów magazynu danych.
continue_on_step_failure Czy kontynuować wykonywanie innych kroków w przesłanym elemecie PipelineRun, jeśli krok zakończy się niepowodzeniem. Jeśli zostanie podana, zastąpi continue_on_step_failure ustawienie potoku.
path_on_datastore Opcjonalny. Ścieżka w magazynie danych do monitorowania zmodyfikowanych/dodanych obiektów blob. Ścieżka znajduje się w kontenerze magazynu danych, więc rzeczywista ścieżka monitorów harmonogramu to kontener/path_on_datastore. Jeśli tak nie jest, kontener magazynu danych jest monitorowany. Dodatki/modyfikacje wprowadzone w podfolderze obiektu path_on_datastore nie są monitorowane. Obsługiwane tylko w przypadku harmonogramów magazynu danych.

Poniższy przykład zawiera definicję harmonogramu wyzwalanego przez magazyn danych:

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" 

Podczas definiowania harmonogramu cyklicznego użyj następujących kluczy w obszarze recurrence:

Klucz YAML opis
frequency Jak często harmonogram jest powtarzany. Prawidłowe wartości to "Minute", , "Day""Hour", "Week"lub "Month".
interval Jak często harmonogram jest uruchamiany. Wartość całkowita to liczba jednostek czasu, które będą czekać, aż harmonogram zostanie ponownie wyzwolony.
start_time Godzina rozpoczęcia harmonogramu. Format ciągu wartości to YYYY-MM-DDThh:mm:ss. Jeśli nie zostanie podany czas rozpoczęcia, pierwsze obciążenie jest uruchamiane natychmiast, a przyszłe obciążenia są uruchamiane zgodnie z harmonogramem. Jeśli czas rozpoczęcia jest w przeszłości, pierwsze obciążenie jest uruchamiane w następnym obliczonym czasie wykonywania.
time_zone Strefa czasowa dla godziny rozpoczęcia. Jeśli strefa czasowa nie zostanie podana, używany jest czas UTC.
hours Jeśli frequency wartość to "Day" lub "Week", możesz określić co najmniej jedną liczbę całkowitą z zakresu od 0 do 23, oddzieloną przecinkami, jako godziny dnia, w których ma zostać uruchomiony potok. Można go używać tylko time_of_day lub hours i minutes .
minutes Jeśli frequency wartość to "Day" lub "Week", możesz określić jedną lub więcej liczb całkowitych z zakresu od 0 do 59, rozdzielonych przecinkami, jako minuty godziny, kiedy potok powinien zostać uruchomiony. Można go używać tylko time_of_day lub hours i minutes .
time_of_day Jeśli frequency wartość to "Day" lub "Week", możesz określić godzinę dnia dla harmonogramu do uruchomienia. Format ciągu wartości to hh:mm. Można go używać tylko time_of_day lub hours i minutes .
week_days Jeśli frequency ma wartość "Week", możesz określić co najmniej jedną liczbę dni rozdzielonych przecinkami, kiedy harmonogram powinien zostać uruchomiony. Prawidłowe wartości to "Monday", , "Tuesday", "Thursday""Wednesday""Friday", , "Saturday", i "Sunday".

Poniższy przykład zawiera definicję harmonogramu cyklicznego:

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

Następne kroki

Dowiedz się, jak używać rozszerzenia interfejsu wiersza polecenia dla usługi Azure Machine Edukacja.