Intégration de MLflow pour Ultralytics YOLO#
Introduction#
L'enregistrement des expériences est un aspect crucial des flux de travail d'apprentissage automatique qui permet de suivre diverses métriques, paramètres et artéfacts. Il aide à améliorer la reproductibilité des modèles, à déboguer les problèmes et à optimiser les performances des modèles. Ultralytics YOLO, reconnu 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 de 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 de bout en bout de l'apprentissage automatique. Elle inclut des outils pour suivre les expériences, empaqueter le code dans des exécutions reproductibles, ainsi que pour partager et déployer des modèles. MLflow est conçue pour fonctionner avec n'importe quelle bibliothèque d'apprentissage automatique et langage de programmation.
Fonctionnalités#
- Journalisation des mesures : Enregistre les mesures à 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 mlflowAssure-toi que l'enregistrement MLflow est activé dans les paramètres d'Ultralytics. En général, cela est contrôlé par la clé de paramètres mlflow. Consulte la page des paramètres pour plus d'informations.
Dans l'environnement Python, appelle la méthode update sur l'objet settings pour modifier tes paramètres :
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, c'est-à-direyolo train project=my_project. -
Définir un nom d'exécution : De manière similaire à la définition d'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, c'est-à-direyolo train project=my_project name=my_name. -
Démarrer un 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 journaux mlflow dans le répertoire 'runs/mlflow'. Pour pointer 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 l'exécution MLflow automatiquement à la fin de l'entraînement. Pour maintenir l'exécution ouverte (par exemple, pour enregistrer des métriques ou des artéfacts supplémentaires depuis le même notebook), définis
MLFLOW_KEEP_RUN_ACTIVEsurTrueavant l'entraînement :export MLFLOW_KEEP_RUN_ACTIVE=TrueLa valeur est analysée sans distinction de majuscules et minuscules ; seule la chaîne
trueactive ce comportement, et toute autre valeur (y compris non définie) conserve le comportement par défaut qui ferme l'exécution. N'oublie pas de la fermer manuellement par la suite avecmlflow.end_run(). -
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#
La journalisation est prise en charge par les fonctions de rappel on_pretrain_routine_end, on_fit_epoch_end et on_train_end. Ces fonctions sont appelées automatiquement lors des étapes respectives du processus d'entraînement et gèrent la journalisation des paramètres, des métriques et des artefacts.
Exemples#
-
Enregistrement de métriques personnalisées : Tu peux ajouter des métriques personnalisées à enregistrer en modifiant le dictionnaire
trainer.metricsavant d'appeleron_fit_epoch_end. -
Afficher l'expérience : Pour afficher tes journaux, navigue vers 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 : Les exécutions sont des modèles individuels au sein d'une expérience. Clique sur une exécution pour voir ses 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 l'enregistrement MLflow avec Ultralytics YOLO offre un moyen simplifié de suivre tes expériences d'apprentissage automatique. Elle te permet de surveiller les métriques de performance et de gérer efficacement les artéfacts, favorisant ainsi un développement et un déploiement de modèles robustes. Pour plus de détails, visite la documentation officielle de MLflow.
FAQ#
Comment 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 l'enregistrement MLflow dans les paramètres d'Ultralytics. Cela peut être contrôlé à l'aide de 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 mesures et quels paramètres puis-je journaliser en utilisant MLflow avec Ultralytics YOLO ?#
Ultralytics YOLO avec MLflow prend en charge la journalisation de diverses mesures, paramètres et artefacts tout au long du processus d'entraînement :
- Enregistrement des métriques : Suit 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 dans le processus d'entraînement.
- Journalisation des artefacts : Sauvegarde les artefacts du modèle tels que les poids et les fichiers de configuration après l'entraînement.
Pour des informations plus détaillées, consulte la documentation sur le 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 tu peux le faire en utilisant la CLI :
yolo settings mlflow=FalsePour plus de personnalisation et pour réinitialiser les paramètres, réfère-toi au 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 des instances de serveurs 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 de commandes.
Comment garder l'exécution MLflow active après la fin de l'entraînement ?#
Définis la variable d'environnement MLFLOW_KEEP_RUN_ACTIVE sur True avant l'entraînement :
export MLFLOW_KEEP_RUN_ACTIVE=TruePar défaut, il s'agit de False, donc Ultralytics appelle mlflow.end_run() une fois l'entraînement terminé. Avec MLFLOW_KEEP_RUN_ACTIVE=True, l'exécution reste ouverte afin que tu puisses enregistrer des métriques, des paramètres ou des artéfacts supplémentaires depuis la même session Python — ferme-la toi-même avec mlflow.end_run() une fois terminé. La valeur est analysée sans distinction de majuscules et minuscules ; seul true active ce comportement.
Quels sont les avantages de l'intégration de 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 de machine learning :
- Suivi d'expérience amélioré : Suis et compare facilement différentes exécutions et leurs résultats.
- Reproductibilité des modèles améliorée : Assure que tes expériences sont reproductibles en journalisant tous les paramètres et artefacts.
- Surveillance des performances : Visualise les mesures de performance au fil du temps pour prendre des décisions basées sur les données afin d'améliorer le modèle.
- Flux de travail rationalisé : 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 d'expériences avec les membres de l'équipe pour une meilleure collaboration et un partage des connaissances.
Pour un aperçu approfondi de la configuration et de l'utilisation de MLflow avec Ultralytics YOLO, explore la documentation MLflow Integration for Ultralytics YOLO.