Partager via


Suivre les expériences et les modèles à l’aide de MLflow

Le Suivi est le processus d’enregistrement d’informations pertinentes sur les expériences. Dans cet article, vous apprenez à utiliser MLflow pour suivre vos expériences et vos exécutions dans les espaces de travail Azure Machine Learning.

Certaines méthodes disponibles dans l’API MLflow peuvent ne pas être disponibles lorsque vous utilisez Azure Machine Learning. Pour plus d’informations sur les opérations prises en charge et celles qui ne le sont pas, consultez la matrice de compatibilité pour l’interrogation des exécutions et des expérimentations. Vous pouvez également en savoir plus sur les fonctionnalités MLflow prises en charge dans Azure Machine Learning à partir de l’article MLflow et d’Azure Machine Learning.

Remarque

Prérequis

  • Installez le package sdk mlflow MLflow et le plug-in Azure Machine Learning azureml-mlflow pour 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. Nous recommandons ce package pour les utilisateurs qui ont principalement besoin des fonctionnalités de suivi et de journalisation MLflow, mais pas la suite complète de fonctionnalités, y compris les déploiements.

  • Créez un espace de travail Azure Machine Learning. Pour créer un espace de travail, consultez Créer les ressources dont vous avez besoin pour commencer. Passez en revue les autorisations d’accès dont vous avez besoin pour effectuer des opérations MLflow dans votre espace de travail.

  • Pour effectuer un suivi à distance ou suivre des expériences 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 enregistrées dans une expérience créée automatiquement nommée Défaut, mais il est possible de configurer quelle expérience suivre.

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 les travaux d’apprentissage dans ce que MLflow appelle des exécutions. 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 d’apprentissage dès que vous journalisez des informations qui nécessitent une exécution active. Par exemple, si la fonctionnalité de synchronisation automatique de MLflow est activée, le suivi MLflow démarre lorsque vous journalisez une métrique ou un paramètre, ou démarrez un cycle d’entraînement.

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 un processus, utilisez mlflow.end_run().

Le code suivant démarre une exécution manuellement et la termine à la fin du notebook :

mlflow.start_run()

# Your code

mlflow.end_run()

Il est préférable de démarrer manuellement les exécutions afin de ne pas oublier de les terminer. Vous pouvez 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

Lorsque vous démarrez une nouvelle exécution à l’aide mlflow.start_run()de , il peut être utile de spécifier le run_name paramètre, qui se traduit ultérieurement par le nom de l’exécution dans l’interface utilisateur Azure Machine Learning. Cette pratique 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 les métriques, les paramètres et les fichiers avec MLflow manuellement, et vous pouvez également vous appuyer sur la fonctionnalité de journalisation automatique de MLflow. Chaque infrastructure Machine Learning prise en charge par MLflow détermine ce qu’il faut suivre automatiquement.

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 l'enregistrement à l'aide de MLflow sont suivis dans votre espace de travail. Vous pouvez les afficher et les accéder dans Azure Machine Learning Studio ou les accéder par programmation à l’aide du Kit de développement logiciel (SDK) MLflow.

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

  1. Dans la page Travaux de votre espace de travail, sélectionnez le nom de l’expérience.

  2. Dans la page détails de l’expérience, sélectionnez l’onglet Métriques .

  3. Sélectionnez les métriques journalisées pour afficher les graphiques sur le côté droit de la page. 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.

  4. Après avoir créé la vue souhaité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 montrant la liste des métriques et les graphiques créés à partir des métriques.

Pour accéder ou interroger des métriques, des paramètres et des artefacts par programmation à l’aide du 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

L’exemple précédent retourne uniquement la dernière valeur d’une métrique donnée. Pour 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 de métriques, consultez Obtenir des paramètres et des métriques à partir 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 façon de récupérer ou de comparer des informations à partir d’expériences et d’exécutions dans Azure Machine Learning à l’aide de MLflow, consultez Interroger et comparer des expériences et des exécutions avec MLflow.