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

ОБЛАСТЬ ПРИМЕНЕНИЯ:Расширение ML для 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

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

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

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

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

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

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

MpiConfiguration

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

PyTorchConfiguration

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

TensorFlowConfiguration

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

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

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

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

Ключ Тип Описание Допустимые значения Значение по умолчанию
type строка Обязательный. Тип выходных данных компонента. uri_file, uri_folder, mltable, mlflow_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
version: 9
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.0/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. Не используйте \ для создания новой строки.
среда 1. Для версии {envVersion}среды {envName} не существует определения .
2. Не существует среды для имени {envName}, версии {envVersion}.
3. Не удалось найти ресурс с идентификатором {envAssetId}.
1. Убедитесь, что имя среды и версия, на которые вы ссылаетесь в определении компонента, существуют.
2. Если вы ссылаетесь на зарегистрированную среду, необходимо указать версию.
входные и выходные данные 1. Имена входных и выходных данных конфликтуют с системными зарезервированными параметрами.
2. Повторяющиеся имена входных или выходных данных.
1. Не используйте какие-либо из этих зарезервированных параметров в качестве имени входных и выходных данных: , , , user, shellpwdhomelogname. ld_library_pathpath
2. Убедитесь, что имена входных и выходных данных не дублируются.

Дальнейшие действия