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

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

Важно!

Эта функция сейчас доступна в виде общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания. Ее не следует использовать для производственных рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Дополнительные сведения см. в статье Дополнительные условия использования предварительных выпусков Microsoft Azure.

Синтаксис YAML

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

Для ссылки на существующую среду используйте azureml:<environment_name>:<environment_version> синтаксис.

Чтобы определить встроенную среду, перейдите к схеме окружения. Исключите name Свойства и, version так как они не поддерживаются для встраиваемых сред.
environment_variables object Словарь пар "имя-значение" переменной среды, устанавливаемых для процесса, в котором выполняется команда.
distribution object Конфигурация распределения для сценариев распределенного обучения. Один из мпиконфигуратион, питорчконфигуратионили тенсорфловконфигуратион.
compute строка Имя целевого объекта вычислений для выполнения задания. Это может быть ссылка на существующие вычислительные ресурсы в рабочей области (с использованием azureml:<compute_name> синтаксиса) или local для обозначения локального выполнения. local
resources.instance_count Целое число Количество узлов, используемых для задания. 1
limits.timeout Целое число Максимальное время в секундах, в течение которого разрешено выполнение задания. По достижении этого предела система отменит задание.
inputs object Словарь входных данных для задания. Ключ — это имя входных данных в контексте задания, а значение — входное значение.

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

На выходные данные можно ссылаться command с помощью ${{ outputs.<output_name> }} выражения.
outputs.<output_name> object Можно указать необязательное значение mode или оставить объект пустым. для каждого именованного выхода, указанного в outputs словаре, Azure ML автоматически создаст расположение выходных данных.
outputs.<output_name>.mode строка Режим доставки выходных файлов в целевое хранилище. Для режима подключения для чтения и записи выходной каталог будет подключенным каталогом. Для режима отправки файлы, записанные в выходной каталог, будут отправлены в конце задания. rw_mount, upload rw_mount

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

мпиконфигуратион

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

питорчконфигуратион

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

тенсорфловконфигуратион

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

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

жобинпутури

Ключ Тип Описание Допустимые значения Значение по умолчанию
file строка Универсальный код ресурса (URI) для одного файла, используемого в качестве входных данных. Поддерживаются следующие типы URI: azureml ,, https wasbs , abfss , adl . Дополнительные сведения об использовании формата URI см. в статье синтаксис Core YAML azureml:// . Требуется один из file или folder .
folder строка Универсальный код ресурса (URI) папки, используемой в качестве входных данных. Поддерживаются следующие типы URI: azureml ,, wasbs abfss , adl . Дополнительные сведения об использовании формата URI см. в статье синтаксис Core YAML azureml:// . Требуется один из file или folder .
mode строка Режим доставки данных в целевой объект вычислений. Для подключения только для чтения и подключения с возможностью чтения и записи данные будут использоваться в качестве пути подключения. Папка будет подключена как папка, а файл будет подключен как файл. Для режима загрузки данные будут использоваться в качестве скачанного пути. ro_mount, rw_mount, download ro_mount

жобинпутдатасет

Ключ Тип Описание Допустимые значения Значение по умолчанию
dataset Строка или объект Обязательный. Набор данных, используемый в качестве входного. Это может быть либо ссылка на существующий набор данных с установленными версиями в рабочей области, либо спецификация встроенного набора данных.

Для ссылки на существующий набор данных используйте azureml:<dataset_name>:<dataset_version> синтаксис.

Чтобы определить встроенный набор данных, следуйте схеме набора данных. Исключите name Свойства и, version так как они не поддерживаются для встроенных наборов данных.
mode строка Режим доставки набора данных в целевой объект вычислений. Для подключения только для чтения набор данных будет использоваться в качестве пути подключения. Папка будет подключена как папка, а файл будет подключен как родительская папка. Для режима загрузки набор данных будет использоваться как скачанный путь. ro_mount, download ro_mount

Remarks

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

Примеры

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

YAML: Hello World

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world"
environment:
  image: python:latest
compute: azureml:cpu-cluster

YAML: отображаемое имя, имя эксперимента, описание и Теги

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world"
environment:
  image: python:latest
compute: azureml:cpu-cluster
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: python:latest
compute: azureml:cpu-cluster
environment_variables:
  hello_env_var: "hello world"

YAML: исходный код

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: ls
code:
  local_path: src
environment:
  image: python:latest
compute: azureml:cpu-cluster

YAML: входные данные литерала

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: >-
  echo ${{inputs.hello_string}}
  &&
  echo ${{inputs.hello_number}}
environment:
  image: python:latest
inputs:
  hello_string: "hello world"
  hello_number: 42
compute: azureml:cpu-cluster

YAML: запись в выходные данные по умолчанию

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world" > ./outputs/helloworld.txt
environment:
  image: python:latest
compute: azureml:cpu-cluster

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
compute: azureml:cpu-cluster

YAML: входные данные URI хранилища данных

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: >-
  echo "--iris-csv: ${{inputs.iris_csv}}"
  &&
  pip install pandas
  &&
  python hello-iris.py
  --iris-csv ${{inputs.iris_csv}}
code:
  local_path: src
inputs:
  iris_csv: 
    file: azureml://datastores/workspaceblobstore/paths/example-data/iris.csv
environment:
  image: python:latest
compute: azureml:cpu-cluster

YAML: входные данные папки URI хранилища данных

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: >-
  ls ${{inputs.data_dir}}
  &&
  echo "--iris-csv: ${{inputs.data_dir}}/iris.csv"
  &&
  pip install pandas
  &&
  python hello-iris.py
  --iris-csv ${{inputs.data_dir}}/iris.csv
code:
  local_path: src
inputs:
  data_dir: 
    folder: azureml://datastores/workspaceblobstore/paths/example-data/
    mode: rw_mount
environment:
  image: python:latest
compute: azureml:cpu-cluster

YAML: входные данные файла URI

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: >-
  echo "--iris-csv: ${{inputs.iris_csv}}"
  &&
  pip install pandas
  &&
  python hello-iris.py
  --iris-csv ${{inputs.iris_csv}}
code:
  local_path: src
inputs:
  iris_csv: 
    file: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
environment:
  image: python:latest
compute: azureml:cpu-cluster

YAML: входные данные папки URI

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: >-
  ls ${{inputs.data_dir}}
  &&
  echo "--iris-csv: ${{inputs.data_dir}}/iris.csv"
  &&
  pip install pandas
  &&
  python hello-iris.py
  --iris-csv ${{inputs.data_dir}}/iris.csv
code:
  local_path: src
inputs:
  data_dir: 
    folder: wasbs://datasets@azuremlexamples.blob.core.windows.net/
environment:
  image: python:latest
compute: azureml:cpu-cluster

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:
  local_path: src
environment:
  image: python:latest
compute: azureml:cpu-cluster

YAML: основное обучение модели Python

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: 
  local_path: src
command: >-
  python main.py 
  --iris-csv ${{inputs.iris_csv}}
  --C ${{inputs.C}}
  --kernel ${{inputs.kernel}}
  --coef0 ${{inputs.coef0}}
inputs:
  iris_csv: 
    file: wasbs://datasets@azuremlexamples.blob.core.windows.net/iris.csv
  C: 0.8
  kernel: "rbf"
  coef0: 0.1
environment: azureml:AzureML-sklearn-0.24-ubuntu18.04-py37-cpu:9
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: >
  Rscript train.R 
  --data_folder ${{inputs.iris}}
code:
  local_path: src
inputs:
  iris: 
    file: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
environment:
  build:
    local_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: 
  local_path: 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:
    dataset: azureml:cifar-10-example:1
environment: azureml:AzureML-pytorch-1.9-ubuntu18.04-py37-cuda11-gpu:6
compute: azureml:gpu-cluster
distribution:
  type: pytorch 
  process_count_per_instance: 2
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:
  local_path: 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.4-ubuntu18.04-py37-cuda11-gpu:14
compute: azureml:gpu-cluster
resources:
  instance_count: 2
distribution:
  type: tensorflow
  worker_count: 2
  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.

YAML: распределенный MPI

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code:
  local_path: src
command: >-
  python train.py
  --epochs ${{inputs.epochs}}
inputs:
  epochs: 1
environment: azureml:AzureML-tensorflow-2.4-ubuntu18.04-py37-cuda11-gpu:14
compute: azureml:gpu-cluster
resources:
  instance_count: 2
distribution:
  type: mpi
  process_count_per_instance: 2
display_name: tensorflow-mnist-distributed-horovod-example
experiment_name: tensorflow-mnist-distributed-horovod-example
description: Train a basic neural network with TensorFlow on the MNIST dataset, distributed via Horovod.

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