Intégration de MLflow pour Ultralytics YOLO#
Introduction#
La journalisation des expériences est un aspect essentiel des workflows d'apprentissage automatique, qui permet de suivre diverses métriques, paramètres et artefacts. Elle contribue à 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, propose désormais une intégration avec MLflow, une plateforme open source de 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 dans ton projet Ultralytics YOLO.
Qu'est-ce que MLflow ?#
MLflow est une plateforme open source développée par Databricks pour gérer l'ensemble du cycle de vie de l'apprentissage automatique. Elle comprend des outils de suivi des expériences, de conditionnement du code en exécutions reproductibles, ainsi que de partage et de déploiement 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 : journalise les taux d'apprentissage, les pertes d'entraînement et les métriques de validation à la fin de chaque époque.
- Journalisation des paramètres : journalise tous les paramètres utilisés pendant l'entraînement.
- Journalisation des artefacts : journalise les artefacts du modèle, notamment les poids et les fichiers de configuration, à la fin de l'entraînement.
Configuration et prérequis#
Vérifie que MLflow est installé. Sinon, installe-le avec pip :
pip install mlflowVérifie que la journalisation MLflow est activée dans les paramètres Ultralytics. Elle est généralement contrôlée par la clé de paramètres mlflow. Consulte la page des paramètres pour en savoir plus.
Dans l'environnement Python, appelle la méthode update sur l'objet settings pour modifier tes paramètres :
from ultralytics import settings
# Mettre à jour un paramètre
settings.update({"mlflow": True})
# Rétablir les valeurs par défaut des paramètres
settings.reset()Utilisation#
Commandes#
-
Définir un nom de projet : tu peux définir le nom du projet à l'aide d'une variable d'environnement :
export MLFLOW_EXPERIMENT_NAME=YOUR_EXPERIMENT_NAMETu peux aussi utiliser 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 : comme pour le nom du projet, tu peux définir le nom de l'exécution à l'aide d'une variable d'environnement :
export MLFLOW_RUN=YOUR_RUN_NAMETu peux aussi utiliser 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 un serveur MLflow local : pour commencer le suivi, utilise :
mlflow server --backend-store-uri runs/mlflowPar défaut, un serveur local sera démarré à l'adresse
http://127.0.0.1:5000et tous les journaux MLflow seront enregistrés dans le répertoire 'runs/mlflow'. Pour diriger tes exécutions d'entraînement vers un autre serveur de suivi, exporteMLFLOW_TRACKING_URIavant l'entraînement :export MLFLOW_TRACKING_URI=http://127.0.0.1:5000 -
Garder l'exécution MLflow active après l'entraînement : par défaut, Ultralytics termine automatiquement l'exécution MLflow à la fin de l'entraînement. Pour la laisser ouverte (par exemple, afin de journaliser des métriques ou des artefacts supplémentaires depuis le même notebook), définis
MLFLOW_KEEP_RUN_ACTIVEsurTrueavant l'entraînement :export MLFLOW_KEEP_RUN_ACTIVE=TrueLes valeurs
1,true,yes,on,yettactivent ce comportement (sans distinction entre majuscules et minuscules). Toute autre valeur, y compris une variable non définie, conserve le comportement par défaut, qui consiste à fermer l’exécution. Pense à la fermer manuellement ensuite avecmlflow.end_run().
Journalisation#
La journalisation est prise en charge par les fonctions de rappel on_pretrain_routine_end, on_train_epoch_end, on_fit_epoch_end et on_train_end (fonctions de rappel). Ces fonctions sont automatiquement appelées aux étapes correspondantes du processus d’entraînement et gèrent la journalisation des paramètres, des métriques et des artefacts.
Exemples#
-
Journalisation de métriques personnalisées : tu peux ajouter des métriques personnalisées à journaliser en modifiant le dictionnaire
trainer.metricsavant l’appel deon_fit_epoch_end. -
Afficher l’expérience : pour consulter tes journaux, accède à ton serveur MLflow (généralement
http://127.0.0.1:5000) et sélectionne ton expérience et ton exécution.
-
Afficher l’exécution : les exécutions sont des modèles individuels au sein d’une expérience. Clique sur une exécution pour consulter ses détails, notamment les artefacts importé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 à Ultralytics YOLO offre un moyen simplifié de suivre tes expériences de machine learning. Elle te permet de surveiller les métriques de performance et de gérer efficacement les artefacts, contribuant ainsi au développement et au déploiement robustes de modèles. Pour en savoir plus, consulte la documentation officielle de MLflow.
FAQ#
Pour configurer la journalisation MLflow avec Ultralytics YOLO, tu dois d’abord vérifier que MLflow est installé. Tu peux l’installer avec pip :
pip install mlflowEnsuite, active la journalisation MLflow dans les paramètres d’Ultralytics. Tu peux la contrôler à l’aide de la clé
mlflow. Pour en savoir plus, consulte le guide des paramètres.Mettre à jour les paramètres MLflow d'Ultralyticsfrom ultralytics import settings # Mettre à jour un paramètre settings.update({"mlflow": True}) # Rétablir les valeurs par défaut des paramètres settings.reset()Enfin, démarre un serveur MLflow local pour le suivi :
mlflow server --backend-store-uri runs/mlflowUltralytics YOLO avec MLflow prend en charge la journalisation de diverses métriques, de divers 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 à la fin de l’entraînement.
- Journalisation des paramètres : journalise tous les paramètres utilisés au cours du processus d’entraînement.
- Journalisation des artefacts : enregistre les artefacts du modèle, comme les poids et les fichiers de configuration, après l’entraînement.
Pour plus de détails, consulte la documentation sur le suivi avec Ultralytics YOLO.
Oui, tu peux désactiver la journalisation MLflow pour Ultralytics YOLO en mettant à jour les paramètres. Voici comment procéder avec la CLI :
yolo settings mlflow=FalsePour personnaliser davantage les paramètres ou les réinitialiser, consulte le guide des paramètres.
Pour démarrer un serveur MLflow afin de suivre tes expériences avec Ultralytics YOLO, utilise la commande suivante :
mlflow server --backend-store-uri runs/mlflowPar défaut, cette commande démarre un serveur local à l’adresse
http://127.0.0.1:5000. Appuie surCtrl+Cdans ce terminal pour l’arrêter.Consulte la section des commandes pour découvrir d’autres options de commande.
Définis la variable d’environnement
MLFLOW_KEEP_RUN_ACTIVEsurTrueavant l’entraînement :export MLFLOW_KEEP_RUN_ACTIVE=TruePar défaut, cette valeur est
False; Ultralytics appelle doncmlflow.end_run()une fois l’entraînement terminé. AvecMLFLOW_KEEP_RUN_ACTIVE=True, l’exécution reste ouverte afin que tu puisses journaliser des métriques, des paramètres ou des artefacts supplémentaires depuis la même session Python — ferme-la toi-même avecmlflow.end_run()lorsque tu as terminé. Les valeurs1,true,yes,on,yettactivent ce comportement (sans distinction entre majuscules et minuscules).L’intégration de MLflow à Ultralytics YOLO offre plusieurs avantages pour la gestion de tes expériences de machine learning :
- Suivi amélioré des expériences : suis et compare facilement différentes exécutions et leurs résultats.
- Reproductibilité accrue des modèles : assure la reproductibilité de tes expériences en journalisant tous les paramètres et artefacts.
- Suivi des performances : visualise l’évolution des métriques de performance pour prendre des décisions éclairées sur l’amélioration des modèles.
- Flux de travail simplifié : automatise le processus de journalisation afin de consacrer davantage de temps au développement des modèles plutôt qu’au suivi manuel.
- Développement collaboratif : partage les résultats des expériences avec les membres de ton équipe pour mieux collaborer et partager les connaissances.
Pour découvrir en détail comment configurer et utiliser MLflow avec Ultralytics YOLO, consulte la documentation Intégration de MLflow à Ultralytics YOLO.