Intégration MLflow pour 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 mlflowVé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.
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
-
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_NAMEOu utilise l'argument
project=<project>lors de l'entraînement d'un modèle YOLO, par exempleyolo train project=my_project. -
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_NAMEOu utilise l'argument
name=<name>lors de l'entraînement d'un modèle YOLO, par exempleyolo train project=my_project name=my_name. -
Démarrer le serveur MLflow local : Pour commencer le suivi, utilise :
mlflow server --backend-store-uri runs/mlflowCela démarrera un serveur local sur
http://127.0.0.1:5000par 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, exporteMLFLOW_TRACKING_URIavant l'entraînement :export MLFLOW_TRACKING_URI=http://127.0.0.1:5000 -
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
-
Journalisation de métriques personnalisées : Tu peux ajouter des métriques personnalisées à journaliser en modifiant le dictionnaire
trainer.metricsavant queon_fit_epoch_endne soit appelé. -
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.
-
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ésactiver MLflow
Pour désactiver la journalisation MLflow :
yolo settings mlflow=FalseConclusion
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 mlflowEnsuite, 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.
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/mlflowQuelles 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=FalsePour 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/mlflowCette 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 -9Consulte 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.