S’APPLIQUE À :
Extension ml Azure CLI v2 (actuelle)
Le schéma JSON source se trouve à l’adresse https://azuremlschemas.azureedge.net/latest/sweepJob.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 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, vous pouvez appeler des achèvements de schéma et de ressource si vous ajoutez $schema en haut de votre fichier. |
|
|
type |
Const |
Obligatoire. Le type de travail. |
sweep |
sweep |
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 être non 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 |
Organisez le travail sous le nom de l’expérience. 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 prend experiment_name par défaut le 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. |
|
|
sampling_algorithm |
objet |
Obligatoire. Algorithme d’échantillonnage d’hyperparamètres à utiliser sur le search_space.
RandomSamplingAlgorithm, GridSamplingAlgorithm ou BayesianSamplingAlgorithm. |
|
|
search_space |
objet |
Obligatoire. Définir l’espace de recherche d’hyperparamètres. Le nom d’hyperparamètre est la clé et la valeur est l’expression de paramètre.
Les hyperparamètres peuvent être référencés dans l’expression trial.command${{ search_space.<hyperparameter> }} . |
|
|
search_space.<hyperparameter> |
objet |
Visitez les expressions de paramètre pour l’ensemble d’expressions possibles à utiliser. |
|
|
objective.primary_metric |
ficelle |
Obligatoire. Nom de la métrique principale signalée par chaque travail d’évaluation. La métrique doit être consignée dans le script d’entraînement de l’utilisateur à l’aide mlflow.log_metric() du même nom de métrique correspondant. |
|
|
objective.goal |
ficelle |
Obligatoire. Objectif d’optimisation de objective.primary_metric. |
maximize, minimize |
|
early_termination |
objet |
Stratégie d’arrêt anticipé à utiliser. Un travail d’évaluation est annulé quand les critères de la stratégie spécifiée sont satisfaits. En cas d’omission, aucune stratégie d’arrêt anticipé n’est appliquée.
BanditPolicy, MedianStoppingPolicy ou TruncationSelectionPolicy. |
|
|
limits |
objet |
Limites du travail de balayage. Consultez Attributs de la clé limits. |
|
|
compute |
ficelle |
Obligatoire. Nom de la cible de calcul sur laquelle exécuter le travail, avec la azureml:<compute_name> syntaxe. |
|
|
trial |
objet |
Obligatoire. Modèle de travail pour chaque évaluation. Chaque travail d’essai est fourni avec une combinaison différente de valeurs d’hyperparamètres que les échantillons système de l’objet search_space. Visitez les attributs de la trial clé. |
|
|
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 number, integer, boolean ou string) ou un objet qui contient 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 et, dans ce cas, par défaut, la sortie est de uri_folder type et le système Azure Machine Learning génère un emplacement de sortie pour la sortie. Tous les fichiers du répertoire de sortie sont écrits via le montage en lecture-écriture. Pour spécifier un mode différent pour la sortie, fournissez un objet qui contient 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 la configuration de l’identité utilisateur, de la configuration de l’identité managée ou de none. Pour UserIdentityConfiguration, l’identité du submitter de travail 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. |
|
|
Algorithmes d’échantillonnage
RandomSamplingAlgorithm
| Clé |
Catégorie |
Descriptif |
Valeurs autorisées |
Valeur par défaut |
type |
Const |
Obligatoire. Type d’algorithme d’échantillonnage. |
random |
|
seed |
entier |
Valeur initiale aléatoire à utiliser pour initialiser la génération de nombres aléatoires. Si elle est omise, la valeur initiale par défaut est Null. |
|
|
rule |
ficelle |
Type d’échantillonnage aléatoire à utiliser. La valeur par défaut, randomutilise un échantillonnage aléatoire uniforme simple, tandis qu’il sobol utilise la séquence quasi aléatoire Sobol. |
random, sobol |
random |
GridSamplingAlgorithm
| Clé |
Catégorie |
Descriptif |
Valeurs autorisées |
type |
Const |
Obligatoire. Type d’algorithme d’échantillonnage. |
grid |
BayesianSamplingAlgorithm
| Clé |
Catégorie |
Descriptif |
Valeurs autorisées |
type |
Const |
Obligatoire. Type d’algorithme d’échantillonnage. |
bayesian |
Stratégies d’arrêt anticipé
BanditPolicy
| Clé |
Catégorie |
Descriptif |
Valeurs autorisées |
Valeur par défaut |
type |
Const |
Obligatoire. Type de stratégie. |
bandit |
|
slack_factor |
nombre |
Ratio utilisé pour calculer la distance autorisée par rapport à l’évaluation la plus performante.
slack_factor ou slack_amount est obligatoire. |
|
|
slack_amount |
nombre |
Distance absolue autorisée à partir de l’évaluation la plus performante.
slack_factor ou slack_amount est obligatoire. |
|
|
evaluation_interval |
entier |
Fréquence d’application de la stratégie. |
|
1 |
delay_evaluation |
entier |
Nombre d’intervalles pour lesquels retarder la première évaluation de la stratégie. S’il est spécifié, la stratégie s’applique à chaque multiple de evaluation_interval supérieur ou égal à delay_evaluation. |
|
0 |
| Clé |
Catégorie |
Descriptif |
Valeurs autorisées |
Valeur par défaut |
type |
Const |
Obligatoire. Type de stratégie. |
median_stopping |
|
evaluation_interval |
entier |
Fréquence d’application de la stratégie. |
|
1 |
delay_evaluation |
entier |
Nombre d’intervalles pour lesquels retarder la première évaluation de la stratégie. S’il est spécifié, la stratégie s’applique à chaque multiple de evaluation_interval supérieur ou égal à delay_evaluation. |
|
0 |
TruncationSelectionPolicy
| Clé |
Catégorie |
Descriptif |
Valeurs autorisées |
Valeur par défaut |
type |
Const |
Obligatoire. Type de stratégie. |
truncation_selection |
|
truncation_percentage |
entier |
Obligatoire. Pourcentage de travaux d’évaluation à annuler à chaque intervalle d’évaluation. |
|
|
evaluation_interval |
entier |
Fréquence d’application de la stratégie. |
|
1 |
delay_evaluation |
entier |
Nombre d’intervalles pour lesquels retarder la première évaluation de la stratégie. S’il est spécifié, la stratégie s’applique à chaque multiple de evaluation_interval supérieur ou égal à delay_evaluation. |
|
0 |
Expressions de paramètre
Option
| Clé |
Catégorie |
Descriptif |
Valeurs autorisées |
type |
Const |
Obligatoire. Type d’expression. |
choice |
values |
tableau |
Obligatoire. Liste des valeurs discrètes à partir de laquelle choisir. |
|
Randint
| Clé |
Catégorie |
Descriptif |
Valeurs autorisées |
type |
Const |
Obligatoire. Type d’expression. |
randint |
upper |
entier |
Obligatoire. Limite supérieure exclusive pour la plage d’entiers. |
|
Qlognormal, qnormal
| Clé |
Catégorie |
Descriptif |
Valeurs autorisées |
type |
Const |
Obligatoire. Type d’expression. |
qlognormal, qnormal |
mu |
nombre |
Obligatoire. Moyenne de la distribution normale. |
|
sigma |
nombre |
Obligatoire. Écart type de la distribution normale. |
|
q |
entier |
Obligatoire. Facteur de lissage. |
|
| Clé |
Catégorie |
Descriptif |
Valeurs autorisées |
type |
Const |
Obligatoire. Type d’expression. |
qloguniform, quniform |
min_value |
nombre |
Obligatoire. Valeur minimale de la plage (inclusive). |
|
max_value |
nombre |
Obligatoire. Valeur maximale de la plage (inclusive). |
|
q |
entier |
Obligatoire. Facteur de lissage. |
|
Lognormal, normal
| Clé |
Catégorie |
Descriptif |
Valeurs autorisées |
type |
Const |
Obligatoire. Type d’expression. |
lognormal, normal |
mu |
nombre |
Obligatoire. Moyenne de la distribution normale. |
|
sigma |
nombre |
Obligatoire. Écart type de la distribution normale. |
|
| Clé |
Catégorie |
Descriptif |
Valeurs autorisées |
type |
Const |
Obligatoire. Type d’expression. |
loguniform |
min_value |
nombre |
Obligatoire. La valeur minimale de la plage est exp(min_value) (inclusive). |
|
max_value |
nombre |
Obligatoire. La valeur maximale de la plage est exp(max_value) (inclusive). |
|
| Clé |
Catégorie |
Descriptif |
Valeurs autorisées |
type |
Const |
Obligatoire. Type d’expression. |
uniform |
min_value |
nombre |
Obligatoire. Valeur minimale de la plage (inclusive). |
|
max_value |
nombre |
Obligatoire. Valeur maximale de la plage (inclusive). |
|
Attributs de la clé limits
| Clé |
Catégorie |
Descriptif |
Valeur par défaut |
max_total_trials |
entier |
Nombre maximal de travaux d’évaluation. |
1000 |
max_concurrent_trials |
entier |
Nombre maximal de travaux d’évaluation qui peuvent s’exécuter simultanément. |
La valeur par défaut est max_total_trials. |
timeout |
entier |
Durée maximale en secondes pendant laquelle le travail de balayage entier est autorisé à s’exécuter. Une fois cette limite atteinte, le système annule le travail de balayage, y compris toutes ses essais. |
5184000 |
trial_timeout |
entier |
Durée maximale, en minutes, pendant laquelle l’exécution de chaque travail d’évaluation est autorisée. Une fois cette limite atteinte, le système annule la version d’évaluation. |
|
Attributs de la clé trial
| Clé |
Catégorie |
Descriptif |
Valeur par défaut |
command |
ficelle |
Obligatoire. 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 |
Obligatoire. L’environnement à utiliser pour le travail. Cette valeur peut être 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>.
Pour définir un environnement inline, suivez le schéma de l’environnement. Excluez les name propriétés et version les propriétés, car les environnements inline ne les prennent pas en charge. |
|
environment_variables |
objet |
Dictionnaire de paires nom-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. Une des configurations Mpi, PyTorch Configuration ou TensorFlow. |
|
resources.instance_count |
entier |
Nombre de nœuds à dédier au travail. |
1 |
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 |
| 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. Pour plus d’informations, consultez En savoir plus sur l’accès aux données. |
uri_file, , uri_foldermltable, ,mlflow_model |
uri_folder |
path |
ficelle |
Le chemin vers les données à utiliser comme entrée. Cette valeur peut être spécifiée 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 azureml:// du format URI, consultez la 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 azureml:<data_name>:<data_version> syntaxe 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é.
Pour simplement l’URL de l’emplacement de stockage de l’artefact de données ou des artefacts, au lieu de monter ou de télécharger les données proprement dites, utilisez le direct mode. Cela passe l’URL de l’emplacement de stockage en tant qu’entrée de travail. Dans ce cas, vous êtes entièrement responsable de la gestion des informations d’identification pour accéder au stockage. |
ro_mount, , downloaddirect |
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_file, , uri_foldermltable, ,mlflow_model |
uri_folder |
mode |
ficelle |
Mode de remise du fichier de sortie ou des fichiers 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, tous 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 |
Vous pouvez utiliser la az ml job commande pour gérer les travaux Azure Machine Learning.
Exemples
Consultez les exemples de référentiel GitHub pour obtenir des exemples. Vous en trouverez plusieurs ici :
YAML : hello sweep
$schema: https://azuremlschemas.azureedge.net/latest/sweepJob.schema.json
type: sweep
trial:
command: >-
python hello-sweep.py
--A ${{inputs.A}}
--B ${{search_space.B}}
--C ${{search_space.C}}
code: src
environment: azureml:AzureML-sklearn-1.5@latest
inputs:
A: 0.5
sampling_algorithm: random
search_space:
B:
type: choice
values: ["hello", "world", "hello_world"]
C:
type: uniform
min_value: 0.1
max_value: 1.0
objective:
goal: minimize
primary_metric: random_metric
limits:
max_total_trials: 4
max_concurrent_trials: 2
timeout: 3600
display_name: hello-sweep-example
experiment_name: hello-sweep-example
description: Hello sweep job example.
YAML : hello sweep using sobol and a seed value
$schema: https://azuremlschemas.azureedge.net/latest/sweepJob.schema.json
type: sweep
trial:
code: src
command: >-
python main.py
--iris-csv ${{inputs.iris_csv}}
--learning-rate ${{search_space.learning_rate}}
--boosting ${{search_space.boosting}}
environment: azureml:AzureML-lightgbm-3.3@latest
inputs:
iris_csv:
type: uri_file
path: https://azuremlexamples.blob.core.windows.net/datasets/iris.csv
compute: azureml:cpu-cluster
sampling_algorithm:
type: random
rule: sobol
seed: 123
search_space:
learning_rate:
type: uniform
min_value: 0.01
max_value: 0.9
boosting:
type: choice
values: ["gbdt", "dart"]
objective:
goal: minimize
primary_metric: test-multi_logloss
limits:
max_total_trials: 20
max_concurrent_trials: 10
timeout: 7200
display_name: lightgbm-iris-sweep-example
experiment_name: lightgbm-iris-sweep-example
description: Run a hyperparameter sweep job for LightGBM on Iris dataset.
YAML : réglage d’hyperparamètre du modèle Python de base
$schema: https://azuremlschemas.azureedge.net/latest/sweepJob.schema.json
type: sweep
trial:
code: src
command: >-
python main.py
--iris-csv ${{inputs.iris_csv}}
--C ${{search_space.C}}
--kernel ${{search_space.kernel}}
--coef0 ${{search_space.coef0}}
environment: azureml:AzureML-sklearn-1.5@latest
inputs:
iris_csv:
type: uri_file
path: wasbs://datasets@azuremlexamples.blob.core.windows.net/iris.csv
compute: azureml:cpu-cluster
sampling_algorithm: random
search_space:
C:
type: uniform
min_value: 0.5
max_value: 0.9
kernel:
type: choice
values: ["rbf", "linear", "poly"]
coef0:
type: uniform
min_value: 0.1
max_value: 1
objective:
goal: minimize
primary_metric: training_f1_score
limits:
max_total_trials: 20
max_concurrent_trials: 10
timeout: 7200
display_name: sklearn-iris-sweep-example
experiment_name: sklearn-iris-sweep-example
description: Sweep hyperparemeters for training a scikit-learn SVM on the Iris dataset.
Étapes suivantes