Partager via


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

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 :

  1. À 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.

  2. Recherchez le notebook cloné à l’étape 1, choisissez ou créez une instance de calcul pour exécuter le notebook.

    Screenshot of the running local service on notebook

  3. 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 contenant print('Local service port: {}'.format(local_service.port)) pour afficher ce port.

    Screenshot of the running local service port

  4. 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

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