Dans cet article, vous allez apprendre à déployer votre modèle sur un point de terminaison en ligne pour une utilisation en temps réel de l’inférence. Vous commencez par déployer un modèle sur votre ordinateur local pour déboguer les erreurs. Ensuite, vous déployez et testez le modèle dans Azure, affichez les journaux de déploiement et surveillez le contrat de niveau de service (SLA). À la fin de cet article, vous disposerez d’un point de terminaison HTTPS/REST évolutif que vous pourrez utiliser pour l’inférence en temps réel.
Les points de terminaison en ligne sont des points de terminaison utilisés pour l’inférence en temps réel. Il existe deux types de points de terminaison en ligne : les points de terminaison en ligne managés et les points de terminaison en ligne Kubernetes. Pour plus d’informations sur les points de terminaison et les différences entre les points de terminaison en ligne managés et les points de terminaison en ligne Kubernetes, consultez Que sont les points de terminaison Azure Machine Learning ?
Les points de terminaison en ligne managés vous aident à déployer vos modèles Machine Learning en un tournemain. Les points de terminaison en ligne managés fonctionnent avec des ordinateurs de processeur et GPU puissants dans Azure de manière évolutive et entièrement gérée. Les points de terminaison en ligne gérés prennent en charge la fourniture, la mise à l’échelle et le monitoring de vos modèles, ce qui vous évite la surcharge liée à la configuration et à la gestion de l’infrastructure sous-jacente.
L’exemple principal de ce document utilise des points de terminaison en ligne managés pour le déploiement. Pour utiliser Kubernetes à la place, consultez les notes dans ce document qui sont incluses avec la discussion sur les points de terminaison en ligne managés.
Les exemples CLI de cet article supposent que vous utilisez l’interpréteur de commandes Bash (ou compatible). Par exemple, à partir d’un système Linux ou d’un sous-système Windows pour Linux.
Les contrôles d’accès en fonction du rôle Azure (Azure RBAC) sont utilisés pour accorder l’accès aux opérations dans Azure Machine Learning. Pour effectuer les étapes décrites dans cet article, votre compte d’utilisateur doit avoir le rôle Propriétaire ou Contributeur sur l’espace de travail Azure Machine Learning, ou un rôle personnalisé autorisant Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. Si vous utilisez le studio pour créer/gérer des points de terminaison/déploiements en ligne, vous aurez besoin d’une autorisation supplémentaire « Microsoft.Resources/deployments/write » à partir du propriétaire du groupe de ressources. Pour plus d’informations, consultez Gérer l’accès à un espace de travail Azure Machine Learning.
(Facultatif) Pour déployer localement, vous devez installer Moteur Docker sur votre ordinateur local. Nous recommandons fortement cette option pour déboguer les problèmes plus facilement.
Les contrôles d’accès en fonction du rôle Azure (Azure RBAC) sont utilisés pour accorder l’accès aux opérations dans Azure Machine Learning. Pour effectuer les étapes décrites dans cet article, votre compte d’utilisateur doit avoir le rôle Propriétaire ou Contributeur sur l’espace de travail Azure Machine Learning, ou un rôle personnalisé autorisant Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. Pour plus d’informations, consultez Gérer l’accès à un espace de travail Azure Machine Learning.
(Facultatif) Pour déployer localement, vous devez installer Moteur Docker sur votre ordinateur local. Nous recommandons fortement cette option pour déboguer les problèmes plus facilement.
Avant de suivre les étapes décrites dans cet article, vérifiez que vous disposez des composants requis suivants :
Un espace de travail Azure Machine Learning et une instance de calcul. Si vous ne disposez pas de ces ressources et que vous souhaitez les créer, suivez les étapes du guide de démarrage rapide : Créer des ressources d’espace de travail article.
Les contrôles d’accès en fonction du rôle Azure (Azure RBAC) sont utilisés pour accorder l’accès aux opérations dans Azure Machine Learning. Pour effectuer les étapes décrites dans cet article, votre compte d’utilisateur doit avoir le rôle Propriétaire ou Contributeur sur l’espace de travail Azure Machine Learning, ou un rôle personnalisé autorisant Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. Pour plus d’informations, consultez Gérer l’accès à un espace de travail Azure Machine Learning.
Notes
Bien qu’Azure CLI et l’extension CLI pour le Machine Learning soient utilisés dans ces étapes, elles ne sont pas l’objet principal de cette procédure. Ils sont plutôt utilisés comme utilitaires, transmettant des modèles à Azure et vérifiant l’état des déploiements de modèles.
Avant de suivre les étapes décrites dans cet article, vérifiez que vous disposez des composants requis suivants :
Les exemples CLI de cet article supposent que vous utilisez l’interpréteur de commandes Bash (ou compatible). Par exemple, à partir d’un système Linux ou d’un sous-système Windows pour Linux.
Les contrôles d’accès en fonction du rôle Azure (Azure RBAC) sont utilisés pour accorder l’accès aux opérations dans Azure Machine Learning. Pour effectuer les étapes décrites dans cet article, votre compte d’utilisateur doit avoir le rôle Propriétaire ou Contributeur sur l’espace de travail Azure Machine Learning, ou un rôle personnalisé autorisant Microsoft.MachineLearningServices/workspaces/onlineEndpoints/*. Pour plus d’informations, consultez Gérer l’accès à un espace de travail Azure Machine Learning.
Vérifiez que vous disposez d’un quota de machine virtuelle suffisant alloué pour le déploiement. Azure Machine Learning réserve 20 % de vos ressources de calcul pour effectuer des mises à niveau sur certaines références SKU de machine virtuelle. Par exemple, si vous demandez 10 instances dans un déploiement, vous devez disposer d’un quota de 12 pour chaque nombre de cœurs pour la référence SKU de la machine virtuelle. L’échec du compte des ressources de calcul supplémentaires entraîne une erreur. Certaines références SKU de machine virtuelle sont exemptées de la réservation de quota supplémentaire. Pour plus d’informations sur l’allocation de quota, consultez allocation de quota de machines virtuelles pour le déploiement.
Vous pouvez également utiliser le quota à partir du pool de quotas partagés d’Azure Machine Learning pendant une durée limitée. Azure Machine Learning fournit un pool de quotas partagé auquel les utilisateurs de diverses régions peuvent accéder pour effectuer des tests pendant une durée limitée, en fonction de la disponibilité.
Lorsque vous utilisez le studio pour déployer des modèles Llama-2, Phi, Nemotron, Mistral, Dolly et Deci-DeciLM à partir du catalogue de modèles vers un point de terminaison en ligne managé, Azure Machine Learning vous permet d’accéder à son pool de quotas partagés pendant une courte période afin de pouvoir effectuer des tests. Pour plus d’informations sur le pool de quotas partagés, consultez quota partagé Azure Machine Learning.
Si vous n’avez pas encore défini les paramètres par défaut pour l’interface CLI Azure, enregistrez vos paramètres par défaut. Pour éviter de transmettre plusieurs fois les valeurs de votre abonnement, de votre espace de travail et de votre groupe de ressources, exécutez le code suivant :
az account set --subscription <subscription ID>
az configure --defaults workspace=<Azure Machine Learning workspace name> group=<resource group>
Cloner le référentiel d’exemples
Pour suivre cet article, commencez par cloner le dépôt d’exemples (azureml-examples). Ensuite, exécutez le code suivant pour accéder au répertoire cli/ du dépôt :
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples
cd cli
Conseil
Utilisez --depth 1 pour cloner uniquement le dernier commit dans le dépôt, ce qui réduit le temps nécessaire à l’exécution de l’opération.
Les commandes de ce tutoriel se trouvent dans les fichiers deploy-local-endpoint.sh et deploy-managed-online-endpoint.sh du répertoire cli, tandis que les fichiers de configuration YAML se trouvent dans le sous-répertoire endpoints/online/managed/sample/.
Notes
Les fichiers de configuration YAML pour les points de terminaison en ligne Kubernetes se trouvent dans le sous-répertoire endpoints/online/kubernetes/.
Cloner le référentiel d’exemples
Pour exécuter les exemples d’entraînement, commencez par cloner le dépôt d’exemples (azureml-examples) et placez-le dans le répertoire azureml-examples/sdk/python/endpoints/online/managed :
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/sdk/python/endpoints/online/managed
Conseil
Utilisez --depth 1 pour cloner uniquement le dernier commit dans le dépôt, ce qui réduit le temps nécessaire à l’exécution de l’opération.
Les informations contenues dans cet article sont basées sur le notebook online-endpoints-simple-deployment.ipynb. Il contient le même contenu que cet article, bien que l’ordre des codes soit légèrement différent.
Se connecter à un espace de travail Azure Machine Learning
L’espace de travail est la ressource de niveau supérieur pour Azure Machine Learning. Il fournit un emplacement centralisé dans lequel exploiter tous les artefacts que vous créez lorsque vous utilisez Azure Machine Learning. Dans cette section, vous vous connectez à l’espace de travail dans lequel vous allez effectuer les tâches de déploiement. Ouvrez votre notebook online-endpoints-simple-deployment.ipynb pour suivre l’article.
Importez les bibliothèques nécessaires :
# import required libraries
from azure.ai.ml import MLClient
from azure.ai.ml.entities import (
ManagedOnlineEndpoint,
ManagedOnlineDeployment,
Model,
Environment,
CodeConfiguration
)
from azure.identity import DefaultAzureCredential
Notes
Si vous utilisez le point de terminaison en ligne Kubernetes, importez la classe KubernetesOnlineEndpoint et KubernetesOnlineDeployment à partir de la bibliothèque azure.ai.ml.entities.
Configurez les détails de l’espace de travail et obtenez un handle pour l’espace de travail :
Pour vous connecter à un espace de travail, vous avez besoin de paramètres d’identificateur : un abonnement, un groupe de ressources et un nom d’espace de travail. Vous utilisez ces détails dans le MLClient de azure.ai.ml pour obtenir un handle vers l’espace de travail Azure Machine Learning requis. Cet exemple utilise l’authentification Azure par défaut.
# enter details of your Azure Machine Learning workspace
subscription_id = "<SUBSCRIPTION_ID>"
resource_group = "<RESOURCE_GROUP>"
workspace = "<AZUREML_WORKSPACE_NAME>"
# get a handle to the workspace
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace
)
Si Git est installé sur votre ordinateur local, vous pouvez suivre les instructions pour cloner le référentiel d’exemples. Sinon, suivez les instructions pour télécharger des fichiers à partir du référentiel d’exemples.
Cloner le référentiel d’exemples
Pour suivre cet article, commencez par cloner le référentiel d’exemples (azureml-examples), puis basculez vers le répertoire azureml-examples/cli/endpoints/online/model-1.
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples/cli/endpoints/online/model-1
Conseil
Utilisez --depth 1 pour cloner uniquement le dernier commit dans le dépôt, ce qui réduit le temps nécessaire à l’exécution de l’opération.
Télécharger des fichiers à partir du référentiel d’exemples
Si vous avez cloné le référentiel d’exemples, votre ordinateur local dispose déjà de copies des fichiers pour cet exemple et vous pouvez passer à la section suivante. Si vous n’avez pas cloné le référentiel, vous pouvez le télécharger sur votre ordinateur local.
Accédez au bouton <>Code de la page, puis sélectionnez Télécharger le ZIP sous l’onglet Local.
Recherchez le dossier /cli/endpoints/online/model-1/model et le fichier /cli/endpoints/online/model-1/onlinescoring/score.py.
Définir des variables d’environnement
Définissez les variables d’environnement suivantes, car elles sont utilisées dans les exemples de cet article. Remplacez les valeurs par votre ID d’abonnement Azure, la région Azure où se trouve votre espace de travail, le groupe de ressources qui contient l’espace de travail et le nom de l’espace de travail :
export SUBSCRIPTION_ID="your Azure subscription ID"
export LOCATION="Azure region where your workspace is located"
export RESOURCE_GROUP="Azure resource group that contains your workspace"
export WORKSPACE="Azure Machine Learning workspace name"
Quelques exemples de modèles vous obligent à charger des fichiers dans le magasin d’objets blob Azure pour votre espace de travail. Les étapes suivantes interrogent l’espace de travail et stockent ces informations dans les variables d’environnement utilisées dans les exemples :
Pour suivre cet article, commencez par cloner le dépôt d’exemples (azureml-examples). Ensuite, exécutez le code suivant pour accéder au répertoire d’exemples :
git clone --depth 1 https://github.com/Azure/azureml-examples
cd azureml-examples
Conseil
Utilisez --depth 1 pour cloner uniquement le dernier commit dans le dépôt, ce qui réduit le temps nécessaire à l’exécution de l’opération.
Définir le point de terminaison
Pour définir un point de terminaison en ligne, spécifiez le nom de point de terminaison et le mode d’authentification. Pour plus d’informations sur les points de terminaison en ligne managés, consultez points de terminaison en ligne.
Pour définir le nom de votre point de terminaison, exécutez la commande suivante. Remplacez YOUR_ENDPOINT_NAME par un nom unique dans la région Azure. Pour plus d’informations sur les règles de nommage, consultez limites de point de terminaison.
Pour Linux, exécutez cette commande :
export ENDPOINT_NAME="<YOUR_ENDPOINT_NAME>"
Configurer le point de terminaison
L’extrait de code suivant montre le fichier endpoints/online/managed/sample/endpoint.yml :
(Facultatif) Schéma YAML. Pour voir toutes les options disponibles dans le fichier YAML, vous pouvez consulter le schéma dans l’extrait de code précédent avec un navigateur.
name
Nom du point de terminaison.
auth_mode
Utilisez key pour l’authentification basée sur les clés. Utilisez aml_token pour l’authentification Azure Machine Learning basée sur les jetons. Utilisez aad_token pour l’authentification basée sur le jeton Microsoft Entra (préversion). Pour plus d’informations sur l’authentification, consultez Authentifier les clients pour les points de terminaison en ligne.
Configurer un point de terminaison
Commencez par définir le nom du point de terminaison en ligne, puis configurez le point de terminaison.
Votre nom de point de terminaison doit être unique dans la région Azure. Pour plus d’informations sur les règles de nommage, consultez limites de point de terminaison.
# Define an endpoint name
endpoint_name = "my-endpoint"
# Example way to define a random name
import datetime
endpoint_name = "endpt-" + datetime.datetime.now().strftime("%m%d%H%M%f")
# create an online endpoint
endpoint = ManagedOnlineEndpoint(
name = endpoint_name,
description="this is a sample endpoint",
auth_mode="key"
)
Le code précédent utilise key pour l’authentification par clé. Pour utiliser l’authentification basée sur un jeton Azure Machine Learning, utilisez aml_token. Pour utiliser l’authentification basée sur les jetons Microsoft Entra (préversion), utilisez aad_token. Pour plus d’informations sur l’authentification, consultez Authentifier les clients pour les points de terminaison en ligne.
Configurer un point de terminaison
Lorsque vous déployez sur Azure à partir du studio, vous allez créer un point de terminaison et un déploiement à y ajouter. À ce moment-là, vous êtes invité à fournir des noms pour le point de terminaison et le déploiement.
Définir un nom d’un point de terminaison
Pour définir le nom de votre point de terminaison, exécutez la commande suivante. Remplacez YOUR_ENDPOINT_NAME par un nom unique dans la région Azure. Pour plus d’informations sur les règles de nommage, consultez limites de point de terminaison.
Pour Linux, exécutez cette commande :
export ENDPOINT_NAME=endpoint-`echo $RANDOM`
Configurer le point de terminaison
Pour définir le point de terminaison et le déploiement, cet article utilise les modèles Azure Resource Manager online-endpoint.json et online-endpoint-deployment.json. Pour utiliser les modèles afin de définir un point de terminaison et un déploiement en ligne, consultez la section Déployer sur Azure.
Définir le déploiement
Un déploiement est un ensemble de ressources nécessaires pour héberger le modèle qui effectue l’inférence réelle. Pour cet exemple, vous déployez un modèle scikit-learn qui effectue une régression et utilisez un script de scoring score.py pour exécuter le modèle sur une demande d’entrée donnée.
Pour en savoir plus sur les attributs clés d’un déploiement, consultez déploiements en ligne.
Configurer un déploiement
Votre configuration de déploiement utilise l’emplacement du modèle que vous souhaitez déployer.
L’extrait de code suivant montre le fichier endpoints/online/managed/sample/blue-deployment.yml avec toutes les entrées nécessaires pour configurer un déploiement :
Le fichier blue-deployment.yml spécifie les attributs de déploiement suivants :
model : spécifie les propriétés du modèle inline, à l’aide de la path (où charger des fichiers à partir de). L’interface CLI charge automatiquement les fichiers de modèle et inscrit le modèle avec un nom généré automatiquement.
environment : à l’aide de définitions inline qui incluent l’emplacement à partir duquel charger des fichiers, l’interface CLI charge automatiquement le fichier conda.yaml et inscrit l’environnement. Plus tard, pour générer l’environnement, le déploiement utilise l'image (dans cet exemple, il est mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest) pour l’image de base, et les dépendances conda_file sont installées sur l’image de base.
code_configuration - pendant le déploiement, les fichiers locaux comme la source Python du modèle de scoring sont chargés à partir de l’environnement de développement.
Pour utiliser des points de terminaison Kubernetes au lieu de points de terminaison en ligne gérés comme cible de calcul :
Créez et attachez votre cluster Kubernetes comme cible de calcul à votre espace de travail Azure Machine Learning avec Azure Machine Learning Studio.
Utilisez le code YAML de point de terminaison pour cibler Kubernetes à la place du code YAML de point de terminaison géré. Vous devez modifier le YAML pour modifier la valeur de compute en nom de votre cible de calcul inscrite. Vous pouvez utiliser ce deployment.yaml qui a des propriétés supplémentaires applicables à un déploiement Kubernetes.
Toutes les commandes utilisées dans cet article pour les points de terminaison en ligne managés s’appliquent également aux points de terminaison Kubernetes, à l’exception des fonctionnalités suivantes qui ne s’appliquent pas aux points de terminaison Kubernetes :
Model : spécifie les propriétés du modèle inline, à l’aide de la path (où charger des fichiers à partir de). Le Kit de développement logiciel (SDK) charge automatiquement les fichiers de modèle et inscrit le modèle avec un nom généré automatiquement.
Environment : à l’aide de définitions inline qui incluent l’emplacement de chargement des fichiers, le SDK charge automatiquement le fichier conda.yaml et inscrit l’environnement. Plus tard, pour générer l’environnement, le déploiement utilise l'image (dans cet exemple, il est mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest) pour l’image de base, et les dépendances conda_file sont installées sur l’image de base.
CodeConfiguration - pendant le déploiement, les fichiers locaux comme la source Python du modèle de scoring sont chargés à partir de l’environnement de développement.
Pour plus d’informations sur la définition de déploiement en ligne, consultez classe OnlineDeployment.
Configurer un déploiement
Quand vous déployez sur Azure, vous créez un point de terminaison et un déploiement à ajouter à celui-ci. À ce moment-là, vous êtes invité à fournir des noms pour le point de terminaison et le déploiement.
Configurer le déploiement
Pour définir le point de terminaison et le déploiement, cet article utilise les modèles Azure Resource Manager online-endpoint.json et online-endpoint-deployment.json. Pour utiliser les modèles afin de définir un point de terminaison et un déploiement en ligne, consultez la section Déployer sur Azure.
Comprendre le script de scoring
Conseil
Le format du script de scoring pour les points de terminaison en ligne est le même que celui utilisé dans la version précédente de l’interface CLI et dans le SDK Python.
Le script de scoring spécifié dans code_configuration.scoring_script doit avoir une fonction init() et une fonction run().
Le script de scoring doit avoir une fonction init() et une fonction run().
Le script de scoring doit avoir une fonction init() et une fonction run().
Le script de scoring doit avoir une fonction init() et une fonction run(). Cet article utilise le fichier score.py.
Lorsque vous utilisez un modèle pour le déploiement, vous devez d’abord charger le ou les fichiers de scoring dans un magasin d’objets blob Azure, puis l’inscrire :
Le code suivant utilise la commande Azure CLI az storage blob upload-batch pour charger le ou les fichiers de scoring :
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/score -s cli/endpoints/online/model-1/onlinescoring --account-name $AZURE_STORAGE_ACCOUNT
Le code suivant inscrit le code à l’aide d’un modèle :
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/code-version.json \
--parameters \
workspaceName=$WORKSPACE \
codeAssetName="score-sklearn" \
codeUri="https://$AZURE_STORAGE_ACCOUNT.blob.core.windows.net/$AZUREML_DEFAULT_CONTAINER/score"
import os
import logging
import json
import numpy
import joblib
def init():
"""
This function is called when the container is initialized/started, typically after create/update of the deployment.
You can write the logic here to perform init operations like caching the model in memory
"""
global model
# AZUREML_MODEL_DIR is an environment variable created during deployment.
# It is the path to the model folder (./azureml-models/$MODEL_NAME/$VERSION)
# Please provide your model's folder name if there is one
model_path = os.path.join(
os.getenv("AZUREML_MODEL_DIR"), "model/sklearn_regression_model.pkl"
)
# deserialize the model file back into a sklearn model
model = joblib.load(model_path)
logging.info("Init complete")
def run(raw_data):
"""
This function is called for every invocation of the endpoint to perform the actual scoring/prediction.
In the example we extract the data from the json input and call the scikit-learn model's predict()
method and return the result back
"""
logging.info("model 1: request received")
data = json.loads(raw_data)["data"]
data = numpy.array(data)
result = model.predict(data)
logging.info("Request processed")
return result.tolist()
La fonction init() est appelée lorsque le conteneur est initialisé ou démarré. Cette initialisation se produit généralement peu après la création ou la mise à jour du déploiement. La fonction init est l’endroit où écrire une logique pour les opérations d’initialisation globales, telles que la mise en cache du modèle en mémoire (comme indiqué dans ce fichier score.py).
La fonction run() est appelée chaque fois que le point de terminaison est appelé et qu’il effectue le scoring et la prédiction réels. Dans ce fichier score.py, la fonction run() extrait les données d’une entrée JSON, appelle la méthode predict() du modèle scikit-learn, puis retourne le résultat de prédiction.
Déployer et déboguer localement à l’aide d’un point de terminaison local
Nous vous recommandons vivement que vous testez votre point de terminaison localement pour valider et déboguer votre code et votre configuration avant de déployer sur Azure. L’interface Azure CLI et le SDK Python prennent en charge les points de terminaison et les déploiements locaux, contrairement à Azure Machine Learning studio et au modèle ARM.
Pour effectuer un déploiement local, le moteur Docker doit être installé et en cours d’exécution. Le moteur Docker démarre généralement au démarrage de l’ordinateur. Si ce n’est pas le cas, vous pouvez dépanner le Moteur Docker.
Conseil
Vous pouvez utiliser le package Python du serveur HTTP d’inférence Azure Machine Learning pour déboguer votre script de scoring localement sans moteur Docker. Le débogage avec le serveur d’inférence vous aide à déboguer le script de scoring avant le déploiement sur des points de terminaison locaux afin de pouvoir déboguer sans être affecté par les configurations de conteneur de déploiement.
Pour plus d’informations sur le débogage des points de terminaison en ligne localement avant le déploiement sur Azure, consultez débogage de point de terminaison en ligne.
Déployer le modèle localement
Tout d’abord, créez un point de terminaison. Si vous le souhaitez, pour un point de terminaison local, vous pouvez ignorer cette étape et créer directement le déploiement (étape suivante), qui créera ensuite les métadonnées requises. Le déploiement de modèles localement est utile à des fins de développement et de test.
Le studio ne prend pas en charge les points de terminaison locaux. Consultez les onglets Azure CLI ou Python pour connaître les étapes à suivre pour tester le point de terminaison localement.
Le modèle ne prend pas en charge les points de terminaison locaux. Consultez les onglets Azure CLI ou Python pour connaître les étapes à suivre pour tester le point de terminaison localement.
À présent, créez un déploiement nommé blue sous le point de terminaison.
L’indicateur local=True oriente le SDK pour déployer le point de terminaison dans l’environnement Docker.
Le studio ne prend pas en charge les points de terminaison locaux. Consultez les onglets Azure CLI ou Python pour connaître les étapes à suivre pour tester le point de terminaison localement.
Le modèle ne prend pas en charge les points de terminaison locaux. Consultez les onglets Azure CLI ou Python pour connaître les étapes à suivre pour tester le point de terminaison localement.
Le studio ne prend pas en charge les points de terminaison locaux. Consultez les onglets Azure CLI ou Python pour connaître les étapes à suivre pour tester le point de terminaison localement.
Le modèle ne prend pas en charge les points de terminaison locaux. Consultez les onglets Azure CLI ou Python pour connaître les étapes à suivre pour tester le point de terminaison localement.
Le tableau suivant contient les valeurs possibles de provisioning_state :
Valeur
Description
Creating
La ressource est en cours de création.
Mise à jour
La ressource est en cours de mise à jour.
Suppression en cours
La ressource est en cours de suppression.
Réussi
L’opération de création/mise à jour a réussi.
Échec
Échec de l’opération de création/mise à jour/suppression.
Appeler le point de terminaison local pour effectuer la notation des données avec votre modèle
Appelez le point de terminaison pour noter le modèle à l’aide de la commande invoke et en passant des paramètres de requête stockés dans un fichier JSON :
az ml online-endpoint invoke --local --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
Si vous souhaitez utiliser un client REST (par exemple, une boucle), vous devez disposer de l’URI de notation. Pour récupérer l’URI de notation, exécutez az ml online-endpoint show --local -n $ENDPOINT_NAME. Dans les données retournées, recherchez l’attribut scoring_uri.
Appelez le point de terminaison pour noter le modèle à l’aide de la commande invoke et en passant des paramètres de requête stockés dans un fichier JSON.
Si vous souhaitez utiliser un client REST (par exemple, une boucle), vous devez disposer de l’URI de notation. Pour obtenir l’URI de scoring, exécutez le code suivant. Dans les données retournées, recherchez l’attribut scoring_uri.
Le studio ne prend pas en charge les points de terminaison locaux. Consultez les onglets Azure CLI ou Python pour connaître les étapes à suivre pour tester le point de terminaison localement.
Le modèle ne prend pas en charge les points de terminaison locaux. Consultez les onglets Azure CLI ou Python pour connaître les étapes à suivre pour tester le point de terminaison localement.
Rechercher dans les journaux la sortie de l’opération d’appel
Dans l’exemple fichier score.py, la méthode run() journalise une sortie dans la console.
Le studio ne prend pas en charge les points de terminaison locaux. Consultez les onglets Azure CLI ou Python pour connaître les étapes à suivre pour tester le point de terminaison localement.
Le modèle ne prend pas en charge les points de terminaison locaux. Consultez les onglets Azure CLI ou Python pour connaître les étapes à suivre pour tester le point de terminaison localement.
Déployer votre point de terminaison en ligne dans Azure
Ensuite, déployez votre point de terminaison en ligne dans Azure. Comme meilleure pratique pour la production, nous vous recommandons d’inscrire le modèle et l’environnement que vous utiliserez dans votre déploiement.
Inscrire votre modèle et votre environnement
Nous vous recommandons d’inscrire votre modèle et votre environnement avant le déploiement sur Azure afin de pouvoir spécifier leurs noms et versions inscrits pendant le déploiement. L’inscription de vos ressources vous permet de les réutiliser sans avoir à les charger chaque fois que vous créez des déploiements, ce qui augmente la reproductibilité et la traçabilité.
Remarque
Contrairement au déploiement vers Azure, le déploiement local ne prend pas en charge l’utilisation de modèles et d’environnements inscrits. Au lieu de cela, le déploiement local utilise des fichiers de modèle local et utilise des environnements avec des fichiers locaux uniquement.
Pour le déploiement sur Azure, vous pouvez utiliser des ressources locales ou inscrites (modèles et environnements). Dans cette section de l’article, le déploiement sur Azure utilise des ressources inscrites, mais vous avez la possibilité d’utiliser des ressources locales à la place. Pour obtenir un exemple de configuration de déploiement qui charge les fichiers locaux à utiliser pour le déploiement local, consultez Configurer un déploiement.
Pour inscrire le modèle et l’environnement, utilisez le formulaire model: azureml:my-model:1 ou environment: azureml:my-env:1.
Pour effectuer l’inscription, vous pouvez extraire les définitions YAML de model et environment dans des fichiers YAML distincts et utiliser les commandes az ml model create et az ml environment create. Pour en savoir plus sur ces commandes, exécutez az ml model create -h et az ml environment create -h.
from azure.ai.ml.entities import Model
from azure.ai.ml.constants import AssetTypes
file_model = Model(
path="../../model-1/model/",
type=AssetTypes.CUSTOM_MODEL,
name="my-model",
description="Model created from local file.",
)
ml_client.models.create_or_update(file_model)
Inscrivez l’environnement :
from azure.ai.ml.entities import Environment
env_docker_conda = Environment(
image="mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04",
conda_file="../../model-1/environment/conda.yaml",
name="my-env",
description="Environment created from a Docker image plus Conda environment.",
)
ml_client.environments.create_or_update(env_docker_conda)
Une inscription de modèle est une entité logique dans l’espace de travail qui peut contenir un fichier de modèle unique ou un répertoire comprenant plusieurs fichiers. La meilleure pratique de production consiste à enregistrer le modèle et l’environnement. Avant de créer le point de terminaison et le déploiement dans cet article, vous devez inscrire le dossier de modèle qui contient le modèle.
Suivez ces étapes pour enregistrer l’exemple de modèle :
Dans la barre de navigation gauche, sélectionnez la page Modèles.
Sélectionnez Enregistrer, puis choisissez À partir de fichiers locaux.
Sélectionnez Type non spécifié pour le Type de modèle.
Sélectionnez Parcourir, puis choisissez Parcourir le dossier.
Sélectionnez le dossier \azureml-examples\cli\endpoints\online\model-1\model dans la copie locale du référentiel que vous avez précédemment cloné ou téléchargé. Quand vous y êtes invité, sélectionnez Charger et attendez la fin du chargement.
Sélectionnez Suivant une fois le chargement du dossier terminé.
Entrez un Nom convivial pour le modèle. Les étapes décrites dans cet article présument que le modèle est nommé model-1.
Sélectionnez Suivant, puis S’inscrire pour terminer l’inscription.
Dans la barre de navigation de gauche, sélectionnez la page Environnements.
Sélectionnez Créer.
Dans la page « Paramètres », indiquez un nom, tel que my-env pour l’environnement.
Pour « Sélectionner une source d’environnement », choisissez Utiliser l’image Docker existante avec la source conda facultative.
Sélectionnez suivant pour accéder à la page « Personnaliser ».
Copiez le contenu du fichier \azureml-examples\cli\endpoints\online\model-1\environment\conda.yaml à partir de la copie locale du dépôt que vous avez cloné ou téléchargé précédemment.
Collez le contenu dans la zone de texte.
Sélectionnez Suivant jusqu’à ce que vous arriviez à la page « Vérifier ».
Sélectionnez Créer.
Pour plus d’informations sur la création d’un environnement dans studio, consultez Créer un environnement.
Pour inscrire le modèle à l’aide d’un modèle, vous devez d’abord charger le fichier de modèle dans un magasin d’objets blob Azure. L’exemple suivant utilise la commande az storage blob upload-batch pour charger un fichier dans le stockage par défaut de votre espace de travail :
az storage blob upload-batch -d $AZUREML_DEFAULT_CONTAINER/model -s cli/endpoints/online/model-1/model --account-name $AZURE_STORAGE_ACCOUNT
Après avoir chargé le fichier, utilisez le modèle pour créer une inscription de modèle. Dans l’exemple suivant, le paramètre modelUri contient le chemin d’accès au modèle :
az deployment group create -g $RESOURCE_GROUP \
--template-file arm-templates/model-version.json \
--parameters \
workspaceName=$WORKSPACE \
modelAssetName="sklearn" \
modelUri="azureml://subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/workspaces/$WORKSPACE/datastores/$AZUREML_DEFAULT_DATASTORE/paths/model/sklearn_regression_model.pkl"
Une partie de l’environnement est un fichier conda qui spécifie les dépendances de modèle nécessaires pour héberger le modèle. L’exemple suivant montre comment lire le contenu du fichier conda dans des variables d’environnement :
L’exemple suivant montre comment utiliser le modèle pour inscrire l’environnement. Le contenu du fichier conda de l’étape précédente est passé au modèle à l’aide du paramètre condaFile :
Utilisez les ressources inscrites (modèle et environnement) dans votre définition de déploiement. L’extrait de code suivant montre le fichier endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml , avec toutes les entrées requises pour configurer un déploiement :
Lorsque vous déployez à partir du studio, vous allez créer un point de terminaison et un déploiement à ajouter à celui-ci. À ce moment-là, vous êtes invité à fournir des noms pour le point de terminaison et le déploiement.
Pour définir le point de terminaison et le déploiement, cet article utilise les modèles Azure Resource Manager online-endpoint.json et online-endpoint-deployment.json. Pour utiliser les modèles afin de définir un point de terminaison et un déploiement en ligne, consultez la section Déployer sur Azure.
Utilisation de différents types d’images et d’instances de processeur et GPU
Vous pouvez spécifier les types et images d’instance processeur ou GPU dans votre définition de déploiement pour le déploiement local et le déploiement sur Azure.
Votre définition de déploiement dans le fichier blue-deployment-with-registered-assets.yml a utilisé un type universel Standard_DS3_v2 instance et une image Docker non GPU mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest. Pour le calcul GPU, choisissez une référence SKU de type de calcul GPU et une image Docker GPU.
Vous pouvez spécifier les types et images d’instance processeur ou GPU dans votre configuration de déploiement pour le déploiement local et le déploiement sur Azure.
Précédemment, vous avez configuré un déploiement qui a utilisé un type à usage général Standard_DS3_v2 instance et une image Docker non GPU mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu20.04:latest. Pour le calcul GPU, choisissez une référence SKU de type de calcul GPU et une image Docker GPU.
Quand vous utilisez le studio pour déployer sur Azure, vous êtes invité à spécifier les propriétés de calcul (type d’instance et nombre d’instances) et l’environnement à utiliser pour votre déploiement.
L’inscription précédente de l’environnement spécifie une image docker non-GPU mcr.microsoft.com/azureml/openmpi3.1.2-ubuntu18.04 en passant la valeur au modèle environment-version.json à l’aide du paramètre dockerImage. Pour un calcul GPU, fournissez une valeur pour une image docker GPU au modèle (à l’aide du paramètre dockerImage) et fournissez une référence SKU de type de calcul GPU au modèle online-endpoint-deployment.json (à l’aide du paramètre skuName).
Créez le point de terminaison dans le cloud Azure.
az ml online-endpoint create --name $ENDPOINT_NAME -f endpoints/online/managed/sample/endpoint.yml
Créez le déploiement nommé blue sous le point de terminaison.
az ml online-deployment create --name blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml --all-traffic
La création du déploiement peut prendre jusqu’à 15 minutes, selon que l’environnement ou l’image sous-jacent est créé pour la première fois. Les déploiements suivants qui utilisent le même environnement sont traités plus rapidement.
Conseil
Si vous préférez ne pas bloquer votre console CLI, vous pouvez ajouter l’indicateur --no-wait à la commande. Toutefois, cette option arrête l’affichage interactif de l’état du déploiement.
Important
L’indicateur --all-traffic dans le code az ml online-deployment create utilisé pour créer le déploiement alloue 100 % du trafic de point de terminaison au déploiement bleu nouvellement créé. Bien que cela soit utile à des fins de développement et de test, pour la production, vous pouvez router le trafic vers le nouveau déploiement via une commande explicite. Par exemple : az ml online-endpoint update -n $ENDPOINT_NAME --traffic "blue=100".
Créez le point de terminaison :
À l’aide de la endpoint que vous avez définie précédemment et de la MLClient que vous avez créée précédemment, vous pouvez maintenant créer le point de terminaison dans l’espace de travail. Cette commande lance la création du point de terminaison et retourne une réponse de confirmation, pendant que la création du point de terminaison se poursuit.
À l’aide de la blue_deployment_with_registered_assets que vous avez définie précédemment et du MLClient que vous avez créé précédemment, vous pouvez maintenant créer le déploiement dans l’espace de travail. Cette commande lance la création du déploiement et retourne une réponse de confirmation pendant que la création du déploiement se poursuit.
Si vous préférez ne pas bloquer votre console Python, vous pouvez ajouter l’indicateur no_wait=True aux paramètres. Toutefois, cette option arrête l’affichage interactif de l’état du déploiement.
Créer un point de terminaison en ligne managé et un déploiement
Utilisez le studio pour créer un point de terminaison en ligne managé directement dans votre navigateur. Quand vous créez un point de terminaison en ligne managé dans le studio, vous devez définir un déploiement initial. Vous ne pouvez pas créer un point de terminaison managé en ligne vide.
Vous pouvez créer un point de terminaison en ligne managé dans le studio à partir de la page Modèles. Cette méthode permet aussi d’ajouter facilement un modèle à un déploiement en ligne managé existant. Pour déployer le modèle nommé model-1 que vous avez inscrit précédemment dans la section Inscrire votre modèle et votre environnement :
Dans la barre de navigation gauche, sélectionnez la page Modèles.
Sélectionnez le modèle nommé model-1 en cochant le cercle à côté de son nom.
Sélectionnez Déployer>Point de terminaison en temps réel.
Cette action ouvre une fenêtre dans laquelle vous pouvez spécifier des détails sur votre point de terminaison.
Entrez un nom de point de terminaison unique dans la région Azure. Pour plus d’informations sur les règles de nommage, consultez limites de point de terminaison.
Conservez la sélection par défaut : managé pour le type de calcul.
Sélectionnez Suivant jusqu’à ce que vous arriviez à la page « Déploiement ». Ici, basculez Application Insights diagnostics sur Activé pour vous permettre d’afficher ultérieurement les graphiques des activités de votre point de terminaison dans le studio et d’analyser les indicateurs de performance et les journaux à l’aide d’Application Insights.
Sélectionnez Suivant pour accéder à la page « Code + environnement ». Sélectionnez ici les options suivantes :
Sélectionnez un script de scoring pour l’inférence: parcourez et sélectionnez le fichier \azureml-examples\cli\endpoints\online\model-1\onlinescoring\score.py à partir du dépôt que vous avez cloné ou téléchargé précédemment.
section Sélectionner l’environnement : sélectionnez environnements personnalisés, puis sélectionnez l’environnement my-env:1 que vous avez créé précédemment.
Sélectionnez Suivant, en acceptant les valeurs par défaut, jusqu’à ce que vous soyez invité à créer le déploiement.
Révisez vos paramètres de déploiement, puis sélectionnez le bouton Créer.
Vous pouvez aussi créer un point de terminaison en ligne managé à partir de la page Points de terminaison dans le studio.
Dans la barre de navigation gauche, sélectionnez la page Points de terminaison.
Sélectionnez + Créer.
Cette action ouvre une fenêtre pour vous permettre de sélectionner votre modèle et de spécifier des détails sur votre point de terminaison et votre déploiement. Entrez les paramètres de votre point de terminaison et de votre déploiement comme décrit précédemment, puis Créer le déploiement.
Utilisez le modèle pour créer un point de terminaison en ligne :
Répertoriez tous les points de terminaison de l’espace de travail dans un format de tableau à l’aide de la méthode list :
for endpoint in ml_client.online_endpoints.list():
print(endpoint.name)
La méthode retourne une liste (itérateur) des entités ManagedOnlineEndpoint.
Vous pouvez obtenir plus d’informations en spécifiant plus de paramètres. Par exemple, sortiez la liste des points de terminaison comme une table :
print("Kind\tLocation\tName")
print("-------\t----------\t------------------------")
for endpoint in ml_client.online_endpoints.list():
print(f"{endpoint.kind}\t{endpoint.location}\t{endpoint.name}")
Afficher des points de terminaison en ligne managés
Vous pouvez afficher tous vos points de terminaison en ligne managés sur la page Points de terminaison. Ouvrez la page Détails du point de terminaison pour trouver des informations critiques, dont l’URI du point de terminaison, l’état, les outils de test, les moniteurs d’activité, les journaux de déploiement et l’exemple de code de consommation :
Dans la barre de navigation gauche, sélectionnez Points de terminaison. Ici vous pouvez voir une liste de tous les points de terminaison dans l’espace de travail.
(Facultatif) Créez un filtre sur le type de calcul pour afficher uniquement les types de calcul managés.
Sélectionnez le nom d’un point de terminaison pour voir la page Détails du point de terminaison.
Conseil
Bien que les modèles soient utiles pour le déploiement de ressources, ils ne peuvent pas être utilisés pour répertorier, afficher ou appeler des ressources. Utilisez Azure CLI, le SDK Python ou le studio pour effectuer ces opérations. Le code suivant utilise Azure CLI.
Utilisez la commande show pour afficher des informations dans le provisioning_state pour le point de terminaison et le déploiement :
az ml online-endpoint show -n $ENDPOINT_NAME
Répertoriez tous les points de terminaison de l’espace de travail dans un format de tableau à l’aide de la commande list :
az ml online-endpoint list --output table
Vérifier l’état du déploiement en ligne
Vérifiez les journaux pour voir si le modèle a été déployé sans erreur.
Pour voir la sortie de journal d’un conteneur, utilisez la commande CLI suivante :
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Par défaut, les journaux sont extraits du conteneur du serveur d’inférence. Pour voir les journaux du conteneur de l’initialiseur de stockage, ajoutez l’indicateur --container storage-initializer. Pour plus d’informations sur les journaux de déploiement, consultez Obtenir des journaux de conteneur.
Vous pouvez afficher la sortie du journal à l’aide de la méthode get_logs :
Par défaut, les journaux sont extraits du conteneur du serveur d’inférence. Pour voir les journaux du conteneur de l’initialiseur de stockage, ajoutez l’option container_type="storage-initializer". Pour plus d’informations sur les journaux de déploiement, consultez Obtenir des journaux de conteneur.
Pour afficher la sortie du journal, sélectionnez l’onglet Journaux d’activité dans la page du point de terminaison. Si vous avez plusieurs déploiements dans votre point de terminaison, utilisez la liste déroulante pour sélectionner celui dont vous souhaitez voir le journal.
Par défaut, les journaux sont extraits du serveur d’inférence. Pour voir les journaux du conteneur de l’initialiseur de stockage, utilisez Azure CLI ou le SDK Python (voir chaque onglet pour les détails). Les journaux du conteneur de l’initialiseur de stockage fournissent des informations indiquant si le code et les données de modèle ont été correctement téléchargés dans le conteneur. Pour plus d’informations sur les journaux de déploiement, consultez Obtenir des journaux de conteneur.
Conseil
Bien que les modèles soient utiles pour le déploiement de ressources, ils ne peuvent pas être utilisés pour répertorier, afficher ou appeler des ressources. Utilisez Azure CLI, le SDK Python ou le studio pour effectuer ces opérations. Le code suivant utilise Azure CLI.
Pour voir la sortie de journal d’un conteneur, utilisez la commande CLI suivante :
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
Par défaut, les journaux sont extraits du conteneur du serveur d’inférence. Pour voir les journaux du conteneur de l’initialiseur de stockage, ajoutez l’indicateur --container storage-initializer. Pour plus d’informations sur les journaux de déploiement, consultez Obtenir des journaux de conteneur.
Appeler le point de terminaison pour effectuer la notation des données avec votre modèle
Utilisez la commande invoke ou un client REST de votre choix pour appeler le point de terminaison et noter certaines données :
az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file endpoints/online/model-1/sample-request.json
Obtenez la clé utilisée pour l’authentification auprès du point de terminaison :
Conseil
Vous pouvez contrôler quels principaux de sécurité Microsoft Entra peuvent obtenir la clé d’authentification en leur attribuant un rôle personnalisé qui autorise Microsoft.MachineLearningServices/workspaces/onlineEndpoints/token/action et Microsoft.MachineLearningServices/workspaces/onlineEndpoints/listkeys/action. Pour plus d’informations sur la gestion de l’autorisation pour les espaces de travail, consultez Gérer l’accès à un espace de travail Azure Machine Learning.
ENDPOINT_KEY=$(az ml online-endpoint get-credentials -n $ENDPOINT_NAME -o tsv --query primaryKey)
Utilisez curl pour noter les données.
SCORING_URI=$(az ml online-endpoint show -n $ENDPOINT_NAME -o tsv --query scoring_uri)
curl --request POST "$SCORING_URI" --header "Authorization: Bearer $ENDPOINT_KEY" --header 'Content-Type: application/json' --data @endpoints/online/model-1/sample-request.json
Notez que vous utilisez des commandes show et get-credentials pour obtenir les informations d’identification d’authentification. Notez également que vous utilisez l’indicateur --query pour filtrer uniquement les attributs nécessaires. Pour en savoir plus sur l’indicateur de --query, consultez requête de sortie de commande Azure CLI.
Pour visualiser les journaux d’appel, exécutez get-logs de nouveau.
En utilisant le MLClient créée précédemment, obtenez un descripteur vers le point de terminaison. Le point de terminaison peut ensuite être appelé à l’aide de la commande invoke avec les paramètres suivants :
endpoint_name - Nom du point de terminaison
request_file - Fichier avec des données de requête
deployment_name - Nom du déploiement spécifique à tester dans un point de terminaison
Nous allons envoyer un exemple de requête à l’aide d’un fichier json.
# test the blue deployment with some sample data
ml_client.online_endpoints.invoke(
endpoint_name=endpoint_name,
deployment_name="blue",
request_file="../model-1/sample-request.json",
)
Utilisez l’onglet Test dans la page des détails de point de terminaison pour tester votre déploiement en ligne managé. Entrez l’exemple d’entrée et affichez les résultats.
Sélectionnez l’onglet Test dans la page des détails du point de terminaison.
Utilisez la liste déroulante pour sélectionner le déploiement à tester.
Entrez l’exemple d’entrée .
Sélectionnez Test.
Conseil
Bien que les modèles soient utiles pour le déploiement de ressources, ils ne peuvent pas être utilisés pour répertorier, afficher ou appeler des ressources. Utilisez Azure CLI, le SDK Python ou le studio pour effectuer ces opérations. Le code suivant utilise Azure CLI.
Utilisez la commande invoke ou un client REST de votre choix pour appeler le point de terminaison et noter certaines données :
az ml online-endpoint invoke --name $ENDPOINT_NAME --request-file cli/endpoints/online/model-1/sample-request.json
Si vous souhaitez mettre à jour le code, le modèle ou l’environnement, mettez à jour le fichier YAML et exécutez la commande az ml online-endpoint update.
Notes
Si vous mettez à jour le nombre d’instances (pour mettre à l’échelle votre déploiement) avec d’autres paramètres de modèle (comme le code, le modèle ou l’environnement) dans une même commande update, l’opération de mise à l’échelle est effectuée en premier, puis les autres mises à jour sont appliquées. Il est conseillé d’effectuer ces opérations séparément dans un environnement de production.
Pour comprendre comment update fonctionne :
Ouvrez le fichier online/model-1/onlinescoring/score.py.
Modifiez la dernière ligne de la fonction init() : après logging.info("Init complete"), ajoutez logging.info("Updated successfully").
Enregistrez le fichier .
Exécutez cette commande :
az ml online-deployment update -n blue --endpoint $ENDPOINT_NAME -f endpoints/online/managed/sample/blue-deployment-with-registered-assets.yml
Notes
La mise à jour à l’aide de YAML est déclarative. Autrement dit, les modifications apportées dans le fichier YAML seront reflétées dans les ressources du Gestionnaire de ressource Azure sous-jacentes (points de terminaison et déploiements). Une approche déclarative facilite les GitOps : Toutes les modifications apportées aux points de terminaison et déploiements passent (même instance_count) par le fichier YAML.
Conseil
Vous pouvez utiliser des paramètres de mise à jour génériques, tels que le paramètre --set, avec la commande CLI update pour remplacer les attributs dans votre YAML ou pour définir des attributs spécifiques sans les passer dans le fichier YAML. L’utilisation de --set pour les attributs uniques est particulièrement importante dans les scénarios de développement et de test. Par exemple, pour effectuer un scale-up de la valeur instance_count pour le premier déploiement, vous pouvez utiliser l’indicateur --set instance_count=2. Toutefois, étant donné que le code YAML n’est pas mis à jour, cette technique ne facilite pas les GitOps.
La spécification du fichier YAML n’est PAS obligatoire. Si vous souhaitez par exemple tester différents paramètres d’accès concurrentiel pour un déploiement donné, vous pouvez essayer quelque chose comme az ml online-deployment update -n blue -e my-endpoint --set request_settings.max_concurrent_requests_per_instance=4 environment_variables.WORKER_COUNT=4. Cela conserve toute la configuration existante, mais met uniquement à jour les paramètres spécifiés.
Comme vous avez modifié la fonction init() qui s’exécute lors de la création ou de la mise à jour du point de terminaison, le message Updated successfully figure dans les journaux. Récupérez les journaux en exécutant :
az ml online-deployment get-logs --name blue --endpoint $ENDPOINT_NAME
La commande update fonctionne également avec les déploiements locaux. Utilisez la même commande az ml online-deployment update avec l’indicateur --local.
Si vous souhaitez mettre à jour le code, le modèle ou l’environnement, mettez à jour la configuration, puis exécutez la méthode online_deployments.begin_create_or_update de MLClient pour créer ou mettre à jour un déploiement.
Notes
Si vous mettez à jour le nombre d’instances (pour mettre à l’échelle votre déploiement) avec d’autres paramètres de modèle (comme le code, le modèle ou l’environnement) dans une même méthode begin_create_or_update, l’opération de mise à l’échelle est effectuée en premier, puis les autres mises à jour sont appliquées. Il est conseillé d’effectuer ces opérations séparément dans un environnement de production.
Pour comprendre comment begin_create_or_update fonctionne :
Ouvrez le fichier online/model-1/onlinescoring/score.py.
Modifiez la dernière ligne de la fonction init() : après logging.info("Init complete"), ajoutez logging.info("Updated successfully").
Comme vous avez modifié la fonction init() qui s’exécute lors de la création ou de la mise à jour du point de terminaison, le message Updated successfully figure dans les journaux. Récupérez les journaux en exécutant :
La méthode begin_create_or_update fonctionne également avec les déploiements locaux. Utilisez la même méthode avec l’indicateur local=True.
Pour le moment, le studio vous permet d’effectuer des mises à jour uniquement sur le nombre d’instances d’un déploiement. Utilisez les instructions suivantes pour effectuer un scale-up ou un scale-down d’un déploiement individuel en ajustant le nombre d’instances :
Ouvrez la page Détails du point de terminaison et recherchez la carte du déploiement que vous souhaitez mettre à jour.
Sélectionnez l’icône de modification (en forme de crayon) en regard du nom du déploiement.
Mettez à jour le nombre d’instances associées au déploiement. Vous avez le choix entre Par défaut et Utilisation cible comme « Type d’échelle de déploiement ».
Si vous sélectionnez Par défaut, vous devez également spécifier une valeur numérique pour le Nombre d’instances.
Si vous sélectionnez Utilisation cible, vous pouvez spécifier des valeurs à utiliser pour les paramètres lors de la mise à l’échelle automatique du déploiement.
Sélectionnez Mettre à jour pour terminer la mise à jour du nombre d’instances pour votre déploiement.
Aucune option ne permet actuellement de mettre à jour le déploiement à l’aide d’un modèle ARM.
Remarque
La mise à jour du déploiement dans cette section est un exemple de mise à jour propagée sur place.
Pour un point de terminaison en ligne managé, le déploiement est mis à jour vers la nouvelle configuration avec 20 % de nœuds à la fois. Autrement dit, si le déploiement a 10 nœuds, 2 nœuds à la fois sont mis à jour.
Pour un point de terminaison en ligne Kubernetes, le système crée de manière itérative une nouvelle instance de déploiement avec la nouvelle configuration et supprime l’ancienne.
Pour une utilisation en production, envisagez le déploiement bleu-vert qui offre une alternative plus sûre pour la mise à jour d’un service web.
(Facultatif) Configurer la mise à l’échelle automatique
La mise à l’échelle automatique exécute automatiquement la quantité appropriée de ressources pour gérer la charge sur votre application. Les points de terminaison en ligne managés prennent en charge la mise à l’échelle automatique via l’intégration à la fonctionnalité de mise à l’échelle automatique d’Azure Monitor. Pour configurer la mise à l’échelle automatique, consultez Mise à l’échelle automatique des points de terminaison en ligne.
(Facultatif) Surveiller le contrat SLA à l’aide d’Azure Monitor
La commande get-logs pour CLI ou la méthode get_logs pour SDK ne fournit que les quelques dernières centaines de lignes de journaux d’une instance sélectionnée automatiquement. Toutefois, Log Analytics offre un moyen de stocker et d’analyser durablement les journaux. Pour plus d’informations sur l’utilisation de la journalisation, consultez Monitorer les points de terminaison en ligne.
Supprimez le point de terminaison et le déploiement
Si vous ne comptez pas utiliser le point de terminaison et le déploiement, supprimez-les. En supprimant le point de terminaison, vous supprimez également tous ses déploiements sous-jacents.
Dans la barre de navigation gauche, sélectionnez la page Points de terminaison.
Sélectionnez un point de terminaison en cochant le cercle à côté de son nom.
Sélectionnez Supprimer.
Vous pouvez aussi supprimer directement un point de terminaison en ligne managé en sélectionnant l’icône Supprimer dans la page de détails du point de terminaison.
Supprimez le point de terminaison et tous ses déploiements sous-jacents :
az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait