Схемы YAML для командного задания CLI (версия 2)
ОБЛАСТЬ ПРИМЕНЕНИЯ: расширение машинного обучения Azure CLI версии 2 (текущее)
Исходную схему JSON можно найти по адресу https://azuremlschemas.azureedge.net/latest/commandJob.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 |
строка | Имя задания. Должно быть уникальным для всех заданий в рабочей области. Если опущено, Машинное обучение Azure автоматически создает GUID для имени. | ||
display_name |
строка | Отображаемое имя задания в пользовательском интерфейсе студии. Может быть неуникален в рабочей области. Если опущено, Машинное обучение Azure автоматически создает идентификатор прилагательного имени, доступный для чтения. | ||
experiment_name |
строка | Имя эксперимента, по которому будет организовано задание. Запись выполнения каждого задания организована в соответствии с соответствующим экспериментом на вкладке "Эксперименты" студии. Если опущено, Машинное обучение Azure по умолчанию используется имя рабочего каталога, в котором было создано задание. | ||
description |
строка | Описание задания. | ||
tags |
объект | Словарь тегов для задания. | ||
command |
строка | Команда для выполнения. | ||
code |
строка | Локальный путь к каталогу исходного кода, который будет отправлен и использован для задания. | ||
environment |
Строка или объект | Среда, используемая для задания. Может быть ссылка на существующую версию среды в рабочей области или встроенную спецификацию среды. Чтобы ссылаться на существующую среду, используйте azureml:<environment_name>:<environment_version> синтаксис или azureml:<environment_name>@latest (чтобы ссылаться на последнюю версию среды). Чтобы определить встроенную среду, следуйте схеме среды. name Исключите свойства и version свойства, так как они не поддерживаются для встроенных сред. |
||
environment_variables |
объект | Словарь пар "ключ — значение" переменной среды, устанавливаемых для процесса, в котором выполняется команда. | ||
distribution |
объект | Конфигурация распределения для сценариев распределенного обучения. Является одной из следующих: MpiConfiguration, PyTorchConfiguration или TensorFlowConfiguration. | ||
compute |
строка | Имя целевого объекта вычислений для выполнения задания. Может быть ссылка на существующие вычислительные ресурсы в рабочей области (с помощью синтаксиса azureml:<compute_name> ) или local назначить локальное выполнение. Примечание. Задания в конвейере не поддерживаются local как compute |
local |
|
resources.instance_count |
integer | Число узлов, используемых для задания. | 1 |
|
resources.instance_type |
строка | Тип экземпляра, используемый для задания. Применимо для заданий, выполняемых в вычислительной среде Kubernetes с поддержкой Azure Arc (если в поле compute указана целевая вычислительная среда типа type: kubernentes ). Если опущен, по умолчанию используется тип экземпляра по умолчанию для кластера Kubernetes. Дополнительные сведения см. в статье Создание и выбор типов экземпляров Kubernetes. |
||
resources.shm_size |
строка | Размер общего блока памяти контейнера Docker. Должен быть в формате <number><unit> , где число должно быть больше 0, а единица может быть одной из b (байт), k (килобайтов), m (мегабайтов) или g (гигабайтов). |
2g |
|
limits.timeout |
integer | Максимальное время в секундах, в течение которого разрешено выполнение задания. По достижении этого ограничения система отменяет задание. | ||
inputs |
объект | Словарь входных данных для задания. Ключ — это имя входных данных в контексте задания, а значение — это входное значение. На входные данные можно ссылаться в command с помощью выражения ${{ inputs.<input_name> }} . |
||
inputs.<input_name> |
число, целое число, логическое значение, строка или объект | Одно из литеральных значений (с типом Number, Integer, Boolean или String) или объект, содержащий спецификацию входных данных для задания. | ||
outputs |
объект | Словарь конфигураций выходных данных для задания. Ключ — это имя выходных данных в контексте задания, а значение — выходная конфигурация. На выходные данные можно ссылаться в command с помощью выражения ${{ outputs.<output_name> }} . |
||
outputs.<output_name> |
объект | Вы можете оставить объект пустым, в этом случае выходные данные по умолчанию являются типом uri_folder и Машинное обучение Azure создают выходное расположение для выходных данных. Файлы в выходной каталог записываются с помощью подключения чтения и записи. Если вы хотите указать другой режим вывода данных, укажите объект со спецификацией выходных данных для задания. |
||
identity |
объект | Удостоверение используется для доступа к данным. Это может быть UserIdentityConfiguration, ManagedIdentityConfiguration или None. Если UserIdentityConfiguration, удостоверение отправителя заданий используется для доступа, ввода данных и записи результатов в выходную папку, в противном случае используется управляемое удостоверение целевого объекта вычислений. |
Конфигурации распределения
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 |
строка | Тип входных данных для задания. Укажите uri_file , чтобы использовать в качестве источника входные данные из одного файла, или uri_folder , чтобы использовать весь каталог с файлами. |
uri_file , , uri_folder mlflow_model custom_model |
uri_folder |
path |
строка | Путь к данным, которые используются в качестве входных данных. Можно указать несколько способов: – локальный путь к файлу или папке источника данных, например path: ./iris.csv . Данные передаются во время отправки задания. — универсальный код ресурса (URI) для облачного пути к файлу или папке, которые нужно использовать в качестве входных данных. Поддерживаются следующие типы URI: azureml , https , wasbs , abfss , adl . Дополнительные сведения об использовании формата URI azureml:// см. в разделе Базовый синтаксис YAML. — Существующий зарегистрированный Машинное обучение 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-адрес расположения хранилища в качестве входных данных задания. В этом случае вам придется самостоятельно обрабатывать учетные данные для доступа к хранилищу. Режимы eval_mount и eval_download режимы являются уникальными для MLTable, а данные подключаются как путь или загружаются в целевой объект вычислений. Дополнительные сведения о режимах см. в разделе "Доступ к данным в задании" |
ro_mount , , download direct , eval_download eval_mount |
ro_mount |
Выходные данные задания
Ключ | Тип | Описание | Допустимые значения | Default value |
---|---|---|---|---|
type |
строка | Тип выходных данных для задания. Для типа по умолчанию uri_folder выходные данные соответствуют папке. |
uri_folder , , mlflow_model custom_model |
uri_folder |
mode |
строка | Режим доставки выходных файлов в целевое хранилище. Для режима подключения чтения и записи (rw_mount ) выходной каталог является подключенным каталогом. В режиме отправки файлы, записанные в конце задания, отправляются. |
rw_mount , upload |
rw_mount |
Конфигурации удостоверений
UserIdentityConfiguration
Ключ | Тип | Описание | Допустимые значения |
---|---|---|---|
type |
const | Обязательный. Тип удостоверения. | user_identity |
ManagedIdentityConfiguration
Ключ | Тип | Описание | Допустимые значения |
---|---|---|---|
type |
const | Обязательный. Тип удостоверения. | managed или managed_identity |
Замечания
Команду az ml job
можно использовать для управления заданиями Машинного обучения Azure.
Примеры
Примеры доступны в репозитории примеров GitHub. В следующих разделах показаны некоторые примеры.
YAML: привет, мир!
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world"
environment:
image: library/python:latest
YAML: отображаемое имя, имя эксперимента, описание и теги
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world"
environment:
image: library/python:latest
tags:
hello: world
display_name: hello-world-example
experiment_name: hello-world-example
description: |
# Azure Machine Learning "hello world" job
This is a "hello world" job running in the cloud via Azure Machine Learning!
## Description
Markdown is supported in the studio for job descriptions! You can edit the description there or via CLI.
YAML: переменные среды
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo $hello_env_var
environment:
image: library/python:latest
environment_variables:
hello_env_var: "hello world"
YAML: исходный код
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: ls
code: src
environment:
image: library/python:latest
YAML: литеральные входные данные
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
echo ${{inputs.hello_string}}
echo ${{inputs.hello_number}}
environment:
image: library/python:latest
inputs:
hello_string: "hello world"
hello_number: 42
YAML: запись в выходные данные по умолчанию
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world" > ./outputs/helloworld.txt
environment:
image: library/python:latest
YAML: запись в именованные выходные данные
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world" > ${{outputs.hello_output}}/helloworld.txt
outputs:
hello_output:
environment:
image: python
YAML: входные данные файла URI хранилища данных
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
echo "--iris-csv: ${{inputs.iris_csv}}"
python hello-iris.py --iris-csv ${{inputs.iris_csv}}
code: src
inputs:
iris_csv:
type: uri_file
path: azureml://datastores/workspaceblobstore/paths/example-data/iris.csv
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
YAML: входные данные папки URI хранилища данных
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
ls ${{inputs.data_dir}}
echo "--iris-csv: ${{inputs.data_dir}}/iris.csv"
python hello-iris.py --iris-csv ${{inputs.data_dir}}/iris.csv
code: src
inputs:
data_dir:
type: uri_folder
path: azureml://datastores/workspaceblobstore/paths/example-data/
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
YAML: входные данные файла URI
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
echo "--iris-csv: ${{inputs.iris_csv}}"
python hello-iris.py --iris-csv ${{inputs.iris_csv}}
code: src
inputs:
iris_csv:
type: uri_file
path: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
YAML: входные данные папки URI
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
ls ${{inputs.data_dir}}
echo "--iris-csv: ${{inputs.data_dir}}/iris.csv"
python hello-iris.py --iris-csv ${{inputs.data_dir}}/iris.csv
code: src
inputs:
data_dir:
type: uri_folder
path: wasbs://datasets@azuremlexamples.blob.core.windows.net/
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
YAML: Notebook через Papermill
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: |
pip install ipykernel papermill
papermill hello-notebook.ipynb outputs/out.ipynb -k python
code: src
environment:
image: library/python:3.11.6
YAML: основное обучение модели Python
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
python main.py
--iris-csv ${{inputs.iris_csv}}
--C ${{inputs.C}}
--kernel ${{inputs.kernel}}
--coef0 ${{inputs.coef0}}
inputs:
iris_csv:
type: uri_file
path: wasbs://datasets@azuremlexamples.blob.core.windows.net/iris.csv
C: 0.8
kernel: "rbf"
coef0: 0.1
environment: azureml://registries/azureml/environments/sklearn-1.5/labels/latest
compute: azureml:cpu-cluster
display_name: sklearn-iris-example
experiment_name: sklearn-iris-example
description: Train a scikit-learn SVM on the Iris dataset.
YAML: обучение модели Basic R с локальным контекстом сборки Docker
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: >
source /usr/venv/bin/activate
Rscript train.R
--data_folder ${{inputs.iris}}
code: src
inputs:
iris:
type: uri_file
path: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
environment:
build:
path: docker-context
compute: azureml:cpu-cluster
display_name: r-iris-example
experiment_name: r-iris-example
description: Train an R model on the Iris dataset.
YAML: распределенный PyTorch
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
python train.py
--epochs ${{inputs.epochs}}
--learning-rate ${{inputs.learning_rate}}
--data-dir ${{inputs.cifar}}
inputs:
epochs: 1
learning_rate: 0.2
cifar:
type: uri_folder
path: azureml:cifar-10-example@latest
environment: azureml:AzureML-acpt-pytorch-2.2-cuda12.1@latest
compute: azureml:gpu-cluster
distribution:
type: pytorch
process_count_per_instance: 1
resources:
instance_count: 2
display_name: pytorch-cifar-distributed-example
experiment_name: pytorch-cifar-distributed-example
description: Train a basic convolutional neural network (CNN) with PyTorch on the CIFAR-10 dataset, distributed via PyTorch.
YAML: распределенный TensorFlow
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
python train.py
--epochs ${{inputs.epochs}}
--model-dir ${{inputs.model_dir}}
inputs:
epochs: 1
model_dir: outputs/keras-model
environment: azureml:AzureML-tensorflow-2.16-cuda12@latest
compute: azureml:gpu-cluster
resources:
instance_count: 2
distribution:
type: tensorflow
worker_count: 2
display_name: tensorflow-mnist-distributed-example
experiment_name: tensorflow-mnist-distributed-example
description: Train a basic neural network with TensorFlow on the MNIST dataset, distributed via TensorFlow.