Suivre les expériences et les modèles ML avec MLflow

Dans cet article, vous apprenez à utiliser MLflow pour suivre vos expériences et vos exécutions dans les espaces de travail Azure Machine Learning.

Le Suivi est le processus d’enregistrement d’informations pertinentes sur les expériences que vous exécutez. Les informations enregistrées (métadonnées) varient en fonction de votre projet et peuvent inclure :

  • Code
  • Détails de l’environnement (version du système d’exploitation, packages Python)
  • Données d’entrée
  • Configurations des paramètres
  • Modèles
  • Mesures d’évaluation
  • Visualisations d’évaluation (matrices de confusion, tracés d’importance)
  • Résultats de l’évaluation (y compris certaines prévisions d’évaluation)

Lorsque vous réalisez des travaux dans Azure Machine Learning, Azure Machine Learning effectue automatiquement le suivi de certaines informations sur vos expériences, comme le code, l’environnement et les données d’entrée et de sortie. Toutefois, pour d’autres, comme les modèles, les paramètres et les métriques, le générateur de modèles doit configurer leur suivi, car il est spécifique au scénario particulier.

Remarque

Si vous souhaitez suivre les expériences qui s’exécutent sur Azure Databricks, consultez Suivre les expériences de ML Azure Databricks avec MLflow et Azure Machine Learning. Pour en savoir plus sur le suivi des expériences qui s’exécutent sur Azure Synapse Analytics, consultez Suivre les expériences de ML Azure Synapse Analytics avec MLflow et Azure Machine Learning.

Avantages du suivi des expériences

Nous vous recommandons vivement de faire effectuer le suivi des expériences par des praticiens de l’apprentissage automatique, que vous soyez en formation avec des travaux dans Azure Machine Learning ou en formation interactive dans des notebooks. Le suivi des expériences vous permet :

  • D’organiser toutes vos expériences d’apprentissage automatique dans un seul endroit. Vous pouvez ensuite rechercher et filtrer des expériences et explorer au niveau du détail les expériences que vous avez exécutées auparavant.
  • Comparez des expériences, analysez les résultats et déboguez l’apprentissage du modèle avec peu de travail supplémentaire.
  • De reproduire ou de réexécuter des expériences pour valider les résultats.
  • D’améliorer la collaboration, car vous pouvez voir ce que font vos collègues, partager les résultats des expériences et accéder de manière programmatique aux données d’expérience.

Pourquoi utiliser MLflow pour suivre vos expériences ?

Les espaces de travail Azure Machine Learning sont compatibles avec MLflow, ce qui signifie que vous pouvez utiliser MLflow pour suivre les exécutions, les métriques, les paramètres et les artefacts de vos espaces de travail Azure Machine Learning. Un des principaux avantages d’utiliser MLflow pour le suivi est que vous n’avez pas besoin de modifier vos routines de formation pour travailler avec Azure Machine Learning ou injecter toute syntaxe spécifique au cloud.

Pour connaître toutes les fonctionnalités MLflow et Azure Machine Learning prises en charge, consultez MLflow et Azure Machine Learning.

Limites

Certaines méthodes disponibles dans l’API MLflow peuvent ne pas être disponibles pendant une connexion à Azure Machine Learning. Pour plus d’informations sur les opérations prises en charge et non prises en charge, consultez la Matrice de prise en charge pour l’interrogation des exécutions et des expériences.

Prérequis

  • Installer le package mlflow du SDK MLflow et le plug-in Azure Machine Learning pour MLflow azureml-mlflow.

    pip install mlflow azureml-mlflow
    

    Conseil

    Vous pouvez utiliser le package mlflow-skinny qui est un package MLflow léger sans dépendances de stockage SQL, de serveur, d’interface utilisateur ou de science des données. mlflow-skinny est recommandé pour les utilisateurs qui ont principalement besoin des fonctionnalités de suivi et de journalisation de MLflow, sans importer la suite complète de fonctionnalités, notamment les déploiements.

  • Un espace de travail Azure Machine Learning. Vous pouvez en créer un en suivant le tutoriel : Créer des ressources de Machine Learning.

  • Si vous effectuez un suivi à distance (autrement dit, des expériences de suivi qui s’exécutent en dehors d’Azure Machine Learning), configurez MLflow pour qu’il pointe vers l’URI de suivi de votre espace de travail Azure Machine Learning. Pour plus d’informations sur la connexion de MLflow à votre espace de travail, consultez Configurer MLflow pour Azure Machine Learning.

Configurer l’expérience

MLflow organise les informations dans les expériences et les exécutions (les exécutions sont appelées travaux dans Azure Machine Learning). Par défaut, les exécutions sont consignées dans une expérience nommée par défaut qui est automatiquement créée pour vous. Vous pouvez configurer l’expérience dans laquelle le suivi est effectué.

Pour une formation interactive, comme dans un notebook Jupyter, utilisez la commande MLflow mlflow.set_experiment(). Par exemple, l’extrait de code suivant configure une expérience :

experiment_name = 'hello-world-example'
mlflow.set_experiment(experiment_name)

Configurer l’exécution

Azure Machine Learning suit n’importe quel travail de formation dans ce que MLflow appelle une exécution. Utilisez des exécutions pour enregistrer tout le traitement effectué par votre travail.

Lorsque vous travaillez de manière interactive, MLflow commence à suivre votre routine de formation dès que vous essayez de journaliser des informations qui nécessitent une exécution active. Par exemple, le suivi MLflow démarre lorsque vous journalisez une métrique, un paramètre ou démarrez un cycle de formation, et la fonctionnalité de synchronisation automatique de MLflow est activée. Toutefois, il est généralement utile de démarrer l’exécution explicitement, en particulier si vous souhaitez capturer la durée totale de votre expérience dans le champ Durée. Pour démarrer l’exécution de manière explicite, utilisez mlflow.start_run().

Que vous démarrez l’exécution manuellement ou non, vous devrez finalement arrêter l’exécution, afin que MLflow sache que votre exécution d’expérience est réalisée et puisse marquer l’état de l’exécution comme Terminé. Pour arrêter une exécution, utilisez mlflow.end_run().

Nous recommandons vivement de démarrer manuellement vos exécutions, afin de ne pas pouvoir oublier de les arrêter lorsque vous travaillez dans des notebooks.

  • Pour démarrer une exécution manuellement et la terminer lorsque vous avez terminé de travailler dans le notebook :

    mlflow.start_run()
    
    # Your code
    
    mlflow.end_run()
    
  • Il est généralement utile d’utiliser le paradigme du gestionnaire de contexte pour vous aider à vous rappeler de mettre fin à l’exécution :

    with mlflow.start_run() as run:
        # Your code
    
  • Quand vous démarrez une nouvelle exécution avec mlflow.start_run(), il peut être utile de spécifier le paramètre run_name, qui est utilisé plus tard comme nom de l’exécution dans l’interface utilisateur Azure Machine Learning et vous aide à identifier l’exécution plus rapidement :

    with mlflow.start_run(run_name="hello-world-example") as run:
        # Your code
    

Activer l’autologging MLflow

Vous pouvez journaliser des métriques, des paramètres et des fichiers avec MLflow manuellement. Toutefois, vous pouvez également vous appuyer sur la fonctionnalité de journalisation automatique de MLflow. Chaque infrastructure d’apprentissage automatique prise en charge par MLflow détermine les éléments à suivre automatiquement pour vous.

Pour activer la journalisation automatique, insérez le code suivant avant votre code d’entraînement :

mlflow.autolog()

Afficher les métriques et les artefacts dans votre espace de travail

Les métriques et les artefacts de la journalisation MLflow sont suivis dans votre espace de travail. Vous pouvez les afficher et y accéder dans le studio à tout moment ou y accéder de manière programmatique via le kit de développement logiciel (SDK) MLflow.

Pour afficher des métriques et des artefacts dans le studio :

  1. Accédez à Azure Machine Learning Studio.

  2. Accédez à votre espace de travail.

  3. Recherchez l’expérience par son nom dans votre espace de travail.

  4. Sélectionnez les métriques journalisées pour afficher les graphiques sur le côté droit. Vous pouvez personnaliser les graphes en appliquant un lissage, en changeant la couleur ou en traçant plusieurs métriques sur un même graphe. Vous pouvez également redimensionner et réorganiser la disposition comme vous le souhaitez.

  5. Une fois que la vue souhaitée est créée, enregistrez-la pour une utilisation ultérieure et partagez-la avec vos collègues à l’aide d’un lien direct.

    Capture d’écran de la vue Métriques.

Pour accéder à ou interroger des métriques, des paramètres et des artefacts de manière programmatique via le kit de développement logiciel (SDK) MLflow, utilisez mlflow.get_run().

import mlflow

run = mlflow.get_run("<RUN_ID>")

metrics = run.data.metrics
params = run.data.params
tags = run.data.tags

print(metrics, params, tags)

Conseil

Pour les métriques, l’exemple de code précédent ne renverra que la dernière valeur d’une métrique donnée. Si vous souhaitez récupérer toutes les valeurs d’une métrique donnée, utilisez la méthode mlflow.get_metric_history. Pour plus d’informations sur la récupération des valeurs d’une métrique, consultez Obtenir les paramètres et les métriques d’une exécution.

Pour télécharger les artefacts que vous avez enregistrés, comme des fichiers et des modèles, utilisez mlflow.artifacts.download_artifacts().

mlflow.artifacts.download_artifacts(run_id="<RUN_ID>", artifact_path="helloworld.txt")

Pour plus d’informations sur la manière de récupérer ou comparer les informations des expériences et des exécutions dans Azure Machine Learning, en utilisant MLflow, consultez Interroger et comparer les expériences et les exécutions avec MLflow.