Déployer des modèles empaquetés sur des points de terminaison en ligne (aperçu)
L’empaquetage de modèle est une fonctionnalité d’Azure Machine Learning qui vous permet de collecter toutes les dépendances requises pour déployer un modèle Machine Learning sur une plateforme de service. Créer des paquets avant de déployer des modèles permet un déploiement robuste et fiable et un flux de travail MLOps plus efficace. Les paquets peuvent être déplacés entre les espaces de travail et même en dehors d’Azure Machine Learning. En savoir plus sur les modèles empaquetés (aperçu)
Important
Cette fonctionnalité est actuellement disponible en préversion publique. Cette préversion est fournie sans contrat de niveau de service et n’est pas recommandée pour les charges de travail de production. Certaines fonctionnalités peuvent être limitées ou non prises en charge.
Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.
Dans cet article, vous allez découvrir comment empaqueter un modèle et le déployer sur un point de terminaison en ligne dans Azure Machine Learning studio.
Prérequis
Avant de suivre les étapes décrites dans cet article, vérifiez que vous disposez des composants requis suivants :
Un abonnement Azure. Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer. Essayez la version gratuite ou payante d’Azure Machine Learning.
Un espace de travail Azure Machine Learning. Si vous n’en avez pas, suivez les étapes décrites dans l’article Comment gérer des espaces de travail pour en créer un.
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é. Pour plus d’informations, consultez Gérer l’accès à un espace de travail Azure Machine Learning.
À propos de cet exemple
Dans cet exemple, vous empaquetez un modèle de type personnalisé et vous le déployez sur un point de terminaison en ligne pour l’inférence en ligne.
L’exemple de cet article est basé sur des extraits de code contenus dans le référentiel azureml-examples. Pour exécuter les commandes localement sans avoir à copier/coller le fichier YAML et d’autres fichiers, clonez d’abord le référentiel, puis modifiez les répertoires dans le dossier :
git clone https://github.com/Azure/azureml-examples --depth 1
cd azureml-examples/cli
Cette section utilise l’exemple dans le dossier endpoints/online/deploy-packages/custom-model.
Se connecter à un espace de travail
Connectez-vous à votre espace de travail Azure Machine Learning pour commencer à travailler.
az account set --subscription <subscription>
az configure --defaults workspace=<workspace> group=<resource-group> location=<location>
Empaquetez le modèle
Vous pouvez créer explicitement des modèles empaquetés pour vous permettre de contrôler l’opération d’empaquetage. Vous pouvez créer des modèles empaquetés en spécifiant les éléments suivants :
- Modèle à empaqueter : chaque modèle empaqueté ne peut contenir qu’un seul modèle. Azure Machine Learning ne prend pas en charge l’empaquetage de plusieurs modèles dans un même paquet.
- Environnement de base : les environnements sont utilisés pour indiquer l’image de base et, dans les paquets Python, les dépendances dont votre modèle a besoin. Azure Machine Learning génère automatiquement les environnements de base des modèles MLflow. Vous devez spécifier un environnement de base pour les modèles personnalisés.
- Technologie de service: la pile d’inférence utilisée pour exécuter le modèle.
Conseil
Pour un modèle MLflow, vous n’avez pas besoin de créer le modèle empaqueté manuellement. Nous pouvons effectuer l’empaquetage automatiquement avant le déploiement. Consultez Déployer des modèles MLflow sur des points de terminaison en ligne.
Les modèles empaquetés nécessitent l’inscription du modèle dans votre espace de travail ou dans un registre Azure Machine Learning. Dans ce cas, vous avez déjà une copie locale du modèle dans le référentiel. Vous devez donc uniquement publier le modèle dans le registre dans l’espace de travail. Vous pouvez ignorer cette section si le modèle que vous essayez de déployer est déjà inscrit.
Notre modèle nécessite l’exécution des paquets suivants, et nous les avons spécifiés dans un fichier conda :
conda.yaml
name: model-env channels: - conda-forge dependencies: - python=3.9 - numpy=1.23.5 - pip=23.0.1 - scikit-learn=1.2.2 - scipy=1.10.1 - xgboost==1.3.3
Remarque
Notez que seules les exigences du modèle sont indiquées dans le YAML conda. Tout paquet requis pour le serveur d’inférence sera inclus par l’opération d’empaquetage.
Conseil
Si votre modèle nécessite des paquets hébergés dans des flux privés, vous pouvez configurer votre paquet pour les inclure. Lisez Empaqueter un modèle qui a des dépendances dans les flux Python privés.
Créez un environnement de base qui contient les exigences du modèle et une image de base. Seules les dépendances requises par votre modèle sont indiquées dans l’environnement de base. Pour les modèles MLflow, l’environnement de base est facultatif, auquel cas Azure Machine Learning le génère automatiquement pour vous.
Créez une définition d’environnement de base :
sklearn-regression-env.yml
$schema: https://azuremlschemas.azureedge.net/latest/environment.schema.json name: sklearn-regression-env image: mcr.microsoft.com/azureml/openmpi4.1.0-ubuntu22.04 conda_file: conda.yaml description: An environment for models built with XGBoost and Scikit-learn.
Puis créez l’environnement ainsi :
az ml environment create -f environment/sklearn-regression-env.yml
Créez une spécification de paquet :
package-moe.yml
$schema: http://azureml/sdk-2-0/ModelVersionPackage.json base_environment_source: type: environment_asset resource_id: azureml:sklearn-regression-env:1 target_environment: sklearn-regression-online-pkg inferencing_server: type: azureml_online code_configuration: code: src scoring_script: score.py
Lancez l’opération d’empaquetage de modèle :
Le résultat de l’opération d’empaquetage est un environnement.
Déployez le modèle empaqueté
Les modèles empaquetés peuvent être déployés directement sur des points de terminaison en ligne dans Azure Machine Learning. Procédez comme suit pour déployer un paquet sur un point de terminaison en ligne :
Choisissez un nom de point de terminaison pour l’hébergement du déploiement du paquet et créez-le :
Créez le déploiement en utilisant le paquet. Notez comment
environment
est configuré avec le paquet que vous avez créé.deployment.yml
$schema: https://azuremlschemas.azureedge.net/latest/managedOnlineDeployment.schema.json name: with-package endpoint_name: hello-packages environment: azureml:sklearn-regression-online-pkg@latest instance_type: Standard_DS3_v2 instance_count: 1
Conseil
Notez que vous ne spécifiez pas de script de modèle ou de score dans cet exemple ; ils font tous partie du paquet.
Lancez le déploiement :
À ce stade, le déploiement est prêt à être utilisé. Vous pouvez tester son fonctionnement en créant un exemple de fichier de requête :
sample-request.json
{ "data": [ [1,2,3,4,5,6,7,8,9,10], [10,9,8,7,6,5,4,3,2,1] ] }
Envoyez la demande au point de terminaison