Déployer des modèles MLflow en tant que services web Azure (préversion)Deploy MLflow models as Azure web services (preview)

Cet article explique comment déployer votre modèle MLflow en tant que service web Azure afin d’exploiter les capacités d’Azure Machine Learning en matière de gestion de modèles et de détection des dérives de données et de les appliquer à vos modèles de production.In this article, learn how to deploy your MLflow model as an Azure web service, so you can leverage and apply Azure Machine Learning's model management and data drift detection capabilities to your production models.

Azure Machine Learning propose des configurations de déploiement pour les composants suivants :Azure Machine Learning offers deployment configurations for:

  • Azure Container Instance (ACI), qui est un choix approprié pour un déploiement de développement-test rapide.Azure Container Instance (ACI) which is a suitable choice for a quick dev-test deployment.
  • Azure Kubernetes Service (AKS), qui est recommandé pour les déploiements dans des environnements de production scalables.Azure Kubernetes Service (AKS) which is recommended for scalable production deployments.

Conseil

Les informations contenues dans ce document sont principalement destinées aux chercheurs de données et aux développeurs qui souhaitent déployer leur modèle MLflow sur un point de terminaison de service web Azure Machine Learning.The information in this document is primarily for data scientists and developers who want to deploy their MLflow model to an Azure Machine Learning web service endpoint. Si vous êtes un administrateur intéressé par la supervision de l’utilisation de ressources et d’événements d’Azure Machine Learning, comme des quotas, des cycles de formation accomplis ou des déploiements de modèles effectués, voir Supervision d’Azure Machine Learning.If you are an administrator interested in monitoring resource usage and events from Azure Machine Learning, such as quotas, completed training runs, or completed model deployments, see Monitoring Azure Machine Learning.

Déploiement de MLflow avec Azure Machine LearningMLflow with Azure Machine Learning deployment

MLFlow est une bibliothèque open source permettant de gérer le cycle de vie de vos expériences de Machine Learning.MLflow is an open-source library for managing the life cycle of your machine learning experiments. Son intégration à Azure Machine Learning vous permet d’étendre cette gestion au-delà de la formation du modèle et jusqu’à la phase de déploiement de votre modèle de production.Its integration with Azure Machine Learning allows for you to extend this management beyond model training to the deployment phase of your production model.

Le diagramme suivant montre qu’avec l’API de déploiement MLflow et Azure Machine Learning, vous pouvez déployer des modèles créés à l’aide d’infrastructures populaires, telles que PyTorch, Tensorflow, scikit-learn, etc., en tant que services web Azure et les gérer dans votre espace de travail.The following diagram demonstrates that with the MLflow deploy API and Azure Machine Learning, you can deploy models created with popular frameworks, like PyTorch, Tensorflow, scikit-learn, etc., as Azure web services and manage them in your workspace.

 déployer des modèles mlflow avec azure machine learningdeploy mlflow models with azure machine learning

Notes

En tant que bibliothèque open source, MLflow change fréquemment.As an open source library, MLflow changes frequently. Ainsi, les fonctionnalités mises à disposition via l’intégration d’Azure Machine Learning et de MLflow doivent être considérées comme une préversion et non entièrement prises en charge par Microsoft.As such, the functionality made available via the Azure Machine Learning and MLflow integration should be considered as a preview, and not fully supported by Microsoft.

PrérequisPrerequisites

Déployer sur Azure Container Instances (ACI)Deploy to Azure Container Instance (ACI)

Pour déployer votre modèle MLflow sur un service web Azure Machine Learning, votre modèle doit être configuré avec l’URI de suivi MLflow pour se connecter à Azure Machine Learning.To deploy your MLflow model to an Azure Machine Learning web service, your model must be set up with the MLflow Tracking URI to connect with Azure Machine Learning.

Configurez votre configuration de déploiement avec la méthode deploy_configuration().Set up your deployment configuration with the deploy_configuration() method. Vous pouvez également ajouter des balises et des descriptions pour faciliter le suivi de votre service web.You can also add tags and descriptions to help keep track of your web service.

from azureml.core.webservice import AciWebservice, Webservice

# Set the model path to the model folder created by your run
model_path = "model"

# Configure 
aci_config = AciWebservice.deploy_configuration(cpu_cores=1, 
                                                memory_gb=1, 
                                                tags={'method' : 'sklearn'}, 
                                                description='Diabetes model',
                                                location='eastus2')

Ensuite, inscrivez et déployez le modèle rapidement avec la méthode deploy MLflow sur Azure Machine Learning.Then, register and deploy the model in one step with MLflow's deploy method for Azure Machine Learning.

(webservice,model) = mlflow.azureml.deploy( model_uri='runs:/{}/{}'.format(run.id, model_path),
                      workspace=ws,
                      model_name='sklearn-model', 
                      service_name='diabetes-model-1', 
                      deployment_config=aci_config, 
                      tags=None, mlflow_home=None, synchronous=True)

webservice.wait_for_deployment(show_output=True)

Déployer sur Azure Kubernetes Service (AKS)Deploy to Azure Kubernetes Service (AKS)

Pour déployer votre modèle MLflow sur un service web Azure Machine Learning, votre modèle doit être configuré avec l’URI de suivi MLflow pour se connecter à Azure Machine Learning.To deploy your MLflow model to an Azure Machine Learning web service, your model must be set up with the MLflow Tracking URI to connect with Azure Machine Learning.

Pour déployer sur AKS, commencez par créer un cluster AKS.To deploy to AKS, first create an AKS cluster. Créez un cluster AKS avec la méthode ComputeTarget.create().Create an AKS cluster using the ComputeTarget.create() method. La création d’un cluster peut prendre de 20 à 25 minutes.It may take 20-25 minutes to create a new cluster.

from azureml.core.compute import AksCompute, ComputeTarget

# Use the default configuration (can also provide parameters to customize)
prov_config = AksCompute.provisioning_configuration()

aks_name = 'aks-mlflow'

# Create the cluster
aks_target = ComputeTarget.create(workspace=ws, 
                                  name=aks_name, 
                                  provisioning_configuration=prov_config)

aks_target.wait_for_completion(show_output = True)

print(aks_target.provisioning_state)
print(aks_target.provisioning_errors)

Configurez votre configuration de déploiement avec la méthode deploy_configuration().Set up your deployment configuration with the deploy_configuration() method. Vous pouvez également ajouter des balises et des descriptions pour faciliter le suivi de votre service web.You can also add tags and descriptions to help keep track of your web service.

from azureml.core.webservice import Webservice, AksWebservice

# Set the web service configuration (using default here with app insights)
aks_config = AksWebservice.deploy_configuration(enable_app_insights=True, compute_target_name='aks-mlflow')

Ensuite, inscrivez et déployez le modèle rapidement avec la méthode deploy MLflow sur Azure Machine Learning.Then, register and deploy the model in one step with MLflow's deploy method for Azure Machine Learning.


# Webservice creation using single command
from azureml.core.webservice import AksWebservice, Webservice

# set the model path 
model_path = "model"

(webservice, model) = mlflow.azureml.deploy( model_uri='runs:/{}/{}'.format(run.id, model_path),
                      workspace=ws,
                      model_name='sklearn-model', 
                      service_name='my-aks', 
                      deployment_config=aks_config, 
                      tags=None, mlflow_home=None, synchronous=True)


webservice.wait_for_deployment()

Le déploiement du service peut prendre plusieurs minutes.The service deployment can take several minutes.

Nettoyer les ressourcesClean up resources

Si vous n’envisagez pas d’utiliser votre service web déployé, utilisez service.delete() pour le supprimer de votre notebook.If you don't plan to use your deployed web service, use service.delete() to delete it from your notebook. Pour plus d’informations, consultez la documentation sur WebService.delete().For more information, see the documentation for WebService.delete().

Exemples de notebooksExample notebooks

Les notebooks MLflow avec Azure Machine Learning illustrent et développent les concepts abordés dans cet article.The MLflow with Azure Machine Learning notebooks demonstrate and expand upon concepts presented in this article.

Notes

Vous trouverez un référentiel communautaire d’exemples utilisant mlflow sur https://github.com/Azure/azureml-examples.A community-driven repository of examples using mlflow can be found at https://github.com/Azure/azureml-examples.

Étapes suivantesNext steps