YOLO Vision 2026 :

Intégration de MLflow pour Ultralytics YOLO#

MLflow experiment tracking with 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 mlflow

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

Mettre à jour les paramètres MLflow d'Ultralytics

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#

  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, c'est-à-dire yolo train project=my_project.

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

    Ou utilise l'argument name=<name> lors de l'entraînement d'un modèle YOLO, c'est-à-dire yolo train project=my_project name=my_name.

  3. Démarrer un 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 journaux mlflow dans le répertoire 'runs/mlflow'. Pour pointer tes exécutions d'entraînement 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. 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_ACTIVE sur True avant l'entraînement :

    export MLFLOW_KEEP_RUN_ACTIVE=True

    Les valeurs 1, true, yes, on, y et t activent ce comportement (sans distinction majuscules/minuscules). Toute autre valeur, y compris une variable non définie, conserve le comportement par défaut qui consiste à fermer l'exécution. Pense ensuite à la fermer manuellement avec mlflow.end_run().

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#

  1. Enregistrement de métriques personnalisées : Tu peux ajouter des métriques personnalisées à enregistrer en modifiant le dictionnaire trainer.metrics avant d'appeler on_fit_epoch_end.

  2. View Experiment : Pour voir tes logs, navigue vers ton serveur MLflow (généralement http://127.0.0.1:5000) et sélectionne ton expérimentation et ton exécution. MLflow experiment tracking interface for YOLO

  3. View Run : Les exécutions sont des modèles individuels au sein d'une expérimentation. Clique sur une exécution pour voir ses détails, y compris les artefacts téléchargés et les poids du modèle. MLflow run details with YOLO artifacts

Désactiver MLflow#

Pour désactiver la journalisation MLflow :

yolo settings mlflow=False

Conclusion#

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#

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

    Mettre à jour les 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
  • 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.

  • 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=False

    Pour plus de personnalisation et pour réinitialiser les paramètres, réfère-toi au guide des paramètres.

  • 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. Appuie sur Ctrl+C dans ce terminal pour l'arrêter.

    Consulte la section des commandes pour plus d'options de commandes.

  • Définis la variable d'environnement MLFLOW_KEEP_RUN_ACTIVE sur True avant l'entraînement :

    export MLFLOW_KEEP_RUN_ACTIVE=True

    Par 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 pour te permettre d'enregistrer des métriques, des paramètres ou des artefacts supplémentaires depuis la même session Python — ferme-la toi-même avec mlflow.end_run() une fois terminé. Les valeurs 1, true, yes, on, y et t activent ce comportement (sans distinction majuscules/minuscules).

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

Commentaires