Схема параллельного задания YAML (CLI версии 2)
ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 2 (текущее)
Внимание
Параллельное задание можно использовать только как один шаг внутри задания конвейера Машинное обучение Azure. Таким образом, в настоящее время не существует исходной схемы JSON для параллельного задания. В этом документе перечислены допустимые ключи и их значения при создании параллельного задания в конвейере.
Примечание.
Синтаксис YAML, описанный в этом документе, основан на схеме JSON для последней версии расширения ML CLI (версия 2). Этот синтаксис гарантированно работает только с последней версией расширения ML CLI (версия 2). Схемы для старых версий расширений можно найти по адресу https://azuremlschemasprod.azureedge.net/.
Синтаксис YAML
Ключ | Тип | Описание | Допустимые значения | Default value |
---|---|---|---|---|
type |
const | Обязательный. Тип задания. | parallel |
|
inputs |
объект | Словарь входных данных для параллельного задания. Ключ — это имя входных данных в контексте задания, а значение — это входное значение. На входные данные можно ссылаться в program_arguments с помощью выражения ${{ inputs.<input_name> }} . На входные данные параллельных заданий можно ссылаться с помощью входных данных конвейера ${{ parent.inputs.<input_name> }} с помощью выражения. Сведения о привязке входных данных параллельного шага к входным данным конвейера см . в синтаксисе выражения для привязки входных и выходных данных между шагами в задании конвейера. |
||
inputs.<input_name> |
число, целое число, логическое значение, строка или объект | Одно из литеральных значений (с типом Number, Integer, Boolean или String) или объект, содержащий спецификацию входных данных для задания. | ||
outputs |
объект | Словарь выходных конфигураций параллельного задания. Ключ — это имя выходных данных в контексте задания, а значение — выходная конфигурация. Выходные данные параллельных заданий можно ссылаться на выходные данные конвейера с помощью ${{ parents.outputs.<output_name> }} выражения. Сведения о привязке выходных данных параллельного шага к выходным данным конвейера см . в синтаксисе выражения для ввода и вывода привязки между шагами в задании конвейера. |
||
outputs.<output_name> |
объект | Вы можете оставить объект пустым, в этом случае выходные данные по умолчанию будут иметь типuri_folder , и Машинное обучение Azure система создаст расположение выходных данных для выходных данных на основе следующего шаблонного пути: {settings.datastore}/azureml/{job-name}/{output-name}/ Файлы будут сохраняться в выходной каталог, подключенный с правами на чтение и запись. Если вы хотите указать другой режим вывода данных, укажите объект со спецификацией выходных данных для задания. |
||
compute |
строка | Имя целевого объекта вычислений для выполнения задания. Это значение может быть ссылкой на существующие вычислительные ресурсы в рабочей области (с помощью синтаксиса azureml:<compute_name> ) или local назначить локальное выполнение. При использовании параллельного задания в конвейере этот параметр можно оставить пустым, в этом случае вычисление будет автоматически выбрано конвейером default_compute . |
local |
|
task |
объект | Обязательный. Шаблон для определения распределенных задач для параллельного задания. См. Атрибуты ключа task . |
||
input_data |
объект | Обязательный. Определите, какие входные данные будут разделены на мини-пакеты для выполнения параллельного задания. Применимо только для ссылки на одно из параллельных заданий inputs с помощью ${{ inputs.<input_name> }} выражения |
||
mini_batch_size |
строка | Определите размер каждого мини-пакета для разделения входных данных. Если input_data является папкой или набором файлов, это число определяет количество файлов для каждого мини-пакета. Например, 10, 100. Если input_data является табличными данными из mltable , это число определяет прокси-размер физического размера для каждого мини-пакета. Например, 100 кб, 100 МБ. |
1 | |
partition_keys |
список | Ключи, используемые для секционирования набора данных на мини-пакеты. Если этот параметр указан, данные с одним и тем же ключом будут секционированы в один мини-пакет. Если оба partition_keys и mini_batch_size задано, ключи секции вступают в силу. |
||
mini_batch_error_threshold |
integer | Определите количество неудачных мини-пакетов, которые можно игнорировать в этом параллельном задании. Если число неудачных мини-пакетов выше этого порогового значения, параллельное задание будет отмечено как неудачное. Мини-пакет помечается как неудачный, если: — количество возвращаемых данных из run() меньше числа входных данных мини-пакетной службы. — перехват исключений в пользовательском коде run(). "-1" — это номер по умолчанию, то есть игнорировать все сбои мини-пакета во время параллельного задания. |
[-1, int.max] | -1 |
logging_level |
строка | Определите, какой уровень журналов будет дампаться в файлы журналов пользователей. | СВЕДЕНИЯ, ПРЕДУПРЕЖДЕНИЕ, ОТЛАДКА | INFO |
resources.instance_count |
integer | Число узлов, используемых для задания. | 1 | |
max_concurrency_per_instance |
integer | Определите количество процессов на каждом узле вычислений. Для вычислений GPU значение по умолчанию равно 1. Для вычислений ЦП значение по умолчанию — это число ядер. |
||
retry_settings.max_retries |
integer | Определите количество повторных попыток при сбое мини-пакета или истечении времени ожидания. Если все повторные попытки завершаются сбоем, мини-пакет будет помечен как неучисленный вычислением mini_batch_error_threshold . |
2 | |
retry_settings.timeout |
integer | Определите время ожидания в секундах для выполнения пользовательской функции run(). Если время выполнения превышает это пороговое значение, мини-пакет будет прерван и помечен как сбой мини-пакет для активации повторных попыток. | (0, 259200] | 60 |
environment_variables |
объект | Словарь пар "ключ — значение" переменной среды, устанавливаемых для процесса, в котором выполняется команда. |
Атрибуты ключа task
Ключ | Тип | Описание | Допустимые значения | Default value |
---|---|---|---|---|
type |
const | Обязательный. Тип задачи. Применимо только к run_function настоящему моменту.В run_function режиме необходимо предоставить code и entry_script program_arguments определить скрипт Python с исполняемыми функциями и аргументами. Примечание. Параллельное задание поддерживает скрипт Python только в этом режиме. |
run_function | run_function |
code |
строка | Локальный путь к каталогу исходного кода, который будет отправлен и использован для задания. | ||
entry_script |
строка | Файл Python, содержащий реализацию предварительно определенных параллельных функций. Дополнительные сведения см. в статье "Подготовка скрипта записи к параллельному заданию". | ||
environment |
Строка или объект | Требуется среда, используемая для выполнения задачи. Это значение может быть ссылкой на существующую версию среды в рабочей области или встроенную спецификацию среды. Чтобы ссылаться на существующую среду, используйте azureml:<environment_name>:<environment_version> синтаксис или azureml:<environment_name>@latest (чтобы ссылаться на последнюю версию среды). Чтобы определить встроенную среду, следуйте схеме среды. name Исключите свойства и version свойства, так как они не поддерживаются для встроенных сред. |
||
program_arguments |
строка | Аргументы, передаваемые в скрипт записи. Может содержать "--<arg_name> ${{входные данные.<>intput_name}" — ссылка на входные или выходные данные. Параллельное задание предоставляет список предопределенных аргументов для задания конфигурации параллельного выполнения. Дополнительные сведения см . в предопределенных аргументах для параллельного задания. |
||
append_row_to |
строка | Агрегирование всех возвращается из каждого запуска мини-пакета и выводит его в этот файл. Может ссылаться на один из выходных данных параллельного задания с помощью выражения ${{выходных данных.<>output_name}} |
Входные данные задания
Ключ | Тип | Описание | Допустимые значения | Default value |
---|---|---|---|---|
type |
строка | Тип входных данных для задания. Укажите mltable входные данные, указывающие на расположение, в котором есть mltable метафайл или uri_folder входные данные, указывающие на источник папки. |
mltable , uri_folder |
uri_folder |
path |
строка | Путь к данным, которые используются в качестве входных данных. Значение можно указать несколькими способами: – локальный путь к файлу или папке источника данных, например path: ./iris.csv . Эта данные будут отправлены во время отправки задания. — универсальный код ресурса (URI) для облачного пути к файлу или папке, которые нужно использовать в качестве входных данных. Поддерживаются следующие типы URI: azureml , https , wasbs , abfss , adl . Дополнительные сведения см. в разделе "Основной azureml:// синтаксис yaml" о том, как использовать формат URI. — Существующий зарегистрированный Машинное обучение Azure ресурс данных, используемый в качестве входных данных. Чтобы указать ссылку на зарегистрированный ресурс данных, используйте синтаксис azureml:<data_name>:<data_version> или azureml:<data_name>@latest (это ссылка на последнюю версию ресурса данных), например path: azureml:cifar10-data:1 или path: azureml:cifar10-data@latest . |
||
mode |
строка | Режим доставки данных в целевой объект вычислений. Для подключения с доступом только для чтения ( ro_mount ) данные будут использоваться в качестве пути подключения. Папка будет подключена как папка, а файл будет подключен как файл. Машинное обучение Azure будет разрешать входные данные в путь подключения. При использовании режима download данные будут скачаны в целевой объект вычислений. Машинное обучение Azure будет разрешать входные данные в скачанный путь. Если вам нужен только URL-адрес места хранения артефактов данных, и вы не намерены подключать или скачивать сами данные, можно использовать режим direct . Он передает URL-адрес расположения хранилища в качестве входных данных задания. В этом случае вам придется самостоятельно обрабатывать учетные данные для доступа к хранилищу. |
ro_mount , , download direct |
ro_mount |
Выходные данные задания
Ключ | Тип | Описание | Допустимые значения | Default value |
---|---|---|---|---|
type |
строка | Тип выходных данных для задания. По умолчанию используется тип uri_folder , то есть выходные данные сопоставляются с некоторой папкой. |
uri_folder |
uri_folder |
mode |
строка | Режим доставки выходных файлов в целевое хранилище. Для режима подключения с доступом для чтения и записи (rw_mount ) выходным каталогом будет подключенный каталог. В режиме upload все записанные файлы будут отправлены после завершения задания. |
rw_mount , upload |
rw_mount |
Предопределенные аргументы для параллельного задания
Ключ. | Description | Допустимые значения | Default value |
---|---|---|---|
--error_threshold |
Пороговое значение неудачных элементов. Сбой элементов учитывается по числу входных данных и возвращается из каждого мини-пакета. Если сумма неудачных элементов выше этого порогового значения, параллельное задание будет отмечено как неудачное. Примечание. Значение "-1" — это число по умолчанию, которое означает игнорировать все сбои во время параллельного задания. |
[-1, int.max] | -1 |
--allowed_failed_percent |
Аналогично, mini_batch_error_threshold но использует процент неудачных мини-пакетов вместо количества. |
[0, 100] | 100 |
--task_overhead_timeout |
Время ожидания в секунду для инициализации каждого мини-пакета. Например, загрузите мини-пакетные данные и передайте его в функцию run(). | (0, 259200] | 30 |
--progress_update_timeout |
Время ожидания в секунду для мониторинга хода выполнения мини-пакета. Если обновления хода выполнения не будут получаться в течение этого параметра времени ожидания, параллельное задание будет отмечено как неудачное. | (0, 259200] | Динамически вычисляется другими параметрами. |
--first_task_creation_timeout |
Время ожидания в секунду для мониторинга времени начала выполнения первого мини-пакета. | (0, 259200] | 600 |
--copy_logs_to_parent |
Логический параметр, чтобы скопировать ход выполнения задания, обзор и журналы в родительское задание конвейера. | True, False | False |
--metrics_name_prefix |
Укажите настраиваемый префикс метрик в этом параллельном задании. | ||
--push_metrics_to_parent |
Логический параметр для отправки метрик в родительское задание конвейера. | True, False | False |
--resource_monitor_interval |
Интервал времени в секундах для дампа ресурсов узла (например, ЦП, памяти) в папку журнала в пути logs/sys/perf. Примечание. Журналы ресурсов частого дампа немного замедляют скорость выполнения мини-пакета. Задайте для этого значения значение "0", чтобы остановить использование ресурсов дампа. |
[0, int.max] | 600 |
Замечания
Команды az ml job
можно использовать для управления заданиями Машинное обучение Azure.
Примеры
Примеры доступны в репозитории примеров GitHub. Ниже показаны некоторые из них.
YAML: использование параллельного задания в конвейере
$schema: https://azuremlschemas.azureedge.net/latest/pipelineJob.schema.json
type: pipeline
display_name: iris-batch-prediction-using-parallel
description: The hello world pipeline job with inline parallel job
tags:
tag: tagvalue
owner: sdkteam
settings:
default_compute: azureml:cpu-cluster
jobs:
batch_prediction:
type: parallel
compute: azureml:cpu-cluster
inputs:
input_data:
type: mltable
path: ./neural-iris-mltable
mode: direct
score_model:
type: uri_folder
path: ./iris-model
mode: download
outputs:
job_output_file:
type: uri_file
mode: rw_mount
input_data: ${{inputs.input_data}}
mini_batch_size: "10kb"
resources:
instance_count: 2
max_concurrency_per_instance: 2
logging_level: "DEBUG"
mini_batch_error_threshold: 5
retry_settings:
max_retries: 2
timeout: 60
task:
type: run_function
code: "./script"
entry_script: iris_prediction.py
environment:
name: "prs-env"
version: 1
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04
conda_file: ./environment/environment_parallel.yml
program_arguments: >-
--model ${{inputs.score_model}}
--error_threshold 5
--allowed_failed_percent 30
--task_overhead_timeout 1200
--progress_update_timeout 600
--first_task_creation_timeout 600
--copy_logs_to_parent True
--resource_monitor_interva 20
append_row_to: ${{outputs.job_output_file}}