Схема yamL задания командной строки (версия 2)

ПРИМЕНЯЕТСЯ К:Расширение Azure CLI ML версии 2 (текущий)

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

Note

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

YAML syntax

Key Type Description Allowed values Default value
$schema string Схема YAML. При создании файла YAML с помощью расширения VS Code Машинного обучения Azure вы можете добавить $schema в верхней части файла, чтобы вызывать завершение схемы и ресурсов.
type const Тип задания. command command
name string Имя задания. Должно быть уникальным для всех заданий в рабочей области. Если опущено, Машинное обучение Azure автоматически создает GUID для имени.
display_name string Отображаемое имя задания в пользовательском интерфейсе студии. Может быть неуникален в рабочей области. Если опущено, Машинное обучение Azure автоматически создает идентификатор прилагательного имени, доступный для чтения.
experiment_name string Имя эксперимента, по которому будет организовано задание. Запись выполнения каждого задания организована в соответствии с соответствующим экспериментом на вкладке "Эксперименты" студии. Если опущено, машинное обучение Azure по умолчанию использует имя рабочего каталога, в котором было создано задание.
description string Описание задания.
tags object Словарь тегов для задания.
command string Команда для выполнения.
code string Локальный путь к каталогу исходного кода, который будет отправлен и использован для задания.
environment строка или объект Среда, используемая для задания. Может быть ссылка на существующую версию среды в рабочей области или встроенную спецификацию среды.

Чтобы ссылаться на существующую среду, используйте azureml:<environment_name>:<environment_version> синтаксис или azureml:<environment_name>@latest (чтобы ссылаться на последнюю версию среды).

Чтобы определить встроенную среду, следуйте схеме среды. name Исключите свойства и version свойства, так как они не поддерживаются для встроенных сред.

При работе с курируемыми средами в CLI или пакете SDK имена курируемых сред начинаются с AzureML-. При использовании студии машинного обучения Azure имена курируемых сред не имеют этого префикса. Причина этой разницы состоит в том, что пользовательский интерфейс студии отображает готовые и пользовательские среды на отдельных вкладках, поэтому префикс не требуется. CLI и SDK не имеют такого разделения, поэтому префикс используется для различения между курируемыми и пользовательскими средами.
environment_variables object Словарь пар переменных переменных ключей среды, которые необходимо задать в процессе выполнения команды.
distribution object Конфигурация распределения для сценариев распределенного обучения. Одна из MpiConfiguration, PyTorchConfiguration, TensorFlowConfiguration или RayConfiguration.
compute string Имя целевого объекта вычислений для выполнения задания. Может быть ссылка на существующие вычислительные ресурсы в рабочей области (с помощью синтаксиса azureml:<compute_name> ) или local назначить локальное выполнение. Примечание. Задания в конвейере не поддерживаются local как compute local
resources.instance_count integer Число узлов, используемых для задания. 1
resources.instance_type string Тип экземпляра, используемый для задания. Применимо для заданий, выполняемых в вычислительных ресурсах Kubernetes с поддержкой Azure Arc (где целевой computeобъект вычислений, указанный в type: kubernetes поле). Если опущен, по умолчанию используется тип экземпляра по умолчанию для кластера Kubernetes. Дополнительные сведения см. в разделе "Создание типов экземпляров и управление ими".
resources.shm_size string Размер общего блока памяти контейнера Docker. Должен быть в формате <number><unit> , где число должно быть больше 0, а единица может быть одной из b (байт), k (килобайтов), m (мегабайтов) или g (гигабайтов). 2g
resources.docker_args string Дополнительные аргументы для передачи команде Docker run .
resources.locations array Список расположений регионов, где задание разрешено выполнять.
resources.max_instance_count integer Максимальное количество узлов, используемых для задания (для эластичного распределенного обучения).
limits.timeout integer Максимальное время выполнения задания в секундах. По достижении этого ограничения система отменяет задание.
inputs object Словарь входных данных для задания. Ключ — это имя входных данных в контексте задания, а значение — это входное значение.

На входные данные можно ссылаться в command с помощью выражения ${{ inputs.<input_name> }}.
inputs.<input_name> число, целое число, логическое значение, строка или объект Одно из литеральных значений (с типом Number, Integer, Boolean или String) или объект, содержащий спецификацию входных данных для задания.
outputs object Словарь конфигураций выходных данных для задания. Ключ — это имя выходных данных в контексте задания, а значение — выходная конфигурация.

На выходные данные можно ссылаться в command с помощью выражения ${{ outputs.<output_name> }}.
outputs.<output_name> object Вы можете оставить объект пустым, в этом случае выходные данные по умолчанию являются типом uri_folder , и Машинное обучение Azure создает выходное расположение для выходных данных. Файлы в выходной каталог записываются с помощью подключения чтения и записи. Если вы хотите указать другой режим выходных данных, укажите объект, содержащий спецификацию выходных данных задания.
queue_settings object Параметры очереди для задания. Настройте уровень заданий и приоритет планирования. См. параметры очереди.
services object Словарь интерактивных служб заданий (конечных точек). Поддерживаемые типы служб: ssh, tensor_board, vs_codejupyter_lab.
identity object Удостоверение используется для доступа к данным. Это может быть UserIdentityConfiguration, ManagedIdentityConfiguration, AMLTokenIdentityConfiguration или None. Если UserIdentityConfiguration, удостоверение отправителя заданий используется для доступа к входным данным и записи результатов в выходную папку; в противном случае используется управляемое удостоверение целевого объекта вычислений.

Distribution configurations

MpiConfiguration

Key Type Description Allowed values
type const Required. Distribution type. mpi
process_count_per_instance integer Required. Количество процессов, запускаемых на каждом узле для выполнения задания.

PyTorchConfiguration

Key Type Description Allowed values Default value
type const Required. Distribution type. pytorch
process_count_per_instance integer Количество процессов, запускаемых на каждом узле для выполнения задания. 1

TensorFlowConfiguration

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

RayConfiguration

Key Type Description Allowed values Default value
type const Required. Distribution type. ray
address string Адрес существующего кластера Ray для подключения. Если опущено, машинное обучение Azure запускает новый кластер Ray.
port integer Порт процесса луча головы.
dashboard_port integer Порт процесса панели мониторинга Ray.
include_dashboard boolean Запуск панели мониторинга Ray.
head_node_additional_args string Дополнительные аргументы, ray start передаваемые на головной узел.
worker_node_additional_args string Дополнительные аргументы, ray start передаваемые на рабочие узлы.

Job inputs

Key Type Description Allowed values Default value
type string Тип входных данных для задания. Укажите uri_file, чтобы использовать в качестве источника входные данные из одного файла, или uri_folder, чтобы использовать весь каталог с файлами. uri_file, , uri_foldermlflow_modelcustom_model uri_folder
path string Путь к данным, которые используются в качестве входных данных. Можно указать несколько способов:

— локальный путь к файлу или папке источника данных, например path: ./iris.csv. Данные передаются во время отправки задания.

— универсальный код ресурса (URI) для облачного пути к файлу или папке, которые нужно использовать в качестве входных данных. Поддерживаются следующие типы URI: azureml, https, wasbs, abfss, adl. Дополнительные сведения об использовании формата URI см. в синтаксисе azureml://.

— Существующий зарегистрированный Машинное обучение Azure ресурс данных, используемый в качестве входных данных. Чтобы ссылаться на зарегистрированный ресурс данных, используйте azureml:<data_name>:<data_version> синтаксис или azureml:<data_name>@latest (чтобы ссылаться на последнюю версию этого ресурса данных), например path: azureml:cifar10-data:1 или path: azureml:cifar10-data@latest.
mode string Режим доставки данных в целевой объект вычислений.

Для подключения только для чтения (ro_mount) данные используются в качестве пути подключения. Папка подключена как папка, и файл подключается в виде файла. Машинное обучение Azure разрешает входные данные пути подключения.

В download режиме данные загружаются в целевой объект вычислений. Машинное обучение Azure разрешает входные данные в скачанный путь.

Если требуется только URL-адрес расположения хранилища артефактов данных, а не подключение или скачивание самих данных, можно использовать direct режим. Этот режим передает URL-адрес расположения хранилища в качестве входных данных задания. В этом случае вам придется самостоятельно обрабатывать учетные данные для доступа к хранилищу.

Режимы eval_mount и eval_download режимы являются уникальными для MLTable, а данные подключаются как путь или загружаются в целевой объект вычислений.

Дополнительные сведения о режимах см. в разделе "Доступ к данным в задании"
ro_mount, , downloaddirect, eval_downloadeval_mount ro_mount

Job outputs

Key Type Description Allowed values Default value
type string Тип выходных данных для задания. Для типа по умолчанию uri_folder выходные данные соответствуют папке. uri_folder, , mlflow_modelcustom_model uri_folder
mode string Режим доставки выходных файлов в целевое хранилище. Для режима подключения чтения и записи (rw_mount) выходной каталог является подключенным каталогом. В режиме отправки файлы, записанные в конце задания, отправляются. rw_mount, upload rw_mount

Identity configurations

UserIdentityConfiguration

Key Type Description Allowed values
type const Required. Identity type. user_identity

ManagedIdentityConfiguration

Key Type Description Allowed values
type const Required. Identity type. managed или managed_identity

AMLTokenIdentityConfiguration

Key Type Description Allowed values
type const Required. Identity type. Задание использует маркер машинного обучения Azure рабочей области для доступа к данным. aml_token

Queue settings

Key Type Description Allowed values Default value
job_tier string Уровень задания. spot использует предварительное вычисление с более низкой стоимостью. spot, , basicstandardpremium
priority string Приоритет планирования в выбранном уровне. low, , mediumhigh

Remarks

Команду az ml job можно использовать для управления заданиями Машинного обучения Azure.

Examples

Примеры доступны в репозитории примеров 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: Записная книжка с помощью бумажной мельницы

$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: базовое обучение модели 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.8-cuda12.6@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.

Next steps