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


Схема параллельного задания 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_scriptprogram_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, , downloaddirect 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}}

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