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


Схемы YAML для командного компонента CLI (версия 2)

ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 2 (текущее)

Исходную схему JSON можно найти по адресу https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json.

Примечание.

Синтаксис YAML, описанный в этом документе, основан на схеме JSON для последней версии расширения ML CLI (версия 2). Этот синтаксис гарантированно работает только с последней версией расширения ML CLI (версия 2). Схемы для старых версий расширений можно найти по адресу https://azuremlschemasprod.azureedge.net/.

Синтаксис YAML

Ключ Тип Описание Допустимые значения Default value
$schema строка Схема YAML. При создании файла YAML с помощью расширения VS Code Машинного обучения Azure вы можете добавить $schema в верхней части файла, чтобы вызывать завершение схемы и ресурсов.
type const Тип компонента. command command
name строка Обязательный. Имя компонента. Должно начинаться с буквы нижнего регистра. Допустимые символы — строчные буквы, цифры и символы подчеркивания(_). Максимальная длина составляет 255 символов.
version строка Версия компонента. Если опущено, Машинное обучение Azure автоматически создает версию.
display_name строка Отображаемое имя компонента в пользовательском интерфейсе Studio. Может быть неуникальным в пределах рабочей области.
description строка Описание компонента.
tags объект Словарь тегов для компонента.
is_deterministic boolean Этот параметр определяет, будет ли компонент создавать одинаковые выходные данные для одних и того же входных данных. Обычно это false необходимо задать для компонентов, которые загружают данные из внешних источников, например импорт данных из URL-адреса. Это связано с тем, что данные по URL-адресу могут меняться с течением времени. true
command строка Обязательный. Команда для выполнения.
code строка Локальный путь к каталогу исходного кода, который будет отправлен и использован для компонента.
environment Строка или объект Обязательный. Среда, используемая для компонента. Это значение может быть ссылкой на существующую среду с управлением версиями в рабочей области или спецификацией встроенной среды.

Чтобы сослаться на существующую среду, используйте синтаксис azureml:<environment-name>:<environment-version>.

Чтобы определить встроенную среду, следуйте схеме среды. name Исключите свойства и version свойства, так как они не поддерживаются для встроенных сред.
distribution объект Конфигурация распределения для сценариев распределенного обучения. Является одной из следующих: MpiConfiguration, PyTorchConfiguration или TensorFlowConfiguration.
resources.instance_count integer Число узлов, используемых для задания. 1
inputs объект Словарь входных данных компонента. Ключ — это имя входных данных в контексте компонента, а значение — определение входных данных компонента.

На входные данные можно ссылаться в command с помощью выражения ${{ inputs.<input_name> }}.
inputs.<input_name> объект Определение входных данных компонента. Набор настраиваемых свойств см. в разделе Входные данные компонента.
outputs объект Словарь выходных данных компонента. Ключ — это имя выходных данных в контексте компонента, а значение — определение выходных данных компонента.

На выходные данные можно ссылаться в command с помощью выражения ${{ outputs.<output_name> }}.
outputs.<output_name> объект Определение выходных данных компонента. Набор настраиваемых свойств см. в разделе Выходные данные компонента.

Конфигурации распределения

MpiConfiguration

Ключ Тип Описание Допустимые значения
type const Обязательный. Тип распределения. mpi
process_count_per_instance integer Обязательный. Количество процессов, запускаемых на каждом узле для выполнения задания.

PyTorchConfiguration

Ключ Тип Описание Допустимые значения Default value
type const Обязательный. Тип распределения. pytorch
process_count_per_instance integer Количество процессов, запускаемых на каждом узле для выполнения задания. 1

TensorFlowConfiguration

Ключ Тип Описание Допустимые значения Default value
type const Обязательный. Тип распределения. tensorflow
worker_count integer Количество рабочих ролей, которые необходимо запустить для выполнения задания. По умолчанию — resources.instance_count.
parameter_server_count integer Количество серверов параметров, которые необходимо запустить для выполнения задания. 0

Входные данные компонента

Ключ Тип Описание Допустимые значения Default value
type строка Обязательный. Тип входных данных компонента. Дополнительные сведения о доступе к данным number, integer, booleanstringuri_fileuri_foldermltablemlflow_model
description строка Описание входных данных.
default число, целое число, логическое значение или строка Значение входного параметра по умолчанию.
optional boolean Указывает, требуются ли входные данные. Если задано значение true, необходимо использовать команду с необязательными входными данными. $[[]] false
min целое число или число Минимальное допустимое значение для входных данных. Это поле может быть указано, только если поле type имеет значение number или integer.
max целое число или число Максимальное допустимое значение для входных данных. Это поле может быть указано, только если поле type имеет значение number или integer.
enum array Список допустимых значений для входных данных. Применимо только в том stringслучае, если type это поле.

Выходные данные компонента

Ключ Тип Описание Допустимые значения Default value
type строка Обязательный. Тип выходных данных компонента. uri_file, , uri_foldermltablemlflow_model
description строка Описание выходных данных.

Замечания

С помощью команд az ml component вы можете управлять компонентами Машинного обучения Azure.

Примеры

Примеры компонентов команд доступны в репозитории примеров GitHub. Ниже приведены отдельные примеры.

Примеры доступны в репозитории примеров GitHub. Ниже показаны некоторые из них.

YAML: компонент команды Hello World

$schema: https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
type: command

name: hello_python_world
display_name: Hello_Python_World
version: 1

code: ./src

environment: 
  image: python

command: >-
  python hello.py

YAML: компонент с различными типами входных данных

$schema: https://azuremlschemas.azureedge.net/latest/commandComponent.schema.json
name: train_data_component_cli
display_name: train_data
description: A example train component
tags:
  author: azureml-sdk-team
type: command
inputs:
  training_data: 
    type: uri_folder
  max_epocs:
    type: integer
    optional: true
  learning_rate: 
    type: number
    default: 0.01
    optional: true
  learning_rate_schedule: 
    type: string
    default: time-based
    optional: true
outputs:
  model_output:
    type: uri_folder
code: ./train_src
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
command: >-
  python train.py 
  --training_data ${{inputs.training_data}} 
  $[[--max_epocs ${{inputs.max_epocs}}]]
  $[[--learning_rate ${{inputs.learning_rate}}]]
  $[[--learning_rate_schedule ${{inputs.learning_rate_schedule}}]]
  --model_output ${{outputs.model_output}}

Определение необязательных входных данных в командной строке

Если входные данные заданы как optional = true, необходимо использовать для $[[]] применения командной строки с входными данными. Например, $[[--input1 ${{inputs.input1}}]. Командная строка во время выполнения может иметь разные входные данные.

  • Если вы используете только необходимые training_data и model_output параметры, командная строка будет выглядеть следующим образом:
python train.py --training_data some_input_path --learning_rate 0.01 --learning_rate_schedule time-based --model_output some_output_path

Если значение не указано во время выполнения, learning_rate и learning_rate_schedule будет использоваться значение по умолчанию.

  • Если все входные и выходные данные предоставляют значения во время выполнения, командная строка будет выглядеть следующим образом:
python train.py --training_data some_input_path --max_epocs 10 --learning_rate 0.01 --learning_rate_schedule time-based --model_output some_output_path

Распространенные ошибки и рекомендации

Ниже приведены некоторые распространенные ошибки и соответствующие рекомендуемые предложения при определении компонента.

Ключ ошибки Рекомендация
Команда 1. Только необязательные входные данные могут находиться в $[[]]
2. Использование \ для создания новой строки не поддерживается в команде.
3. Входные данные или выходные данные не найдены.
1. Убедитесь, что все входные или выходные данные, используемые в команде, уже определены в inputs разделах и outputs используют правильный формат для необязательных входных или обязательных$[[]].${{}}
2. Не используйте \ для создания новой строки.
environment 1. Для версии {envVersion}среды {envName} не существует определения.
2. Среда не существует для имени {envName}, версии {envVersion}.
3. Не удалось найти ресурс с идентификатором {envAssetId}.
1. Убедитесь, что имя среды и версия, которые вы ссылаетесь в определении компонента, существует.
2. Если вы ссылаетесь на зарегистрированную среду, необходимо указать версию.
входные и выходные данные 1. Имена входных и выходных данных конфликтуют с системными зарезервированными параметрами.
2. Повторяющиеся имена входных или выходных данных.
1. Не используйте какие-либо из этих зарезервированных параметров в качестве имени входных и выходных данных: path, , ld_library_path, . shellpwduserlognamehome
2. Убедитесь, что имена входных и выходных данных не дублируются.

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