Schéma YAML de déploiement en ligne géré avec l’interface CLI (v2)

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

Le schéma JSON source se trouve à l’adresse https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.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.

Les règles de nommage sont définies ici.
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.
model chaîne ou objet 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>:<model-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.

Ce champ est facultatif pour les scénarios de déploiement de conteneurs personnalisés.
model_mount_path string Chemin pour monter le modèle dans un conteneur personnalisé. S’applique uniquement aux scénarios de déploiement de conteneurs personnalisés. Si le champ model est spécifié, il est monté sur ce chemin dans le conteneur.
code_configuration object Configuration de la logique du code de scoring.

Ce champ est facultatif pour les scénarios de déploiement de conteneurs personnalisés.
code_configuration.code string Chemin local au répertoire de code source pour le scoring du modèle.
code_configuration.scoring_script string Chemin relatif au fichier de scoring dans le répertoire de code source.
environment_variables object Dictionnaire de paires clé-valeur de variable d’environnement à définir dans le conteneur de déploiement. Vous pouvez accéder à ces variables d’environnement à partir de vos scripts de scoring.
environment chaîne ou objet Obligatoire. 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.

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.
instance_type string Obligatoire. Taille de machine virtuelle à utiliser pour le déploiement. Pour obtenir la liste des tailles prises en charge, consultez la liste des références SKU des points de terminaison en ligne managés.
instance_count entier Obligatoire. Nombre d’instances à utiliser pour le déploiement. Spécifiez la valeur en fonction de la charge de travail que vous attendez. Pour une haute disponibilité, Microsoft vous recommande de la définir sur au moins 3.

Vous pouvez mettre à jour instance_count après la création du déploiement en utilisant la commande az ml online-deployment update.

Nous réservons 20 % en plus pour effectuer des mises à niveau. Pour plus d’informations, consultez l’allocation de quota de machines virtuelles pour le déploiement.
app_insights_enabled booléen Indique s’il faut activer l’intégration à l’instance Azure Application Insights associée à votre espace de travail. false
scale_settings object Paramètres de mise à l’échelle pour le déploiement. Actuellement, seul le type de mise à l’échelle default est pris en charge. Il est donc inutile de spécifier cette propriété.

Avec le type de mise à l’échelle default, vous pouvez augmenter et diminuer manuellement le nombre d’instances après la création du déploiement en mettant à jour la propriété instance_count ou créer une stratégie de mise à l’échelle automatique.
scale_settings.type string Type de mise à l’échelle. default default
data_collector object Paramètres de collecte de données pour le déploiement. Consultez DataCollector pour connaître l’ensemble de propriétés configurables.
request_settings object Paramètres de la demande de scoring pour le déploiement. Consultez RequestSettings pour obtenir l’ensemble des propriétés configurables.
liveness_probe object Paramètres de probe liveness utilisée pour monitorer régulièrement l’intégrité du conteneur. Consultez ProbeSettings pour obtenir l’ensemble des propriétés configurables.
readiness_probe object Paramètres de la probe readiness utilisée pour valider si le conteneur est prêt à traiter le trafic. Consultez ProbeSettings pour obtenir l’ensemble des propriétés configurables.
egress_public_network_access string Remarque : cette clé s’applique lorsque vous utilisez la méthode d’isolement réseau héritée pour sécuriser la communication sortante pour un déploiement. Nous vous recommandons vivement de sécuriser les communications sortantes pour les déploiements en utilisant plutôt un réseau virtuel managé par l’espace de travail.

Cet indicateur sécurise le déploiement en limitant la communication entre le déploiement et les ressources Azure utilisées par celui-ci. Définissez sur disabled pour vous assurer que le téléchargement du modèle, du code et des images requis par votre déploiement est sécurisé avec un point de terminaison privé. Cet indicateur s’applique uniquement aux points de terminaison en ligne managés.
enabled, disabled enabled

RequestSettings

Clé Type Description Valeur par défaut
request_timeout_ms entier Délai d’expiration de scoring en millisecondes. Remarquez que la valeur maximale autorisée est 180000 millisecondes. Pour plus d’informations, consultez les limites des points de terminaison en ligne. 5000
max_concurrent_requests_per_instance entier Nombre maximal de demandes simultanées par instance autorisées pour le déploiement.

Remarque : Si vous utilisez un serveur d’inférence Azure Machine Learning ou des images d’inférence Azure Machine Learning, votre modèle doit être configuré pour gérer les requêtes simultanées. Pour ce faire, passez WORKER_COUNT: <int> comme variable d’environnement. Pour plus d’informations sur WORKER_COUNT, consultez Paramètres du serveur d’inférence Azure Machine Learning

Remarque : Définissez le nombre de requêtes que votre modèle peut traiter simultanément sur un seul nœud. Définir cette valeur avec un chiffre supérieur à la concurrence réelle de votre modèle peut entraîner des latences plus élevées. La définition de cette valeur trop faible peut entraîner des nœuds sous-utilisés. La définition trop faible peut également entraîner le rejet des requêtes avec un code d’état HTTP 429, car le système choisit d’échouer rapidement. Pour plus d’informations, consultez Résolution des problèmes de points de terminaison en ligne : codes d’état HTTP.
1
max_queue_wait_ms entier (Déconseillé) La durée maximale en millisecondes pendant laquelle une requête reste dans la file d’attente. (À présent, augmentez request_timeout_ms pour prendre en compte les retards de mise en réseau/file d’attente) 500

ProbeSettings

Clé Type Description Valeur par défaut
initial_delay entier Nombre de secondes après le démarrage du conteneur avant le lancement de la probe. La valeur minimale est 1. 10
period entier Fréquence (en secondes) d’exécution de la probe. 10
timeout entier Délai d’expiration de la probe en secondes. La valeur minimale est 1. 2
success_threshold entier Nombre minimal de réussites consécutives pour que la probe soit considérée comme réussie après avoir échoué. La valeur minimale est 1 pour la sonde de préparation. La valeur de la probe liveness est fixe en tant que 1. 1
failure_threshold entier En cas d’échec d’une probe, le réessaie failure_threshold fois avant d’abandonner. Dans le cas d’une probe liveness, un abandon signifie que le conteneur est redémarré. Dans le cas d’une probe readiness, le conteneur est marqué comme non prêt. La valeur minimale est 1. 30

DataCollector

Clé Type Description Valeur par défaut
sampling_rate float Pourcentage des données à collecter, représenté sous forme de taux décimal. Par exemple, la valeur 1,0 représente la collecte de 100 % des données. 1.0
rolling_rate string Fréquence de partitionnement des données dans le stockage. La valeur peut être : Minute, Heure, Jour, Mois, Année. Hour
collections object Ensemble de collection_name individuels et leurs paramètres respectifs pour ce déploiement.
collections.<collection_name> object Regroupement logique des données d’inférence de production à collecter (exemple : model_inputs). Il existe deux noms réservés : request et response, qui correspondent à la collecte de données de charge utile de requête et de réponse HTTP respectivement. Tous les autres noms sont arbitraires et peuvent être définis par l’utilisateur.

Remarque : Chaque collection_name doit correspondre au nom de l’objet Collector utilisé dans le déploiement score.py pour collecter les données d’inférence de production. Pour plus d’informations sur la collecte de données de charge utile et la collecte de données avec le SDK Python fourni, consultez Collecter des données à partir de modèles en production.
collections.<collection_name>.enabled boolean Indique si la collecte de données doit être activée pour le collection_name spécifié. 'False''
collections.<collection_name>.data.name string Nom de la ressource de données à inscrire avec les données collectées. <endpoint>-<deployment>-<collection_name>
collections.<collection_name>.data.path string Chemin complet du magasin de données Azure Machine Learning dans lequel les données collectées doivent être inscrites comme ressource de données. azureml://datastores/workspaceblobstore/paths/modelDataCollector/<endpoint_name>/<deployment_name>/<collection_name>
collections.<collection_name>.data.version entier Version de la ressource de données à inscrire avec les données collectées dans le stockage Blob. 1

Remarques

La commande az ml online-deployment peut être utilisée pour gérer les déploiements en ligne managés d’Azure Machine Learning.

Exemples

Des exemples sont disponibles dans le référentiel d’exemples GitHub. Vous en trouverez plusieurs ci-dessous.

YAML : de base

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
endpoint_name: my-endpoint
model:
  path: ../../model-1/model/
code_configuration:
  code: ../../model-1/onlinescoring/
  scoring_script: score.py
environment: 
  conda_file: ../../model-1/environment/conda.yaml
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: green
endpoint_name: my-endpoint
model:
  path: ../../model-2/model/
code_configuration:
  code: ../../model-2/onlinescoring/
  scoring_script: score.py
environment:
  conda_file: ../../model-2/environment/conda.yaml
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1

YAML : identité affectée par le système

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
model:
  path: ../../model-1/model/
code_configuration:
  code: ../../model-1/onlinescoring/
  scoring_script: score_managedidentity.py
environment:
  conda_file: ../../model-1/environment/conda-managedidentity.yaml
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1
environment_variables:
  STORAGE_ACCOUNT_NAME: "storage_place_holder"
  STORAGE_CONTAINER_NAME: "container_place_holder"
  FILE_NAME: "file_place_holder"

YAML : identité affectée par l’utilisateur

$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json
name: blue
model:
  path: ../../model-1/model/
code_configuration:
  code: ../../model-1/onlinescoring/
  scoring_script: score_managedidentity.py
environment: 
  conda_file: ../../model-1/environment/conda-managedidentity.yaml
  image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest
instance_type: Standard_DS3_v2
instance_count: 1
environment_variables:
  STORAGE_ACCOUNT_NAME: "storage_place_holder"
  STORAGE_CONTAINER_NAME: "container_place_holder"
  FILE_NAME: "file_place_holder"
  UAI_CLIENT_ID: "uai_client_id_place_holder"

YAML : data_collector

$schema: http://azureml/sdk-2-0/OnlineDeployment.json

endpoint_name: my_endpoint 
name: blue 
model: azureml:my-model-m1:1 
environment: azureml:env-m1:1 
data_collector:
   collections:
       model_inputs:
           enabled: 'True' 
       model_outputs:
           enabled: 'True'
$schema: http://azureml/sdk-2-0/OnlineDeployment.json

endpoint_name: my_endpoint
name: blue 
model: azureml:my-model-m1:1 
environment: azureml:env-m1:1 
data_collector:
   collections:
     request: 
         enabled: 'True'
         data: 
           name: my_request_data_asset 
           path: azureml://datastores/workspaceblobstore/paths/modelDataCollector/my_endpoint/blue/request 
           version: 1 
     response:
         enabled: 'True' 
         data: 
           name: my_response_data_asset
           path: azureml://datastores/workspaceblobstore/paths/modelDataCollector/my_endpoint/blue/response
           version: 1 
     model_inputs:
         enabled: 'True'
         data: 
           name: my_model_inputs_data_asset
           path: azureml://datastores/workspaceblobstore/paths/modelDataCollector/my_endpoint/blue/model_inputs
           version: 1 
     model_outputs:
         enabled: 'True'
         data: 
           name: my_model_outputs_data_asset
           path: azureml://datastores/workspaceblobstore/paths/modelDataCollector/my_endpoint/blue/model_outputs
           version: 1

Étapes suivantes