Partager via


Suivre les expériences et modèles ML avec 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 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. Vous pouvez également en savoir plus sur les fonctionnalités MLflow prises en charge dans Azure Machine Learning à partir de l’article MLflow et Azure Machine Learning.

Remarque

Prérequis

  • Installer le package du SDK MLflow mlflow et le plug-in azureml-mlflow d’Azure Machine Learning pour MLflow de la manière suivante :

    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. Ce package 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.

  • 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. Examinez les autorisations d’accès nécessaires pour effectuer vos opérations MLflow dans votre espace de travail.

  • Pour effectuer un suivi à distance, autrement dit, pour 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, exécute le journal sur une expérience créée automatiquement nommée Défaut, mais vous pouvez configurer l’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 effectue le suivi des travaux d’apprentissage dans les appels MLflow qui s’exécutent. 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, un paramètre ou démarrez un cycle de formation.

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().

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

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. 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 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 les accéder dans Azure Machine Learning Studio ou les accéder programmatiquement via le 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. 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. 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 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 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

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