Поделиться через


Схема YAML для задания конвейера CLI (версия 1)

ОБЛАСТЬ ПРИМЕНЕНИЯ: Расширение ML для Azure CLI версии 1

Примечание.

Синтаксис YAML, описанный в этом документе, основан на схеме JSON для версии 1 расширения ML CLI. Этот синтаксис гарантированно работает только с версией 1 расширения ML CLI. Чтобы использовать синтаксис для ML CLI версии 2, перейдите на версию 2 (текущую).

Внимание

Для использования некоторых команд Azure CLI, приведенных в этой статье, используйте расширение azure-cli-ml (версия 1) для Машинного обучения Azure. Поддержка расширения версии 1 будет прекращена 30 сентября 2025 г. Вы можете установить и использовать расширение версии 1 до этой даты.

Рекомендуется перейти на расширение ml (версия 2) до 30 сентября 2025 г. Дополнительные сведения о расширении версии 2 см. на странице расширения CLI для Azure ML и пакета SDK для Python версии 2.

Определите конвейеры машинного обучения в YAML. При использовании расширения машинного обучения для Azure CLI версии 1 многие команды, связанные с конвейером, предполагают наличие файла YAML, определяющего конвейер.

В следующей таблице перечислены поддерживаемые и неподдерживаемые шаги при определении конвейера в YAML, которые используются с CLI версии 1.

Тип шага Поддерживается?
PythonScriptStep Да
ParallelRunStep Да
AdlaStep Да
AzureBatchStep Да
DatabricksStep Да
DataTransferStep Да
AutoMLStep No
HyperDriveStep No
ModuleStep Да
MPIStep No
EstimatorStep No

Определение конвейера

В определении конвейера используются следующие ключи, которые соответствуют классу Pipelines.

Ключ YAML Description
name Описание конвейера.
parameters Параметры для конвейера.
data_reference Определяет, как и где следует предоставлять доступ к данным при прогоне.
default_compute Целевой объект вычислений по умолчанию, в котором выполняются все шаги конвейера.
steps Шаги, используемые в конвейере.

Параметры

В разделе parameters используются следующие ключи, которые соответствуют классу PipelineParameter.

Ключ YAML Description
type Тип значения параметра. Допустимые типы: string, int, float, bool или datapath.
default Значение по умолчанию.

Каждый параметр имеет имя. Например, следующий фрагмент YAML определяет три параметра с именами NumIterationsParameter, DataPathParameter и 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

Описание данных

В разделе data_references используются следующие ключи, которые соответствуют классу DataReference:

Ключ YAML Description
datastore Хранилище данных, на которое будет дана ссылка.
path_on_datastore Относительный путь в резервном хранилище для ссылки на данные.

Каждая ссылка на данные содержится в ключе. Например, следующий фрагмент 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:

Тип шага Description
AdlaStep Выполняет скрипт U-SQL с Azure Data Lake Analytics. Соответствует классу AdlaStep.
AzureBatchStep Запускает задания с помощью пакетной службы Azure. Соответствует классу AzureBatchStep.
DatabricsStep Добавляет записную книжку Databricks, скрипт Python или JAR-файл. Соответствует классу DatabricksStep.
DataTransferStep Передает данные между вариантами хранения. Соответствует классу DataTransferStep.
PythonScriptStep Запускает скрипт Python. Соответствует классу PythonScriptStep.
ParallelRunStep Запускает скрипт Python для асинхронной и параллельной обработки больших объемов данных. Соответствует классу ParallelRunStep.

Шаг ADLA

Ключ YAML Description
script_name Имя скрипта U-SQL (относительно source_directory).
compute Целевой объект вычислений Azure Data Lake, используемый для этого шага.
parameters Параметры для конвейера.
inputs Входными данными могут быть InputPortBinding, DataReference, PortDataReference, PipelineData, Dataset, DatasetDefinition или PipelineDataset.
outputs Выходными данными могут быть PipelineData или OutputPortBinding.
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

Ключ YAML Description
compute Целевой объект вычислений Azure Batch, используемый для этого шага.
inputs Входными данными могут быть InputPortBinding, DataReference, PortDataReference, PipelineData, Dataset, DatasetDefinition или PipelineDataset.
outputs Выходными данными могут быть PipelineData или OutputPortBinding.
source_directory Каталог, содержащий двоичные файлы модуля, исполняемый файл, сборки и т. д.
executable Имя команды или исполняемого файла, которые будут запускаться в рамках этого задания.
create_pool Логический флаг, указывающий, следует ли создать пул перед выполнением задания.
delete_batch_job_after_finish Логический флаг, указывающий, следует ли удалить задание из учетной записи пакетной службы после его завершения.
delete_batch_pool_after_finish Логический флаг, указывающий, следует ли удалить пул после завершения задания.
is_positive_exit_code_failure Логический флаг, указывающий, завершается ли задание ошибкой, если задача завершается с положительным кодом.
vm_image_urn Если create_pool имеет значение True, и виртуальная машина использует VirtualMachineConfiguration.
pool_id Идентификатор пула, в котором будет выполняться задание.
allow_reuse Указывает, должен ли шаг повторно использовать предыдущие результаты при повторном запуске с теми же параметрами.

Следующий пример содержит определение шага пакетной службы 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

Шаг Databricks

Ключ YAML Description
compute Целевой объект вычислений Azure Databricks, используемый для этого шага.
inputs Входными данными могут быть InputPortBinding, DataReference, PortDataReference, PipelineData, Dataset, DatasetDefinition или PipelineDataset.
outputs Выходными данными могут быть PipelineData или OutputPortBinding.
run_name Имя в Databricks для этого запуска.
source_directory Каталог, содержащий скрипт и другие файлы.
num_workers Статическое число рабочих ролей для кластера, работающего на Databricks.
runconfig Путь к файлу .runconfig. Этот файл является YAML-представлением класса RunConfiguration. Дополнительные сведения о структуре этого файла см. в файле 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 Description
compute Целевой объект вычислений Azure Data Factory, используемый для этого шага.
source_data_reference Входное соединение, служащее источником операций по передаче данных. Поддерживаемые значения: InputPortBinding, DataReference, PortDataReference, PipelineData, Dataset, DatasetDefinition или PipelineDataset.
destination_data_reference Входное соединение, служащее местом назначения операций по переносу данных. Поддерживаемые значения: PipelineData и OutputPortBinding.
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 Description
inputs Входными данными могут быть InputPortBinding, DataReference, PortDataReference, PipelineData, Dataset, DatasetDefinition или PipelineDataset.
outputs Выходными данными могут быть PipelineData или OutputPortBinding.
script_name Имя скрипта Python (относительно source_directory).
source_directory Каталог, содержащий скрипт, среду Conda и т. д.
runconfig Путь к файлу .runconfig. Этот файл является YAML-представлением класса RunConfiguration. Дополнительные сведения о структуре этого файла см. в файле 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 Description
inputs Входными данными могут быть Dataset, DatasetDefinition или PipelineDataset.
outputs Выходными данными могут быть PipelineData или OutputPortBinding.
script_name Имя скрипта Python (относительно source_directory).
source_directory Каталог, содержащий скрипт, среду Conda и т. д.
parallel_run_config Путь к файлу parallel_run_config.yml. Этот файл является YAML-представлением класса ParallelRunConfig.
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 Description
steps Последовательность из одного или нескольких определений PipelineStep. Обратите внимание, что ключи destination для outputs одного шага становятся ключами source для inputs следующего шага.
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
description Описание расписания.
recurrence Содержит параметры повторения, если расписание повторяется.
pipeline_parameters Все параметры, необходимые для конвейера.
wait_for_provisioning Следует ли ожидать завершения подготовки расписания.
wait_timeout Количество секунд перед истечением времени ожидания.
datastore_name Хранилище данных для отслеживания измененных или добавленных больших двоичных объектов.
polling_interval Время в минутах между опросами измененных или добавленных больших двоичных объектов. Значение по умолчанию — 5 минут. Поддерживается только для расписаний хранилища данных.
data_path_parameter_name Имя параметра конвейера пути к данным для задания, которому необходимо присвоить измененный путь к большому двоичному объекту. Поддерживается только для расписаний хранилища данных.
continue_on_step_failure Следует ли продолжать выполнение других шагов в отправленном PipelineRun, если шаг завершается ошибкой. Если параметр указан, он переопределит параметр continue_on_step_failure конвейера.
path_on_datastore Необязательно. Путь в хранилище данных для отслеживания измененных или добавленных больших двоичных объектов. Путь указан под контейнером для хранилища данных, поэтому фактический путь, за которым следит расписание, выглядит как 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 Description
frequency Частота повторения расписания. Допустимые значения: "Minute", "Hour", "Day", "Week" или "Month".
interval Частота срабатывания расписания. Целочисленное значение — это количество единиц времени, которое нужно ожидать до повторного запуска расписания.
start_time Время запуска расписания. Строковый Формат значения — YYYY-MM-DDThh:mm:ss. Если время запуска не указано, первая рабочая нагрузка выполняется мгновенно, а будущие рабочие нагрузки выполняются на основе расписания. Если время запуска находится в прошлом, то первая рабочая нагрузка будет выполняться при следующем расчетном времени выполнения.
time_zone Часовой пояс для времени запуска. Если часовой пояс не указан, используется UTC.
hours Если для параметра frequency задать значение "Day" или "Week", то можно указать одно или несколько целых чисел от 0 до 23, разделенных запятыми. В эти часы будет запускаться конвейер. Можно использовать только time_of_day или hours и minutes.
minutes Если для параметра frequency задать значение "Day" или "Week", то можно указать одно или несколько целых чисел от 0 до 59, разделенных запятыми. В эти минуты часа будет запускаться конвейер. Можно использовать только time_of_day или hours и minutes.
time_of_day Если frequency имеет значение "Day" или "Week", можно указать время суток для запуска расписания. Строковый Формат значения — hh:mm. Можно использовать только time_of_day или hours и minutes.
week_days Если frequency имеет значение "Week", можно указать один или несколько дней, разделенных запятыми, в которые будет запускаться расписание. Допустимые значения: "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: ~ 

Следующие шаги

Прочтите статью Использование расширения CLI для машинного обучения Azure.