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


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

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

Исходную схему JSON можно найти по адресу https://azuremlschemas.azureedge.net/latest/commandJob.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 струна Имя задания. Должно быть уникальным для всех заданий в рабочей области. Если опущено, Машинное обучение Azure автоматически создает GUID для имени.
display_name струна Отображаемое имя задания в пользовательском интерфейсе студии. Может быть неуникален в рабочей области. Если опущено, Машинное обучение Azure автоматически создает идентификатор прилагательного имени, доступный для чтения.
experiment_name струна Имя эксперимента, по которому будет организовано задание. Запись выполнения каждого задания организована в соответствии с соответствующим экспериментом на вкладке "Эксперименты" студии. Если опущено, машинное обучение Azure по умолчанию использует имя рабочего каталога, в котором было создано задание.
description струна Описание задания.
tags объект Словарь тегов для задания.
command струна Команда для выполнения.
code струна Локальный путь к каталогу исходного кода, который будет отправлен и использован для задания.
environment строка или объект Среда, используемая для задания. Может быть ссылка на существующую версию среды в рабочей области или встроенную спецификацию среды.

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

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

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

PyTorchConfiguration

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

TensorFlowConfiguration

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

Входные данные задания

Ключ Тип Описание Допустимые значения Значение по умолчанию
type струна Тип входных данных для задания. Укажите uri_file, чтобы использовать в качестве источника входные данные из одного файла, или uri_folder, чтобы использовать весь каталог с файлами. uri_file, , uri_foldermlflow_modelcustom_model uri_folder
path струна Путь к данным, которые используются в качестве входных данных. Можно указать несколько способов:

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

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

— Существующий зарегистрированный Машинное обучение 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, , downloaddirect, eval_downloadeval_mount ro_mount

Выходные данные задания

Ключ Тип Описание Допустимые значения Значение по умолчанию
type струна Тип выходных данных для задания. Для типа по умолчанию uri_folder выходные данные соответствуют папке. uri_folder, , mlflow_modelcustom_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: hello world

$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://[email protected]/
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://[email protected]/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.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.

Дальнейшие шаги