Dans cet article, vous allez découvrir comment déployer un modèle Machine Learning formé par AutoML sur un point de terminaison en ligne (inférence en temps réel). Le Machine Learning automatisé, également appelé ML automatisé ou AutoML, est le processus d’automatisation des tâches fastidieuses et itératives de développement d’un modèle Machine Learning. Pour plus d’informations, consultez Qu’est-ce que le Machine Learning automatisé (AutoML) ?.
Dans cet article, vous allez découvrir comment déployer un modèle Machine Learning formé par AutoML sur des points de terminaison en ligne à l’aide de :
Effectuer le déploiement à partir d’Azure Machine Learning studio et sans code
Le déploiement d’un modèle formé par AutoML à partir de la page ML automatisé est une expérience sans code. Cela signifie que vous n’avez pas besoin de préparer de script ni un environnement de scoring, ils sont tous les deux générés automatiquement.
Accéder à la page ML automatisé dans le studio
Sélectionner et exécuter votre expérience
Choisir l’onglet Modèles
Sélectionner le modèle que vous souhaitez déployer
Une fois que vous avez sélectionné un modèle, le bouton Déployer s’active avec un menu déroulant
Sélectionner l’option Déployer sur le point de terminaison en temps réel
Le système génère le modèle et l’environnement nécessaires au déploiement.
Exécutez l’Assistant pour déployer le modèle sur un point de terminaison en ligne
Déployer manuellement à partir de studio ou de la ligne de commande
Si vous souhaitez mieux contrôler le déploiement, vous pouvez télécharger les artefacts d’apprentissage et les déployer.
Pour télécharger les composants dont vous avez besoin pour le déploiement :
Accéder à votre expérience ML automatisé et l’exécuter dans votre espace de travail Machine Learning
Choisir l’onglet Modèles
Sélectionnez le modèle que vous souhaitez utiliser. Une fois que vous avez sélectionné un modèle, le bouton Télécharger est activé
Choisir Télécharger
Vous recevez un fichier zip contenant les éléments suivants :
Un fichier de spécification de l’environnement Conda nommé conda_env_<VERSION>.yml
Un fichier de scoring Python nommé scoring_file_<VERSION>.py
Le modèle lui-même, dans un fichier Python .pkl nommé model.pkl
Pour effectuer un déploiement à l’aide de ces fichiers, vous pouvez utiliser le studio ou l’interface de ligne de commande Azure.
Accéder à la page Modèles dans Azure Machine Learning studio
Sélectionnez l’option + Inscrire le modèle
Inscrire le modèle que vous avez téléchargé à partir de l’exécution de ML automatisé
Accédez à la page Environnements, sélectionnez Environnement personnalisé, puis sélectionnez l’option + Créer pour créer un environnement pour votre déploiement. Utiliser le fichier YAML Conda téléchargé pour créer un environnement personnalisé
Sélectionner le modèle, puis dans l’option de liste déroulante Déployer, sélectionner Déployer sur le point de terminaison en temps réel
Effectuer toutes les étapes de l’Assistant pour créer un point de terminaison de traitement en ligne et un déploiement
Pour créer un déploiement à partir de l’interface CLI, vous avez besoin de l’interface Azure CLI avec l’extension ML v2. Exécutez la commande suivante pour confirmer que vous disposez des deux éléments :
az version
Si vous recevez un message d’erreur ou que vous ne voyez pas Extensions: ml dans la réponse, procédez comme expliqué dans la section Installer et configurer l’interface CLI (v2).
Connexion :
az login
Si vous avez accès à plusieurs abonnements Azure, vous pouvez définir votre abonnement actif :
az account set -s "<YOUR_SUBSCRIPTION_NAME_OR_ID>"
Définissez le groupe de ressources et l’espace de travail par défaut où vous souhaitez créer le déploiement :
az configure --defaults group=$GROUP workspace=$WORKSPACE location=$LOCATION
Placer le fichier de scoring dans son propre répertoire
Créez un répertoire nommé src/ et placez-y le fichier de scoring que vous avez téléchargé. Ce répertoire est chargé dans Azure et contient tout le code source nécessaire pour effectuer l’inférence. Pour un modèle AutoML, il n’y a qu’un fichier de scoring unique.
Créer le point de terminaison et le fichier de déploiement YAML
Pour créer un point de terminaison en ligne à partir de la ligne de commande, vous devez créer des fichiers endpoint.yml et deployment.yml. Le code suivant extrait du référentiel d’exemples Azure Machine Learning montre endpoints/online/managed/sample/ qui capture toutes les entrées requises :
Vous devrez modifier ce fichier pour utiliser les fichiers que vous avez téléchargés à partir de la page des modèles AutoML.
Créez des fichiers automl_endpoint.yml et automl_deployment.yml, et collez le contenu de l’exemple ci-dessus.
Modifiez la valeur name du point de terminaison. Le nom du point de terminaison doit être unique dans la région Azure. Le nom d’un point de terminaison doit commencer par une lettre majuscule ou minuscule et contenir uniquement des caractères « - » et alphanumériques.
Dans le fichier automl_deployment, modifiez la valeur des clés au niveau des chemins suivants :
Chemin d’accès
Remplacer par
model:path
Chemin du fichier model.pkl que vous avez téléchargé.
code_configuration:code:path
Répertoire dans lequel vous avez placé le fichier de scoring.
code_configuration:scoring_script
Nom du fichier de scoring Python (scoring_file_<VERSION>.py).
environment:conda_file
URL de fichier pour le fichier d’environnement Conda téléchargé (conda_env_<VERSION>.yml).
Placer le fichier de scoring dans son propre répertoire
Créez un répertoire nommé src/ et placez-y le fichier de scoring que vous avez téléchargé. Ce répertoire est chargé dans Azure et contient tout le code source nécessaire pour effectuer l’inférence. Pour un modèle AutoML, il n’y a qu’un fichier de scoring unique.
Se connecter à un espace de travail Azure Machine Learning
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
Configurez les détails de l’espace de travail et obtenez un handle pour l’espace de travail :
# 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
)
Création du point de terminaison et du déploiement
Nous allons maintenant créer les points de terminaison en ligne gérés et les déploiements.
Configurer le point de terminaison en ligne :
Conseil
name : Nom du point de terminaison. Il doit être unique au sein de la région Azure. Le nom d’un point de terminaison doit commencer par une lettre majuscule ou minuscule et contenir uniquement des caractères « - » et alphanumériques. Pour plus d’informations sur les règles de nommage, consultez limites de point de terminaison.
auth_mode : utilisez key pour l’authentification basée sur une clé. Utilisez aml_token pour l’authentification Azure Machine Learning basée sur les jetons. key n’expire pas, mais aml_token expire. Pour plus d’informations sur l’authentification, consultez S’authentifier auprès d’un point de terminaison en ligne.
# Creating a unique endpoint name with current datetime to avoid conflicts
import datetime
online_endpoint_name = "endpoint-" + datetime.datetime.now().strftime("%m%d%H%M%f")
# create an online endpoint
endpoint = ManagedOnlineEndpoint(
name=online_endpoint_name,
description="this is a sample online endpoint",
auth_mode="key",
)
Créer le point de terminaison :
À l’aide de MLClient créé précédemment, nous allons 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.
ml_client.begin_create_or_update(endpoint)
Configurez le déploiement en ligne :
Un déploiement est un ensemble de ressources nécessaires pour héberger le modèle qui effectue l’inférence réelle. Nous allons créer un déploiement pour notre point de terminaison à l’aide de la classe ManagedOnlineDeployment.
Dans l’exemple ci-dessus, nous supposons que les fichiers que vous avez téléchargés sur la page Modèles AutoML se trouvent dans le répertoire src. Vous pouvez modifier les paramètres dans le code en fonction de votre situation.
Paramètre
Remplacer par
model:path
Chemin du fichier model.pkl que vous avez téléchargé.
code_configuration:code:path
Répertoire dans lequel vous avez placé le fichier de scoring.
code_configuration:scoring_script
Nom du fichier de scoring Python (scoring_file_<VERSION>.py).
environment:conda_file
URL de fichier pour le fichier d’environnement Conda téléchargé (conda_env_<VERSION>.yml).
Créez le déploiement :
À l’aide de MLClient créé précédemment, nous allons maintenant créer le déploiement dans l’espace de travail. Cette commande initie la création du déploiement et renvoie un réponse de confirmation tandis que la création du déploiement se poursuit.