Schéma YAML de la tâche de commande CLI (v2)
S’APPLIQUE À :Extension Azure CLI ml v2 (actuel)
Le schéma JSON source se trouve à l’adresse https://azuremlschemas.azureedge.net/latest/commandJob.schema.json.
Notes
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 la page https://azuremlschemasprod.azureedge.net/.
Syntaxe YAML
Clé | Type | Description | Valeurs autorisées | Valeur par défaut |
---|---|---|---|---|
$schema |
string | 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 |
string | Nom du travail. Doit être unique pour tous les travaux de l’espace de travail. En cas d’omission, Azure Machine Learning génère automatiquement un GUID pour le nom. | ||
display_name |
string | Nom complet du travail dans l’interface utilisateur de Studio. Peut être non unique dans l’espace de travail. En cas d’omission, Azure Machine Learning génère automatiquement un identificateur de nom convivial explicite pour le nom d’affichage. | ||
experiment_name |
string | Nom de l’expérience sous lequel organiser le travail. Chaque enregistrement d’exécution du travail est organisé sous l’expérience correspondante dans l’onglet « Expérience » du studio. En cas d’omission, Azure Machine Learning prend par défaut le nom du répertoire de travail dans lequel le travail a été créé. | ||
description |
string | Description du travail. | ||
tags |
object | Dictionnaire d’étiquettes pour le travail. | ||
command |
string | Obligatoire (si vous n’utilisez pas le champ component ). Commande à exécuter. |
||
code |
string | Chemin d’accès local au répertoire du code source à télécharger et à utiliser pour le travail. | ||
environment |
chaîne ou objet | Obligatoire (si vous n’utilisez pas le champ component ). 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 d’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, veuillez suivre le schéma d’environnement. Excluez les propriétés name et version , car elles ne sont pas prises en charge pour les environnements inline. |
||
environment_variables |
object | Dictionnaire de paires clé-valeur de variable d’environnement à définir sur le processus dans lequel la commande est exécutée. | ||
distribution |
object | Configuration de la distribution pour les scénarios de formation distribués. MpiConfiguration, PyTorchConfiguration ou TensorFlowConfiguration. | ||
compute |
string | 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 syntaxe azureml:<compute_name> ) ou de local pour 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 |
string | Type d’instance à utiliser pour le travail. Applicable aux travaux en cours d’exécution sur le calcul Kubernetes avec Azure Arc (quand la cible de calcul spécifiée dans le champ compute est type: kubernentes ). En cas d’omission, il s’agit par défaut du 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 |
string | Taille du bloc de mémoire partagée du conteneur Docker. Cela doit être au format où <number><unit> le nombre doit être supérieur à 0 et l’unité peut être de b (octets), k (kilo-octets), m (mégaoctets) ou g (gigaoctets). |
2g |
|
limits.timeout |
entier | Durée maximale, en secondes, pendant laquelle le travail est autorisé à s’exécuter. Une fois cette limite atteinte, le système annule le travail. | ||
inputs |
object | 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 |
object | 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> |
object | Vous pouvez laisser l’objet vide. Dans ce cas, par défaut, la sortie sera de type uri_folder et Azure Machine Learning générera 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 |
object | L’identité est utilisée pour l’accès aux données. Il peut s’agir de UserIdentityConfiguration, ManagedIdentityConfiguration ou None. Si c’est UserIdentityConfiguration, l’identité de l’émetteur du travail sera 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 sera utilisée. |
Configurations de distribution
MpiConfiguration
Clé | Type | Description | 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é | Type | Description | 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é | Type | Description | 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é | Type | Description | Valeurs autorisées | Valeur par défaut |
---|---|---|---|---|
type |
string | 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_folder , mlflow_model , custom_model |
uri_folder |
path |
string | Le chemin vers les données à utiliser comme entrée. Cela peut être spécifié de plusieurs façons : - Chemin d’accès local au fichier ou dossier de source de données, par exemple path: ./iris.csv . Les données seront chargées lors de 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 d’URI azureml:// , consultez Syntaxe YAML fondamentale. - 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 |
string | Mode de remise des données à la cible de calcul. Pour un 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 le mode download , 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 mode direct . Cela passe l’URL de l’emplacement de stockage en tant qu’entrée de travail. Notez que dans ce cas, vous êtes entièrement responsable de la gestion des informations d’identification pour accéder au stockage. Les modes eval_mount et eval_download sont propres à MLTable et montent les données en tant que chemin d’accès ou téléchargent les données sur la cible de calcul. Pour plus d’informations sur les modes, consultez Accéder aux données dans un travail |
ro_mount , download , direct , eval_download , eval_mount |
ro_mount |
Sorties du travail
Clé | Type | Description | Valeurs autorisées | Valeur par défaut |
---|---|---|---|---|
type |
string | Type de sortie du travail. Pour le type uri_folder par défaut, la sortie correspond à un dossier. |
uri_folder , mlflow_model , custom_model |
uri_folder |
mode |
string | Mode de remise du ou des fichiers de sortie dans le 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 chargement, le ou les fichiers écrits sont chargés à la fin du travail. |
rw_mount , upload |
rw_mount |
Configurations d’identité
UserIdentityConfiguration
Clé | Type | Description | Valeurs autorisées |
---|---|---|---|
type |
const | Obligatoire. Type d’identité. | user_identity |
ManagedIdentityConfiguration
Clé | Type | Description | 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. Vous en trouverez plusieurs ci-dessous.
YAML : hello world
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: echo "hello world"
environment:
image: library/python:latest
YAML : nom d’affichage, nom de l’expérience, description et étiquettes
$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 : écrire 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 la 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 du 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.0/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.0/labels/latest
YAML : entrée du 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.0/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.0/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 : apprentissage du 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.0/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 : apprentissage du modèle R de base avec le contexte de génération Docker local
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
command: >
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-1.13-cuda11.7@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 distribué
$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.12-cuda11@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.
YAML : MPI distribué
$schema: https://azuremlschemas.azureedge.net/latest/commandJob.schema.json
code: src
command: >-
python train.py
--epochs ${{inputs.epochs}}
inputs:
epochs: 1
environment: azureml:AzureML-tensorflow-2.12-cuda11@latest
compute: azureml:gpu-cluster
resources:
instance_count: 2
distribution:
type: mpi
process_count_per_instance: 1
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.