Esquema de YAML do trabalho de pipeline da CLI (v1)

APLICA-SE A: Extensão ML da CLI do Azure v1

Observação

A sintaxe YAML detalhada neste documento baseia-se no esquema JSON na versão v1 da extensão da CLI de ML. Essa sintaxe tem apenas a garantia de funcionar com a extensão v1 da CLI de ML. Alterne para a v2 (versão atual) para a sintaxe da CLI de ML v2.

Importante

Alguns comandos da CLI do Azure neste artigo usam a extensão azure-cli-ml ou v1 do Azure Machine Learning. O suporte à extensão v1 terminará em 30 de setembro de 2025. Você poderá instalar e usar a extensão v1 até essa data.

Recomendamos que você faça a transição para a extensão ml ou v2, antes de 30 de setembro de 2025. Para obter mais informações sobre a extensão v2, confira Extensão da CLI do Azure ML e SDK do Python v2.

Defina pipelines de machine learning no YAML. Ao se usar a extensão de aprendizado de máquina para a CLI do Azure v1., muitos dos comandos relacionados ao pipeline esperam um arquivo YAML que define o pipeline.

A tabela a seguir lista o que tem e o que não tem suporte atualmente ao definir um pipeline no YAML para uso com a CLI v1:

Tipo de etapa Compatível?
PythonScriptStep Sim
ParallelRunStep Sim
AdlaStep Sim
AzureBatchStep Sim
DatabricksStep Yes
DataTransferStep Sim
AutoMLStep Não
HyperDriveStep Não
ModuleStep Yes
MPIStep Não
EstimatorStep Não

Definição de pipeline

Uma definição de pipeline usa as seguintes chaves, que correspondem à classe Pipelines:

Chave YAML Descrição
name A descrição do pipeline.
parameters Parâmetro(s) para o pipeline.
data_reference Define como e onde os dados devem ser disponibilizados em uma execução.
default_compute Destino de computação padrão onde são executadas todas as etapas no pipeline.
steps As etapas usadas no pipeline.

Parâmetros

A seção parameters usa as seguintes chaves, que correspondem à classe PipelineParameter:

Chave YAML Descrição
type O tipo de valor do parâmetro. Os tipos válidos são string, int, float, bool, ou datapath.
default O valor padrão.

Cada parâmetro é nomeado. Por exemplo, o trecho de código YAML a seguir define três parâmetros chamados NumIterationsParameter, DataPathParameter e 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

Referência de dados

A seção data_references usa as seguintes chaves, que correspondem à DataReference:

Chave YAML Descrição
datastore O armazenamento de dados para referenciar.
path_on_datastore O caminho relativo no armazenamento de suporte para referência de dados.

Cada referência de dados está contida em uma chave. Por exemplo, o snippet YAML a seguir define uma referência de dados armazenada na chave chamada 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"

Etapas

As etapas definem um ambiente computacional, juntamente com os arquivos a serem executados no ambiente. Para definir o tipo de uma etapa, use a chave type:

Tipo de etapa Descrição
AdlaStep Executa um script U-SQL com Azure Data Lake Analytics. Corresponde à classe AdlaStep.
AzureBatchStep Executa trabalhos usando o Lote do Azure. Corresponde à classe AzureBatchStep.
DatabricsStep Adiciona um bloco de anotações do Databricks, um script do Python ou um JAR. Corresponde à classe DatabricksStep.
DataTransferStep Transfere dados entre as opções de armazenamento. Corresponde à classe DataTransferStep.
PythonScriptStep Executa um script do Python. Corresponde à classe PythonScriptStep.
ParallelRunStep Executa um script do Python para processar grandes quantidades de dados de forma assíncrona e em paralelo. Corresponde à classe ParallelRunStep.

Etapa ADLA

Chave YAML Descrição
script_name O nome do script U-SQL (relativo ao source_directory).
compute O destino de computação Azure Data Lake a ser usado para esta etapa.
parameters Parâmetros para o pipeline.
inputs As entradas podem ser InputPortBinding, DataReference, PortDataReference, PipelineData, DataSet, DatasetDefinitionou PipelineDataset.
outputs As saídas podem ser PipelineData ou OutputPortBinding.
source_directory Diretório que contém o script, os assemblies, etc.
priority O valor da prioridade a ser usado para o trabalho atual.
params Dicionário de pares nome-valor.
degree_of_parallelism O grau de paralelismo a ser usado para este trabalho.
runtime_version A versão de tempo de execução do mecanismo de Data Lake Analytics.
allow_reuse Determina se a etapa deve reutilizar os resultados anteriores quando for executada novamente com as mesmas configurações.

O exemplo a seguir contém uma definição de etapa 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

Etapa do Lote do Azure

Chave YAML Descrição
compute O destino de computação do Lote do Azure a ser usado para esta etapa.
inputs As entradas podem ser InputPortBinding, DataReference, PortDataReference, PipelineData, DataSet, DatasetDefinitionou PipelineDataset.
outputs As saídas podem ser PipelineData ou OutputPortBinding.
source_directory Diretório que contém os binários de módulo, executáveis, assemblies, etc.
executable Nome do comando/executável que será executado como parte desse trabalho.
create_pool Sinalizador booliano para indicar se o pool deve ser criado antes da execução do trabalho.
delete_batch_job_after_finish Sinalizador booliano para indicar se o trabalho da conta do Lote deve ser excluído após ser concluído.
delete_batch_pool_after_finish Sinalizador booliano para indicar se o pool deve ser excluído após a conclusão do trabalho.
is_positive_exit_code_failure Sinalizador booliano para indicar se o trabalho falhará se a tarefa for encerrada com um código positivo.
vm_image_urn Se create_pool é True e a VM usa VirtualMachineConfiguration.
pool_id A ID do pool em que o trabalho será executado.
allow_reuse Determina se a etapa deve reutilizar os resultados anteriores quando for executada novamente com as mesmas configurações.

O exemplo a seguir contém uma definição de etapa do Lote do Azure:

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

Etapa do Databricks

Chave YAML Descrição
compute O destino de computação Azure Databricks a ser usado para esta etapa.
inputs As entradas podem ser InputPortBinding, DataReference, PortDataReference, PipelineData, DataSet, DatasetDefinitionou PipelineDataset.
outputs As saídas podem ser PipelineData ou OutputPortBinding.
run_name O nome no Databricks para esta execução.
source_directory Diretório que contém o script e outros arquivos.
num_workers O número estático de trabalhadores para o Databricks executar o cluster.
runconfig O caminho para um arquivo .runconfig. Esse arquivo é uma representação YAML da classe RunConfiguration. Para obter mais informações sobre a estrutura desse arquivo, consulte o runconfigschema.json.
allow_reuse Determina se a etapa deve reutilizar os resultados anteriores quando for executada novamente com as mesmas configurações.

O exemplo a seguir contém uma etapa do 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

Etapade transferência de dados

Chave YAML Descrição
compute O destino de computação Azure Data Factory a ser usado para esta etapa.
source_data_reference Conexão de entrada que serve como a fonte de operações de transferência de dados. Os valores com suporte são InputPortBinding, DataReference, PortDataReference, PipelineData, DataSet, DatasetDefinitionou PipelineDataset.
destination_data_reference Conexão de entrada que serve como o destino das operações de transferência de dados. Os valores com suporte são PipelineData e OutputPortBinding.
allow_reuse Determina se a etapa deve reutilizar os resultados anteriores quando for executada novamente com as mesmas configurações.

O exemplo a seguir contém uma etapa de transferência de dados:

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

Etapa de script do Python

Chave YAML Descrição
inputs As entradas podem ser InputPortBinding, DataReference, PortDataReference, PipelineData, DataSet, DatasetDefinitionou PipelineDataset.
outputs As saídas podem ser PipelineData ou OutputPortBinding.
script_name O nome do script do Python (relativo a source_directory).
source_directory Diretório que contém o script, o ambiente Conda, etc.
runconfig O caminho para um arquivo .runconfig. Esse arquivo é uma representação YAML da classe RunConfiguration. Para obter mais informações sobre a estrutura desse arquivo, consulte o runconfigschema.json.
allow_reuse Determina se a etapa deve reutilizar os resultados anteriores quando for executada novamente com as mesmas configurações.

O exemplo a seguir contém uma etapa de script do 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

Etapa de execução paralela

Chave YAML Descrição
inputs As entradas podem ser DataSet, DatasetDefinitionou PipelineDataset.
outputs As saídas podem ser PipelineData ou OutputPortBinding.
script_name O nome do script do Python (relativo a source_directory).
source_directory Diretório que contém o script, o ambiente Conda, etc.
parallel_run_config O caminho para um arquivo parallel_run_config.yml. Esse arquivo é uma representação YAML da classe ParallelRunConfig.
allow_reuse Determina se a etapa deve reutilizar os resultados anteriores quando for executada novamente com as mesmas configurações.

O exemplo a seguir contém uma etapa de execução Paralela:

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 com várias etapas

Chave YAML Descrição
steps Sequência de uma ou mais definições de PipelineStep. Observe que as chaves destination de uma etapa de outputs se tornam as chaves source para o inputs da próxima etapa.
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

Agendas

Ao definir o agendamento de um pipeline, ele pode ser disparado por armazenamento de dados ou ser recorrente com base em um intervalo de tempo. A seguir estão as chaves usadas para definir uma agenda:

Chave YAML Descrição
description Uma descrição da agenda.
recurrence Contém configurações de recorrência, se a agenda for recorrente.
pipeline_parameters Quaisquer parâmetros obrigatórios pelo pipeline.
wait_for_provisioning Se deve aguardar a conclusão do provisionamento da agenda.
wait_timeout O número de segundos a aguardar antes de esgotar o tempo limite.
datastore_name O armazenamento de dados a ser monitorado para blobs modificados/adicionados.
polling_interval Por quanto tempo, em minutos, entre a sondagem para blobs modificados/adicionados. Valor padrão: 5 minutos. Com suporte apenas para agendas de armazenamento de dados.
data_path_parameter_name O nome do parâmetro de pipeline de caminho de dados a ser definido com o caminho de blob alterado. Com suporte apenas para agendas de armazenamento de dados.
continue_on_step_failure Se deseja continuar a execução de outras etapas no PipelineRun enviado se uma etapa falhar. Se fornecido, substituirá a configuração do pipeline continue_on_step_failure.
path_on_datastore Opcional. O caminho no armazenamento de dados a ser monitorado para blobs modificados/adicionados. O caminho está sob o contêiner para o armazenamento de dados, portanto, o caminho real que o agendamento monitora é contêiner/path_on_datastore. Se nenhum, será monitorado o contêiner do armazenamento de dados. Adições/modificações feitas em uma subpasta do path_on_datastore não são monitoradas. Com suporte apenas para agendas de armazenamento de dados.

O exemplo a seguir contém a definição de uma agenda disparada por armazenamento de dados:

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" 

Ao definir um agendamento recorrente, use as seguintes chaves em recurrence :

Chave YAML Descrição
frequency Com que frequência a agenda se repete. Os valores válidos são "Minute", "Hour", "Day", "Week", ou "Month".
interval Com que frequência a agenda é disparada. O valor inteiro é o número de unidades de tempo a aguardar até que a agenda seja disparada novamente.
start_time A hora de início da agenda. O formato da cadeia de caracteres do valor é YYYY-MM-DDThh:mm:ss. Se nenhuma hora de início for fornecida, a primeira carga de trabalho será executada instantaneamente e as cargas de trabalho futuras serão executadas com base na agenda. Se a hora de início estiver no passado, a primeira carga de trabalho será executada no próximo tempo de execução calculado.
time_zone Fuso horário para a hora de início. Se nenhum fuso horário for fornecido, será usado o UTC.
hours Se frequency for "Day" ou "Week", você pode especificar um ou mais números inteiros, de 0 a 23, separados por vírgulas, como as horas do dia em que o pipeline deve ser executado. Somente time_of_day ou hours e minutes podem ser usados.
minutes Se frequency for "Day" ou "Week", você pode especificar um ou mais números inteiros, de 0 a 59, separados por vírgulas, como as os minutos da hora em que o pipeline deve ser executado. Somente time_of_day ou hours e minutes podem ser usados.
time_of_day Se frequency for "Day" ou "Week", você pode especificar uma hora do dia para a execução da agenda. O formato da cadeia de caracteres do valor é hh:mm. Somente time_of_day ou hours e minutes podem ser usados.
week_days Se frequency for "Week", você poderá especificar um ou mais dias, separados por vírgulas, em que a agenda deve ser executada. Os valores válidos são "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" e "Sunday".

O exemplo a seguir contém a definição de um agendamento recorrente:

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

Próximas etapas

Saiba como usar a extensão CLI do Azure Machine Learning.