Schéma YAML de déploiement par lots CLI (v2)
S’APPLIQUE À : Extension ml Azure CLI v2 (actuelle)
Le schéma JSON source se trouve à l’adresse https://azuremlschemas.azureedge.net/latest/batchDeployment.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é | 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. |
||
name |
string | Obligatoire. Nom du déploiement. | ||
description |
string | Description du déploiement. | ||
tags |
object | Dictionnaire d’étiquettes pour le déploiement. | ||
endpoint_name |
string | Obligatoire. Nom du point de terminaison sous lequel créer le déploiement. | ||
type |
string | Obligatoire. Type de déploiement par lots. Utilisez model pour les modèles de déploiement et pipeline pour les déploiements de composants de pipeline. Nouveautés de la version 1.7. |
model , pipeline |
model |
settings |
object | Configuration du déploiement. Consultez la référence YAML spécifique pour le modèle et le composant de pipeline pour connaître les valeurs autorisées. Nouveautés de la version 1.7. |
Conseil
La clé type
a été introduite dans la version 1.7 de l’extension CLI et les versions ultérieures. Pour prendre entièrement en charge la compatibilité descendante, cette propriété a la valeur par défaut model
. Toutefois, si elle n’est pas explicitement indiquée, la clé settings
n’est pas appliquée et toutes les propriétés des paramètres de modèle de déploiement doivent être indiquées à la racine de la spécification YAML.
Syntaxe YAML pour les modèles de déploiement
Lorsque type: model
, la syntaxe suivante est appliquée :
Clé | Type | Description | Valeurs autorisées | Valeur par défaut |
---|---|---|---|---|
model |
chaîne ou objet | Obligatoire. Modèle à utiliser pour le déploiement. Cette valeur peut être une référence à un modèle versionné existant dans l’espace de travail ou une spécification de modèle inline. Pour référencer un modèle existant, utilisez la syntaxe azureml:<model-name>:<version> . Pour définir un modèle inline, suivez le schéma du modèle. En guise de bonne pratique pour les scénarios de production, vous devez créer le modèle séparément et le référencer ici. |
||
code_configuration |
object | Configuration de la logique du code de scoring. Cette propriété n’est pas requise si votre modèle est au format MLflow. |
||
code_configuration.code |
string | Répertoire local qui contient tout le code source Python de scoring du modèle. | ||
code_configuration.scoring_script |
string | Fichier Python dans le répertoire ci-dessus. Ce fichier doit avoir une fonction init() et une fonction run() . Utilisez la fonction init() pour toute préparation coûteuse ou courante (par exemple, charger le modèle en mémoire). init() est appelé une seule fois au début du processus. Utilisez run(mini_batch) pour effectuer le scoring de chaque entrée. La valeur de mini_batch est une liste de chemins de fichiers. La fonction run() doit retourner un dataframe pandas ou un tableau. Chaque élément retourné indique une exécution réussie d’un élément d’entrée dans le mini_batch . Pour plus d’informations sur la création du script de scoring, consultez Compréhension du script de scoring. |
||
environment |
chaîne ou objet | Environnement à utiliser pour le déploiement. Cette valeur peut être une référence à un environnement versionné existant dans l’espace de travail ou une spécification d’environnement inline. Cette propriété n’est pas requise si votre modèle est au format MLflow. 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. En guise de bonne pratique pour les scénarios de production, vous devez créer l’environnement séparément et le référencer ici. |
||
compute |
string | Obligatoire. Nom de la cible de calcul sur laquelle exécuter les travaux de scoring par lots. Cette valeur doit être une référence à un calcul existant dans l’espace de travail avec la syntaxe azureml:<compute-name> . |
||
resources.instance_count |
entier | Nombre de nœuds à utiliser pour chaque travail de scoring par lots. | 1 |
|
settings |
object | Configuration spécifique du modèle de déploiement. Modification dans la version 1.7. |
||
settings.max_concurrency_per_instance |
entier | Nombre maximal d’exécutions scoring_script parallèles par instance. |
1 |
|
settings.error_threshold |
entier | Nombre d’échecs de fichier qui doivent être ignorés. Si le nombre d’erreurs pour la totalité de l’entrée dépasse cette valeur, le travail de scoring par lots est interrompu. error_threshold est destiné à l’ensemble de l’entrée et non aux mini-lots individuels. En cas d’omission, un nombre quelconque d’échecs de fichiers est autorisé sans interrompre la tâche. |
-1 |
|
settings.logging_level |
string | Niveau de verbosité du journal. | warning , info , debug |
info |
settings.mini_batch_size |
entier | Nombre de fichiers qu’un code_configuration.scoring_script peut traiter en un appel run() . |
10 |
|
settings.retry_settings |
object | Paramètres de nouvelle tentative pour le scoring de chaque mini-lot. | ||
settings.retry_settings.max_retries |
entier | Nombre maximal de nouvelles tentatives pour un mini-lot ayant échoué ou dépassé. | 3 |
|
settings.retry_settings.timeout |
entier | Le délai d’attente en secondes pour le scoring d’un seul mini lot. Utilisez des valeurs plus élevées lorsque la taille du mini-lot est plus grande ou que l’exécution du modèle est plus coûteuse. | 30 |
|
settings.output_action |
string | Indique le mode d’organisation de la sortie dans le fichier de sortie. Utilisez summary_only si vous générez les fichiers de sortie comme indiqué dans Personnaliser les sorties dans les modèles de déploiement. Utilisez append_row si vous renvoyez des prédictions dans le cadre de l’instruction return de fonction run() . |
append_row , summary_only |
append_row |
settings.output_file_name |
string | Nom du fichier de sortie de scoring par lots. | predictions.csv |
|
settings.environment_variables |
object | Dictionnaire de paires clé-valeur de variable d’environnement à définir pour chaque travail de scoring par lots. |
Syntaxe YAML pour les déploiements de composants de pipeline
Lorsque type: pipeline
, la syntaxe suivante est appliquée :
Clé | Type | Description | Valeurs autorisées | Valeur par défaut |
---|---|---|---|---|
component |
chaîne ou objet | Obligatoire. Le composant de pipeline utilisé pour le déploiement. Cette valeur peut être une référence à un composant de pipeline avec version existant dans l’espace de travail ou dans un registre, ou une spécification de pipeline incluse. Pour référencer un composant existant, utilisez la syntaxe azureml:<component-name>:<version> . Pour définir un composant de pipeline inclus, suivez le Schéma du composant de pipeline. En guise de meilleure pratique pour les scénarios de production, vous devez créer le composant séparément et le référencer ici. Nouveautés de la version 1.7. |
||
settings |
object | Paramètres par défaut pour le travail de pipeline. Consultez les Attributs de la clé de paramètres pour l’ensemble des propriétés configurables. Nouveautés de la version 1.7. |
Remarques
La commande az ml batch-deployment
peut être utilisée pour gérer les déploiements de lots Azure Machine Learning.
Exemples
Des exemples sont disponibles dans le référentiel d’exemples GitHub. Certaines d’entre elles sont référencées ci-dessous :
YAML : Modèle de déploiement MLflow
Un modèle de déploiement contenant un modèle MLflow, qui ne nécessite pas d’indiquer code_configuration
ou environment
:
$schema: https://azuremlschemas.azureedge.net/latest/modelBatchDeployment.schema.json
endpoint_name: heart-classifier-batch
name: classifier-xgboost-mlflow
description: A heart condition classifier based on XGBoost
type: model
model: azureml:heart-classifier-mlflow@latest
compute: azureml:batch-cluster
resources:
instance_count: 2
settings:
max_concurrency_per_instance: 2
mini_batch_size: 2
output_action: append_row
output_file_name: predictions.csv
retry_settings:
max_retries: 3
timeout: 300
error_threshold: -1
logging_level: info
YAML : Modèle de déploiement personnalisé avec script de scoring
Un modèle de déploiement indiquant le script de scoring à utiliser et l’environnement :
$schema: https://azuremlschemas.azureedge.net/latest/modelBatchDeployment.schema.json
name: mnist-torch-dpl
description: A deployment using Torch to solve the MNIST classification dataset.
endpoint_name: mnist-batch
type: model
model:
name: mnist-classifier-torch
path: model
code_configuration:
code: code
scoring_script: batch_driver.py
environment:
name: batch-torch-py38
image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
conda_file: environment/conda.yaml
compute: azureml:batch-cluster
resources:
instance_count: 1
settings:
max_concurrency_per_instance: 2
mini_batch_size: 10
output_action: append_row
output_file_name: predictions.csv
retry_settings:
max_retries: 3
timeout: 30
error_threshold: -1
logging_level: info
YAML : Modèles de déploiement hérités
Si l’attribut type
n’est pas indiqué dans le YAML, un modèle de déploiement est déduit. Toutefois, la clé settings
ne sera pas disponible et les propriétés doivent être placées à la racine du YAML, comme indiqué dans cet exemple. Il est fortement recommandé de toujours spécifier la propriété type
.
$schema: https://azuremlschemas.azureedge.net/latest/batchDeployment.schema.json
endpoint_name: heart-classifier-batch
name: classifier-xgboost-mlflow
description: A heart condition classifier based on XGBoost
model: azureml:heart-classifier-mlflow@latest
compute: azureml:batch-cluster
resources:
instance_count: 2
max_concurrency_per_instance: 2
mini_batch_size: 2
output_action: append_row
output_file_name: predictions.csv
retry_settings:
max_retries: 3
timeout: 300
error_threshold: -1
logging_level: info
YAML : déploiement de composant de pipeline
Un déploiement de composant de pipeline simple :
$schema: https://azuremlschemas.azureedge.net/latest/pipelineComponentBatchDeployment.schema.json
name: hello-batch-dpl
endpoint_name: hello-pipeline-batch
type: pipeline
component: azureml:hello_batch@latest
settings:
default_compute: batch-cluster