Entraîner et suivre des modèles ML avec MLflow et Azure Machine Learning (préversion)Train and track ML models with MLflow and Azure Machine Learning (preview)

Cet article explique comment activer l’URI de suivi et l’API de journalisation de MLflow, collectivement appelées MLflow Tracking, pour connecter Azure Machine Learning en tant que serveur principal de vos expériences MLflow.In this article, learn how to enable MLflow's tracking URI and logging API, collectively known as MLflow Tracking, to connect Azure Machine Learning as the backend of your MLflow experiments.

Les fonctionnalités prises en charge sont les suivantes :Supported capabilities include:

  • Suivre et journaliser les métriques et les artefacts des expériences dans votre espace de travail Azure Machine Learning.Track and log experiment metrics and artifacts in your Azure Machine Learning workspace. Si vous utilisez déjà MLflow Tracking pour vos expériences, l’espace de travail fournit un emplacement centralisé, sécurisé et évolutif pour stocker les métriques et les modèles d’entraînement.If you already use MLflow Tracking for your experiments, the workspace provides a centralized, secure, and scalable location to store training metrics and models.

  • Soumettre des tâches d’entraînement avec MLflow Projects en utilisant la prise en charge du service principal Azure Machine Learning (préversion).Submit training jobs with MLflow Projects with Azure Machine Learning backend support (preview). Vous pouvez envoyer des tâches en local en utilisant le suivi Azure Machine Learning ou migrer vos exécutions vers le cloud, par exemple, via une capacité de calcul Azure Machine Learningde calcul.You can submit jobs locally with Azure Machine Learning tracking or migrate your runs to the cloud like via an Azure Machine Learning Compute.

  • Suivre et gérer des modèles dans MLflow et un registre de modèles Azure Machine Learning.Track and manage models in MLflow and Azure Machine Learning model registry.

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. MLFlow Tracking est un composant de MLflow qui journalise et suit vos artefacts de modèle et métriques d’exécution d’apprentissage, quel que soit l’environnement de votre expérience, localement sur votre ordinateur, sur une cible de calcul distante, sur une machine virtuelle ou sur un cluster Azure Databricks.MLFlow Tracking is a component of MLflow that logs and tracks your training run metrics and model artifacts, no matter your experiment's environment--locally on your computer, on a remote compute target, a virtual machine, or an Azure Databricks cluster.

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.

Le diagramme suivant montre qu’avec MLflow Tracking, vous suivez les métriques d’exécution d’une expérience et vous stockez les artefacts du modèle dans votre espace de travail Azure Machine Learning.The following diagram illustrates that with MLflow Tracking, you track an experiment's run metrics and store model artifacts in your Azure Machine Learning workspace.

diagramme de mlflow avec azure machine learning

Conseil

Les informations contenues dans ce document sont principalement destinées aux scientifiques des données et aux développeurs qui veulent superviser le processus d’entraînement du modèle.The information in this document is primarily for data scientists and developers who want to monitor the model training process. 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.

Comparer les clients MLflow et Azure Machine LearningCompare MLflow and Azure Machine Learning clients

Le tableau suivant récapitule les différents clients pouvant utiliser Azure Machine Learning et leurs fonctionnalités respectives.The following table summarizes the different clients that can use Azure Machine Learning, and their respective function capabilities.

MLflow Tracking offre des fonctionnalités de stockage de journalisation de métriques et d’artefact qui ne sont autrement disponibles que via le Kit de développement logiciel (SDK) Python Azure Machine Learning.MLflow Tracking offers metric logging and artifact storage functionalities that are only otherwise available via the Azure Machine Learning Python SDK.

FonctionnalitéCapability Suivi et déploiement MLflowMLflow Tracking & Deployment SDK Python Azure Machine LearningAzure Machine Learning Python SDK Interface CLI Azure Machine LearningAzure Machine Learning CLI Azure Machine Learning StudioAzure Machine Learning studio
Gérer l'espace de travailManage workspace
Utiliser des magasins de donnéesUse data stores
Journaliser les métriquesLog metrics
Charger les artefactsUpload artifacts
Afficher les mesuresView metrics
Gérer le calculManage compute
Déployer des modèlesDeploy models
Surveiller les performances d'un modèleMonitor model performance
Détecter une dérive de donnéesDetect data drift

PrérequisPrerequisites

Suivre les exécutions localesTrack local runs

MLflow Tracking avec Azure Machine Learning vous permet de stocker les métriques et artefacts consignés à partir de vos exécutions locales dans votre espace de travail Azure Machine Learning.MLflow Tracking with Azure Machine Learning lets you store the logged metrics and artifacts from your local runs into your Azure Machine Learning workspace.

Importez les classes mlflow et Workspace pour accéder à l’URI de suivi de MLflow et configurer votre espace de travail.Import the mlflow and Workspace classes to access MLflow's tracking URI and configure your workspace.

Dans le code suivant, la méthode get_mlflow_tracking_uri() attribue un adresse URI de suivi unique à l’espace de travail, ws, et set_tracking_uri() pointe le L’URI de suivi de MLflow sur cette adresse.In the following code, the get_mlflow_tracking_uri() method assigns a unique tracking URI address to the workspace, ws, and set_tracking_uri() points the MLflow tracking URI to that address.

import mlflow
from azureml.core import Workspace

ws = Workspace.from_config()

mlflow.set_tracking_uri(ws.get_mlflow_tracking_uri())

Notes

L’URI de suivi est valide pendant au maximum une heure.The tracking URI is valid up to an hour or less. Si vous redémarrez votre script après un certain temps d’inactivité, utilisez l’API get_mlflow_tracking_uri pour obtenir un nouvel URI.If you restart your script after some idle time, use the get_mlflow_tracking_uri API to get a new URI.

Définissez le nom de l’expérience MLflow avec set_experiment() et commencez votre cycle d’apprentissage avec start_run().Set the MLflow experiment name with set_experiment() and start your training run with start_run(). Utilisez ensuite log_metric() à activer l’API de journalisation de MLflow et commencer la journalisation des métriques de votre cycle d’apprentissage.Then use log_metric() to activate the MLflow logging API and begin logging your training run metrics.

experiment_name = 'experiment_with_mlflow'
mlflow.set_experiment(experiment_name)

with mlflow.start_run():
    mlflow.log_metric('alpha', 0.03)

Suivre les exécutions à distanceTrack remote runs

Les exécutions à distance vous permettent d’effectuer l’apprentissage de vos modèles sur des calculs plus puissants, tels que des machines virtuelles activées par GPU ou des clusters de Capacité de calcul Machine Learning.Remote runs let you train your models on more powerful computes, such as GPU enabled virtual machines, or Machine Learning Compute clusters. Pour en savoir plus sur les différentes options de calcul, consultez Utiliser des cibles de calcul pour l’entraînement des modèles.See Use compute targets for model training to learn about different compute options.

MLflow Tracking avec Azure Machine Learning vous permet de stocker les métriques et artefacts consignés à partir de vos exécutions distantes dans votre espace de travail Azure Machine Learning.MLflow Tracking with Azure Machine Learning lets you store the logged metrics and artifacts from your remote runs into your Azure Machine Learning workspace. Toute exécution contenant du code MLflow Tracking aura des métriques journalisées automatiquement dans l’espace de travail.Any run with MLflow Tracking code in it will have metrics logged automatically to the workspace.

L’exemple d’environnement conda suivant comprend mlflow et azureml-mlflow en tant que packages pip.The following example conda environment includes mlflow and azureml-mlflow as pip packages.

name: sklearn-example
dependencies:
  - python=3.6.2
  - scikit-learn
  - matplotlib
  - numpy
  - pip:
    - azureml-mlflow
    - numpy

Dans votre script, configurez votre environnement de calcul et d’apprentissage avec la classe Environment.In your script, configure your compute and training run environment with the Environment class. Construisez ensuite ScriptRunConfig avec votre calcul à distance en tant que cible de calcul.Then, construct ScriptRunConfig with your remote compute as the compute target.

import mlflow

with mlflow.start_run():
    mlflow.log_metric('example', 1.23)

Avec cette configuration du cycle de calcul et d’apprentissage, utilisez la méthode Experiment.submit() pour soumettre un cycle.With this compute and training run configuration, use the Experiment.submit() method to submit a run. Cette méthode définit automatiquement l’URI du suivi MLflow et dirige la journalisation de MLflow vers votre espace de travail.This method automatically sets the MLflow tracking URI and directs the logging from MLflow to your Workspace.

run = exp.submit(src)

Formation avec MLflow ProjectsTrain with MLflow Projects

Grâce à MLflow Projects, vous pouvez organiser et décrire votre code pour que d’autres scientifiques de données (ou des outils automatisés) puissent l’exécuter.MLflow Projects allow for you to organize and describe your code to let other data scientists (or automated tools) run it. MLflow Projects avec Azure Machine Learning vous permet de suivre et de gérer vos exécutions de formation dans votre espace de travail.MLflow Projects with Azure Machine Learning enables you to track and manage your training runs in your workspace.

Cet exemple montre comment soumettre des projets MLflow en local en utilisant le suivi Azure Machine Learning.This example shows how to submit MLflow projects locally with Azure Machine Learning tracking.

Installez le package azureml-mlflow pour utiliser MLflow Tracking avec Azure Machine Learning sur vos expériences exécutées en local.Install the azureml-mlflow package to use MLflow Tracking with Azure Machine Learning on your experiments locally. Vos expériences peuvent s’exécuter à l’aide d’un notebook Jupyter ou d’un éditeur de code.Your experiments can run via a Jupyter Notebook or code editor.

pip install azureml-mlflow

Importez les classes mlflow et Workspace pour accéder à l’URI de suivi de MLflow et configurer votre espace de travail.Import the mlflow and Workspace classes to access MLflow's tracking URI and configure your workspace.

import mlflow
from azureml.core import Workspace

ws = Workspace.from_config()

mlflow.set_tracking_uri(ws.get_mlflow_tracking_uri())

Définissez le nom de l’expérience MLflow avec set_experiment() et commencez votre cycle d’apprentissage avec start_run().Set the MLflow experiment name with set_experiment() and start your training run with start_run(). Utilisez ensuite log_metric() pour activer l’API de journalisation de MLflow et commencer la journalisation des métriques de votre cycle de formation.Then, use log_metric() to activate the MLflow logging API and begin logging your training run metrics.

experiment_name = 'experiment-with-mlflow-projects'
mlflow.set_experiment(experiment_name)

Créez l’objet de configuration principal pour stocker les informations nécessaires à l’intégration, telles que la cible de calcul et le type d’environnement géré à utiliser.Create the backend configuration object to store necessary information for the integration such as, the compute target and which type of managed environment to use.

backend_config = {"USE_CONDA": False}

Ajoutez le package azureml-mlflow en tant que dépendance PIP à votre fichier de configuration d’environnement afin d’effectuer le suivi des métriques et des artefacts principaux dans votre espace de travail.Add the azureml-mlflow package as a pip dependency to your environment configuration file in order to track metrics and key artifacts in your workspace.

name: mlflow-example
channels:
  - defaults
  - anaconda
  - conda-forge
dependencies:
  - python=3.6
  - scikit-learn=0.19.1
  - pip
  - pip:
    - mlflow
    - azureml-mlflow

Soumettez l’exécution locale et veillez à définir le paramètre backend = "azureml" .Submit the local run and ensure you set the parameter backend = "azureml" . Ce paramètre vous permet de soumettre des exécutions en local et bénéficier de la prise en charge supplémentaire du suivi automatique de la sortie, des fichiers journaux, des instantanés et des erreurs imprimées dans votre espace de travail.With this setting, you can submit runs locally and get the added support of automatic output tracking, log files, snapshots, and printed errors in your workspace.

Affichez vos exécutions et métriques dans Azure Machine Learning Studio.View your runs and metrics in the Azure Machine Learning studio.

local_env_run = mlflow.projects.run(uri=".", 
                                    parameters={"alpha":0.3},
                                    backend = "azureml",
                                    use_conda=False,
                                    backend_config = backend_config, 
                                    )

Afficher les métriques et les artefacts dans votre espace de travailView metrics and artifacts in your workspace

Les métriques et artefacts provenant de la journalisation de MLflow sont conservés dans votre espace de travail.The metrics and artifacts from MLflow logging are kept in your workspace. Pour les voir à tout moment, accédez à votre espace de travail, puis recherchez l’expérience par son nom dans votre espace de travail dans Azure Machine Learning Studio.To view them anytime, navigate to your workspace and find the experiment by name in your workspace in Azure Machine Learning studio. Ou exécutez le code ci-dessous.Or run the below code.

run.get_metrics()

Gérer les modèlesManage models

Enregistrez et suivez vos modèles avec le registre de modèles Azure Machine Learning qui prend en charge le registre de modèles MLflow.Register and track your models with the Azure Machine Learning model registry which supports the MLflow model registry. Les modèles Azure Machine Learning sont alignés avec le schéma de modèle MLflow, ce qui facilite l’exportation et l’importation de ces modèles dans différents flux de travail.Azure Machine Learning models are aligned with the MLflow model schema making it easy to export and import these models across different workflows. Les métadonnées associées à MLflow, telles que l’ID d’exécution, sont également marquées avec le modèle inscrit pour la traçabilité.The MLflow related metadata such as, run ID is also tagged with the registered model for traceability. Les utilisateurs peuvent soumettre des exécutions de formation, enregistrer, mais aussi déployer des modèles produits à partir de MLflow.Users can submit training runs, register, and deploy models produced from MLflow runs.

Si vous souhaitez déployer et inscrire votre modèle prêt pour la production en une seule étape, consultez déployer et inscrire des modèles MLflow.If you want to deploy and register your production ready model in one step, see Deploy and register MLflow models.

Pour inscrire et afficher un modèle à partir d’une exécution, procédez comme suit :To register and view a model from a run, use the following steps:

  1. Une fois l’exécution terminée, appelez la méthode register_model().Once the run is complete call the register_model() method.

    # the model folder produced from the run is registered. This includes the MLmodel file, model.pkl and the conda.yaml.
    run.register_model(model_name = 'my-model', model_path = 'model')
    
  2. Affichez le modèle inscrit dans votre espace de travail avec Azure Machine Learning Studio.View the registered model in your workspace with Azure Machine Learning studio.

    Dans l’exemple suivant, le modèle inscrit, my-model a des métadonnées de MLflow Tracking marquées.In the following example the registered model, my-model has MLflow tracking metadata tagged.

    register-mlflow-model

  3. Sélectionnez l’onglet Artefacts pour afficher tous les fichiers de modèle qui s’alignent sur le schéma de modèle MLflow (conda.yaml, MLmodel, model.pkl).Select the Artifacts tab to see all the model files that align with the MLflow model schema (conda.yaml, MLmodel, model.pkl).

    model-schema

  4. Sélectionnez MLmodel pour afficher le fichier MLmodel généré par l’exécution.Select MLmodel to see the MLmodel file generated by the run.

    MLmodel-schema

Nettoyer les ressourcesClean up resources

Si vous ne prévoyez pas d’utiliser les métriques et artefacts enregistrés dans votre espace de travail, la possibilité de les supprimer individuellement est actuellement indisponible.If you don't plan to use the logged metrics and artifacts in your workspace, the ability to delete them individually is currently unavailable. Au lieu de cela, supprimez le groupe de ressources contenant le compte de stockage et l’espace de travail afin d’éviter des frais supplémentaires :Instead, delete the resource group that contains the storage account and workspace, so you don't incur any charges:

  1. Dans le portail Azure, sélectionnez Groupes de ressources tout à gauche.In the Azure portal, select Resource groups on the far left.

    Supprimer dans le portail Azure

  2. À partir de la liste, sélectionnez le groupe de ressources créé.From the list, select the resource group you created.

  3. Sélectionnez Supprimer le groupe de ressources.Select Delete resource group.

  4. Entrez le nom du groupe de ressources.Enter the resource group name. Puis sélectionnez Supprimer.Then select 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 ML 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