Intégration MLflow pour Ultralytics YOLO

MLflow experiment tracking with Ultralytics YOLO

Introduction

La journalisation des expériences est un aspect crucial des flux de travail en apprentissage automatique qui permet de suivre diverses métriques, paramètres et artefacts. Elle aide à améliorer la reproductibilité des modèles, à déboguer les problèmes et à optimiser les performances des modèles. Ultralytics YOLO, connu pour ses capacités de détection d'objets en temps réel, offre désormais une intégration avec MLflow, une plateforme open-source pour la gestion complète du cycle de vie de l'apprentissage automatique.

Cette page de documentation est un guide complet pour configurer et utiliser les fonctionnalités de journalisation MLflow pour ton projet Ultralytics YOLO.

Qu'est-ce que MLflow ?

MLflow est une plateforme open-source développée par Databricks pour gérer le cycle de vie complet de l'apprentissage automatique. Elle comprend des outils pour suivre les expériences, encapsuler le code dans des exécutions reproductibles, et partager ou déployer des modèles. MLflow est conçu pour fonctionner avec n'importe quelle bibliothèque d'apprentissage automatique et n'importe quel langage de programmation.

Fonctionnalités

  • Journalisation des métriques : Enregistre les métriques à la fin de chaque époque et à la fin de l'entraînement.
  • Journalisation des paramètres : Enregistre tous les paramètres utilisés lors de l'entraînement.
  • Journalisation des artefacts : Enregistre les artefacts du modèle, y compris les poids et les fichiers de configuration, à la fin de l'entraînement.

Configuration et prérequis

Assure-toi que MLflow est installé. Si ce n'est pas le cas, installe-le via pip :

pip install mlflow

Vérifie que la journalisation MLflow est activée dans les paramètres d'Ultralytics. Habituellement, cela est contrôlé par la clé mlflow dans les paramètres. Consulte la page paramètres pour plus d'informations.

Mise à jour des paramètres MLflow d'Ultralytics

Dans ton environnement Python, appelle la méthode update sur l'objet settings pour modifier tes réglages :

from ultralytics import settings

# Update a setting
settings.update({"mlflow": True})

# Reset settings to default values
settings.reset()

Comment l'utiliser

Commandes

  1. Définir un nom de projet : Tu peux définir le nom du projet via une variable d'environnement :

    export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAME

    Ou utilise l'argument project=<project> lors de l'entraînement d'un modèle YOLO, par exemple yolo train project=my_project.

  2. Définir un nom d'exécution (run name) : Tout comme pour définir un nom de projet, tu peux définir le nom de l'exécution via une variable d'environnement :

    export MLFLOW_RUN=YOUR_RUN_NAME

    Ou utilise l'argument name=<name> lors de l'entraînement d'un modèle YOLO, par exemple yolo train project=my_project name=my_name.

  3. Démarrer le serveur MLflow local : Pour commencer le suivi, utilise :

    mlflow server --backend-store-uri runs/mlflow

    Cela démarrera un serveur local sur http://127.0.0.1:5000 par défaut et enregistrera tous les logs mlflow dans le répertoire 'runs/mlflow'. Pour diriger tes entraînements vers un autre serveur de suivi, exporte MLFLOW_TRACKING_URI avant l'entraînement :

    export MLFLOW_TRACKING_URI=http://127.0.0.1:5000
  4. Arrêter les instances du serveur MLflow : Pour arrêter toutes les instances MLflow en cours d'exécution, lance :

    ps aux | grep 'mlflow' | grep -v 'grep' | awk '{print $2}' | xargs kill -9

Journalisation

The logging is taken care of by the on_pretrain_routine_end, on_fit_epoch_end, and on_train_end callback functions. These functions are automatically called during the respective stages of the training process, and they handle the logging of parameters, metrics, and artifacts.

Exemples

  1. Journalisation de métriques personnalisées : Tu peux ajouter des métriques personnalisées à journaliser en modifiant le dictionnaire trainer.metrics avant que on_fit_epoch_end ne soit appelé.

  2. Voir l'expérience : Pour visualiser tes logs, accède à ton serveur MLflow (généralement http://127.0.0.1:5000) et sélectionne ton expérience et ton exécution. Interface de suivi d'expériences MLflow pour YOLO

  3. Voir l'exécution (Run) : Les exécutions sont des modèles individuels au sein d'une expérience. Clique sur une exécution pour voir les détails, y compris les artefacts téléchargés et les poids du modèle. Détails de l'exécution MLflow avec les artefacts YOLO

Désactiver MLflow

Pour désactiver la journalisation MLflow :

yolo settings mlflow=False

Conclusion

L'intégration de la journalisation MLflow avec Ultralytics YOLO offre un moyen simplifié de suivre tes expériences d'apprentissage automatique. Cela te permet de surveiller efficacement les métriques de performance et de gérer les artefacts, aidant ainsi au développement et au déploiement robustes de modèles. Pour plus de détails, visite la documentation officielle de MLflow.

FAQ

Comment puis-je configurer la journalisation MLflow avec Ultralytics YOLO ?

Pour configurer la journalisation MLflow avec Ultralytics YOLO, tu dois d'abord t'assurer que MLflow est installé. Tu peux l'installer via pip :

pip install mlflow

Ensuite, active la journalisation MLflow dans les paramètres d'Ultralytics. Cela peut être contrôlé en utilisant la clé mlflow. Pour plus d'informations, consulte le guide des paramètres.

Mise à jour des paramètres MLflow d'Ultralytics
from ultralytics import settings

# Update a setting
settings.update({"mlflow": True})

# Reset settings to default values
settings.reset()

Enfin, démarre un serveur MLflow local pour le suivi :

mlflow server --backend-store-uri runs/mlflow

Quelles métriques et paramètres puis-je journaliser en utilisant MLflow avec Ultralytics YOLO ?

Ultralytics YOLO avec MLflow prend en charge la journalisation de diverses métriques, paramètres et artefacts tout au long du processus d'entraînement :

  • Journalisation des métriques : Suit les métriques à la fin de chaque époque et une fois l'entraînement terminé.
  • Journalisation des paramètres : Enregistre tous les paramètres utilisés dans le processus d'entraînement.
  • Journalisation des artefacts : Sauvegarde les artefacts du modèle comme les poids et les fichiers de configuration après l'entraînement.

Pour des informations plus détaillées, visite la documentation de suivi d'Ultralytics YOLO.

Puis-je désactiver la journalisation MLflow une fois qu'elle est activée ?

Oui, tu peux désactiver la journalisation MLflow pour Ultralytics YOLO en mettant à jour les paramètres. Voici comment faire via la CLI :

yolo settings mlflow=False

Pour plus de personnalisation et pour réinitialiser les paramètres, consulte le guide des paramètres.

Comment puis-je démarrer et arrêter un serveur MLflow pour le suivi avec Ultralytics YOLO ?

Pour démarrer un serveur MLflow afin de suivre tes expériences dans Ultralytics YOLO, utilise la commande suivante :

mlflow server --backend-store-uri runs/mlflow

Cette commande démarre un serveur local sur http://127.0.0.1:5000 par défaut. Si tu dois arrêter les instances du serveur MLflow en cours d'exécution, utilise la commande bash suivante :

ps aux | grep 'mlflow' | grep -v 'grep' | awk '{print $2}' | xargs kill -9

Consulte la section des commandes pour plus d'options.

Quels sont les avantages d'intégrer MLflow avec Ultralytics YOLO pour le suivi des expériences ?

L'intégration de MLflow avec Ultralytics YOLO offre plusieurs avantages pour la gestion de tes expériences d'apprentissage automatique :

  • Suivi d'expériences amélioré : Suis et compare facilement différentes exécutions et leurs résultats.
  • Reproductibilité des modèles améliorée : Assure-toi que tes expériences sont reproductibles en journalisant tous les paramètres et artefacts.
  • Surveillance des performances : Visualise les métriques de performance au fil du temps pour prendre des décisions basées sur les données afin d'améliorer tes modèles.
  • Flux de travail simplifié : Automatise le processus de journalisation pour te concentrer davantage sur le développement du modèle plutôt que sur le suivi manuel.
  • Développement collaboratif : Partage les résultats des expériences avec les membres de l'équipe pour une meilleure collaboration et un partage des connaissances facilité.

Pour un examen approfondi de la configuration et de l'exploitation de MLflow avec Ultralytics YOLO, explore la documentation sur l'intégration MLflow pour Ultralytics YOLO.

Commentaires