Déployer un modèle localement
Découvrez comment utiliser Azure Machine Learning pour déployer un modèle en tant que service web sur l’instance de calcul Azure Machine Learning. Utilisez des instances de calcul si l’une des conditions suivantes est vraie :
- Vous avez besoin de déployer et de valider rapidement votre modèle.
- Vous testez un modèle en cours de développement.
Conseil
Le déploiement d’un modèle à partir d’un Jupyter Notebook sur une instance de calcul vers un service web sur la même machine virtuelle est un déploiement local. Dans ce cas, l’ordinateur « local » est l’instance de calcul.
Notes
Les points de terminaison Azure Machine Learning (v2) offrent une expérience de déploiement plus simple et améliorée. Les points de terminaison prennent en charge les scénarios d’inférence en temps réel et par lot. Les points de terminaison fournissent une interface unifiée pour appeler et gérer des déploiements de modèle pour différents types de calcul. Voir Quels sont les points de terminaison Azure Machine Learning ?.
Prérequis
- Un espace de travail Azure Machine Learning avec une instance de calcul en cours d’exécution. Pour plus d’informations, consultez Créer des ressources pour bien démarrer.
Déploiement sur des instances de calcul
Un exemple de notebook illustrant les déploiements locaux est inclus sur votre instance de calcul. Utilisez les étapes suivantes pour charger le notebook et déployer le modèle en tant que service web sur la machine virtuelle :
À partir de Azure Machine Learning Studio, sélectionnez « Notebooks », puis sélectionnez how-to-use-azureml/deployment/deploy-to-local/register-model-deploy-local.ipynb sous « Exemples de notebooks ». Clonez ce notebook dans votre dossier utilisateur.
Recherchez le notebook cloné à l’étape 1, choisissez ou créez une instance de calcul pour exécuter le notebook.
Le notebook affiche l’URL et le port sur lequel le service s’exécute. Par exemple :
https://localhost:6789
. Vous pouvez également exécuter la cellule contenantprint('Local service port: {}'.format(local_service.port))
pour afficher ce port.Pour tester le service à partir d’une instance de calcul, utilisez l’URL
https://localhost:<local_service.port>
. Pour effectuer un test à partir d’un client distant, récupérez l’URL publique du service en cours d’exécution sur l’instance de calcul. L’URL publique peut être déterminée à l’aide de la formule suivante :- Machine virtuelle de notebooks :
https://<vm_name>-<local_service_port>.<azure_region_of_workspace>.notebooks.azureml.net/score
. - Instance de calcul :
https://<vm_name>-<local_service_port>.<azure_region_of_workspace>.instances.azureml.net/score
.
Par exemple,
- Machine virtuelle de notebooks :
https://vm-name-6789.northcentralus.notebooks.azureml.net/score
- Instance de calcul :
https://vm-name-6789.northcentralus.instances.azureml.net/score
- Machine virtuelle de notebooks :
Testez le service
Pour soumettre des exemples de données au service en cours d’exécution, utilisez le code suivant. Remplacez la valeur de service_url
par l’URL de l’étape précédente :
Remarque
Quand vous vous authentifiez sur un déploiement dans l’instance de calcul, l’authentification est effectuée avec Microsoft Entra ID. L’appel à interactive_auth.get_authentication_header()
dans l’exemple de code vous authentifie en utilisant Microsoft Entra ID et renvoie un en-tête pouvant ensuite être utilisé pour s’authentifier sur le service dans l’instance de calcul. Pour plus d’informations, consultez Configurer l’authentification pour des ressources et workflows Azure Machine Learning.
Lors de l’authentification auprès d’un déploiement sur Azure Kubernetes Service ou Azure Container Instances, une autre méthode d’authentification est utilisée. Pour plus d’informations sur le sujet, consultez Configurer l’authentification pour les modèles Machine Learning déployés en tant que services web.
import requests
import json
from azureml.core.authentication import InteractiveLoginAuthentication
# Get a token to authenticate to the compute instance from remote
interactive_auth = InteractiveLoginAuthentication()
auth_header = interactive_auth.get_authentication_header()
# Create and submit a request using the auth header
headers = auth_header
# Add content type header
headers.update({'Content-Type':'application/json'})
# Sample data to send to the service
test_sample = json.dumps({'data': [
[1,2,3,4,5,6,7,8,9,10],
[10,9,8,7,6,5,4,3,2,1]
]})
test_sample = bytes(test_sample,encoding = 'utf8')
# Replace with the URL for your compute instance, as determined from the previous section
service_url = "https://vm-name-6789.northcentralus.notebooks.azureml.net/score"
# for a compute instance, the url would be https://vm-name-6789.northcentralus.instances.azureml.net/score
resp = requests.post(service_url, test_sample, headers=headers)
print("prediction:", resp.text)
Étapes suivantes
- Guide pratique pour déployer un modèle à l’aide d’une image Docker personnalisée
- Résolution des problèmes liés au déploiement
- Utiliser TLS pour sécuriser un service web par le biais d’Azure Machine Learning
- Utiliser un modèle ML déployé en tant que service web
- Superviser vos modèles Azure Machine Learning avec Application Insights
- Collecter des données pour des modèles en production