Partager via


Schéma YAML du travail de commande CLI (v2)

S’APPLIQUE À :Extension ml Azure CLI v2 (actuelle)

Le schéma JSON source se trouve à l’adresse https://azuremlschemas.azureedge.net/latest/commandJob.schema.json.

Remarque

La syntaxe YAML détaillée dans ce document est basée sur le schéma JSON pour la dernière version de l’extension ML CLI v2. Le fonctionnement de cette syntaxe est garanti uniquement avec la dernière version de l’extension ML CLI v2. Vous trouverez les schémas des versions d’extension plus anciennes sur https://azuremlschemasprod.azureedge.net/.

Syntaxe YAML

Clé Catégorie Descriptif Valeurs autorisées Valeur par défaut
$schema ficelle Schéma YAML. Si vous utilisez l’extension VS Code d’Azure Machine Learning pour créer le fichier YAML, en incluant $schema en haut de votre fichier, vous pouvez appeler des complétions de schémas et de ressources.
type Const Le type de travail. command command
name ficelle Nom du travail. Doit être unique pour tous les travaux de l’espace de travail. S’il est omis, Azure Machine Learning génère automatiquement un GUID pour le nom.
display_name ficelle Nom complet du travail dans l’interface utilisateur de Studio. Peut ne pas être unique dans l’espace de travail. S’il est omis, Azure Machine Learning génère automatiquement un identificateur adjectif-nom lisible pour le nom d’affichage.
experiment_name ficelle Nom de l’expérience sous lequel organiser le travail. L’enregistrement d’exécution de chaque travail est organisé sous l’expérience correspondante sous l’onglet « Expériences » du studio. S’il est omis, Azure Machine Learning l’affecte par défaut au nom du répertoire de travail où le travail a été créé.
description ficelle Description du travail.
tags objet Dictionnaire d’étiquettes pour le travail.
command ficelle La commande à exécuter.
code ficelle Chemin d’accès local au répertoire du code source à télécharger et à utiliser pour le travail.
environment chaîne ou objet L’environnement à utiliser pour le travail. Il peut s’agir d’une référence à un environnement versionné existant dans l’espace de travail ou à une spécification d’environnement inline.

Pour référencer un environnement existant, utilisez la syntaxe azureml:<environment_name>:<environment_version> ou azureml:<environment_name>@latest (pour référencer la version la plus récente d’un environnement).

Pour définir un environnement inline, suivez le schéma de l’environnement. Excluez les propriétés name et version, car elles ne sont pas prises en charge pour les environnements inline.

Lorsque vous travaillez avec des environnements organisés dans l’interface CLI ou le SDK, les noms d’environnement organisés commencent par AzureML-. Lorsque vous utilisez Azure Machine Learning Studio, les noms d’environnement organisés n’ont pas ce préfixe. La raison de cette différence est que l’interface utilisateur de studio affiche des environnements organisés et personnalisés sous des onglets distincts, de sorte que le préfixe n’est pas nécessaire. Le CLI et le SDK n'ont pas cette séparation, donc le préfixe est utilisé pour différencier entre les environnements organisés et personnalisés.
environment_variables objet Dictionnaire de paires clé-valeur de variable d’environnement à définir sur le processus dans lequel la commande est exécutée.
distribution objet Configuration de la distribution pour les scénarios de formation distribués. MpiConfiguration, PyTorchConfiguration ou TensorFlowConfiguration.
compute ficelle Nom de la cible de calcul sur laquelle exécuter le travail. Il peut s’agir d’une référence à un calcul existant dans l’espace de travail (à l’aide de la azureml:<compute_name> syntaxe) ou local de désigner l’exécution locale. Remarque : les travaux dans le pipeline n’ont pas pris en charge local comme compute local
resources.instance_count entier Nombre de nœuds à dédier au travail. 1
resources.instance_type ficelle Type d’instance à utiliser pour le travail. Applicable aux travaux exécutés sur le calcul Kubernetes avec Azure Arc (où la cible de calcul spécifiée dans le compute champ est de type: kubernentes). S’il est omis, la valeur par défaut est le type d’instance par défaut pour le cluster Kubernetes. Pour plus d’informations, consultez Créer et sélectionner des types d’instances Kubernetes.
resources.shm_size ficelle Taille du bloc de mémoire partagée du conteneur Docker. Doit être au format où <number><unit> le nombre doit être supérieur à 0 et l’unité peut être l’un des b (octets), (kilo-octets), k (mégaoctets) m ou g (gigaoctets). 2g
limits.timeout entier Durée maximale en secondes pendant laquelle le travail est autorisé à s’exécuter. Lorsque cette limite est atteinte, le système annule le travail.
inputs objet Dictionnaire d’entrées du travail. La clé est un nom pour l’entrée dans le contexte du travail et la valeur est la valeur d’entrée.

Les entrées peuvent être référencées dans la command à l’aide de l’expression ${{ inputs.<input_name> }}.
inputs.<input_name> nombre, entier, booléen, chaîne ou objet Une valeur littérale (de type nombre, entier, booléen ou chaîne) ou un objet contenant une spécification de données d’entrée de travail.
outputs objet Dictionnaire des configurations de sortie du travail. La clé est un nom pour l’entrée dans le contexte du travail et la valeur est la configuration de sortie.

Les sorties peuvent être référencées dans la command à l’aide de l’expression ${{ outputs.<output_name> }}.
outputs.<output_name> objet Vous pouvez laisser l’objet vide, auquel cas par défaut la sortie est de type uri_folder et Azure Machine Learning génère un emplacement de sortie pour la sortie. Les fichiers dans le répertoire de sortie sont écrits via le montage en lecture-écriture. Si vous souhaitez spécifier un mode différent pour la sortie, fournissez un objet contenant la spécification de sortie du travail.
identity objet L’identité est utilisée pour l’accès aux données. Il peut s’agir de UserIdentityConfiguration, ManagedIdentityConfiguration ou None. Si UserIdentityConfiguration, l’identité du soumissionur de travaux est utilisée pour accéder aux données d’entrée et écrire le résultat dans le dossier de sortie ; sinon, l’identité managée de la cible de calcul est utilisée.

Configurations de distribution

MpiConfiguration

Clé Catégorie Descriptif Valeurs autorisées
type Const Obligatoire. Type de distribution. mpi
process_count_per_instance entier Obligatoire. Nombre de processus par nœud à lancer pour le travail.

PyTorchConfiguration

Clé Catégorie Descriptif Valeurs autorisées Valeur par défaut
type Const Obligatoire. Type de distribution. pytorch
process_count_per_instance entier Nombre de processus par nœud à lancer pour le travail. 1

TensorFlowConfiguration

Clé Catégorie Descriptif Valeurs autorisées Valeur par défaut
type Const Obligatoire. Type de distribution. tensorflow
worker_count entier Nombre de Workers à lancer pour le travail. La valeur par défaut est resources.instance_count.
parameter_server_count entier Nombre de serveurs de paramètres à lancer pour le travail. 0

Entrées du travail

Clé Catégorie Descriptif Valeurs autorisées Valeur par défaut
type ficelle Le type d’entrée de travail. Spécifiez uri_file pour les données d’entrée qui pointent vers une source de fichier unique, ou uri_folder pour les données d’entrée qui pointent vers une source de dossier. uri_file, , uri_foldermlflow_model, ,custom_model uri_folder
path ficelle Le chemin vers les données à utiliser comme entrée. Peut être spécifié de plusieurs façons :

- Chemin local du fichier ou dossier de source de données, par exemple path: ./iris.csv. Les données sont chargées pendant l’envoi du travail.

- URI d’un chemin d’accès cloud au fichier ou dossier à utiliser comme entrée. Les types d’URI pris en charge sont azureml, https, wasbs, abfss et adl. Pour plus d’informations sur l’utilisation du format URI, consultez la azureml://syntaxe yaml Core.

- Une ressource de données Azure Machine Learning inscrite existante à utiliser comme entrée. Pour référencer une ressource de données inscrite, utilisez la syntaxe azureml:<data_name>:<data_version> ou azureml:<data_name>@latest (pour référencer la dernière version de cette ressource de données), par exemple path: azureml:cifar10-data:1 ou path: azureml:cifar10-data@latest.
mode ficelle Mode de remise des données à la cible de calcul.

Pour le montage en lecture seule (ro_mount), les données sont consommées en tant que chemin de montage. Un dossier est monté en tant que dossier et un fichier est monté en tant que fichier. Azure Machine Learning résout l’entrée vers le chemin de montage.

Pour download le mode, les données sont téléchargées sur la cible de calcul. Azure Machine Learning résout l’entrée vers le chemin téléchargé.

Si vous souhaitez uniquement l’URL de l’emplacement de stockage des artefacts de données plutôt que de monter ou de télécharger les données elles-mêmes, vous pouvez utiliser le direct mode. Ce mode passe l’URL de l’emplacement de stockage comme entrée de travail. Dans ce cas, vous êtes entièrement responsable de la gestion des informations d’identification pour accéder au stockage.

Les eval_mount modes sont eval_download uniques à MLTable, et montent les données sous la forme d’un chemin d’accès ou téléchargent les données sur la cible de calcul.

Pour plus d’informations sur les modes, consultez Access data in a job
ro_mount, , downloaddirect, , eval_downloadeval_mount ro_mount

Sorties du travail

Clé Catégorie Descriptif Valeurs autorisées Valeur par défaut
type ficelle Type de sortie du travail. Pour le type uri_folder par défaut, la sortie correspond à un dossier. uri_folder, , mlflow_modelcustom_model uri_folder
mode ficelle Mode de remise des fichiers de sortie au stockage de destination. Pour le mode de montage en lecture-écriture (rw_mount), le répertoire de sortie est un répertoire monté. Pour le mode de chargement, les fichiers écrits sont chargés à la fin du travail. rw_mount, upload rw_mount

Configurations d’identité

UserIdentityConfiguration

Clé Catégorie Descriptif Valeurs autorisées
type Const Obligatoire. Type d’identité. user_identity

ManagedIdentityConfiguration

Clé Catégorie Descriptif Valeurs autorisées
type Const Obligatoire. Type d’identité. managed ou managed_identity

Remarques

La commande az ml job peut être utilisée pour gérer les tâches Azure Machine Learning.

Exemples

Des exemples sont disponibles dans le référentiel d’exemples GitHub. Les sections suivantes présentent quelques-uns des exemples.

YAML : hello world

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world"
environment:
  image: library/python:latest

YAML : nom complet, nom de l’expérience, description et balises

$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 : variables d’environnement

$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 : code source

$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: ls
code: src
environment:
  image: library/python:latest

YAML : entrées littérales

$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 : écriture dans les sorties par défaut

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

YAML : écrire dans une sortie de données nommée

$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 : entrée de fichier URI du magasin de données

$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 : entrée du dossier URI du magasin de données

$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 : Entrée de fichier 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 : Entrée du dossier 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 via 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 : formation de modèle Python de base

$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 : formation de modèle R de base avec le contexte de build Docker local

$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 distribué

$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 : distributed 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.

Étapes suivantes