Схема YAML для задания конвейера CLI (версия 1)
ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения 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 см. в разделе Машинное обучение Azure расширение CLI и пакет 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.