Schéma YAML de déploiement par lots CLI (v2)

S’APPLIQUE À :Extension Azure ML 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

Étapes suivantes