Ultralytics YOLO27 :

Intégration de MLflow avec Ultralytics YOLO#

MLflow experiment tracking with Ultralytics YOLO

Introduction#

La journalisation des expériences est un aspect essentiel des workflows de machine learning 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 dédiée à la gestion complète du cycle de vie du machine learning.

Cette page de documentation est un guide complet pour configurer et utiliser les fonctionnalités de journalisation de 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 le cycle de vie complet du machine learning. Elle comprend des outils pour suivre les expériences, empaqueter le code dans des exécutions reproductibles, ainsi que partager et déployer des modèles. MLflow est conçu pour fonctionner avec n’importe quelle bibliothèque de machine learning et n’importe quel langage de programmation.

Fonctionnalités#

  • Journalisation des métriques : journalise les métriques à la fin de chaque époque et de l’entraînement.
  • 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é. Si ce n’est pas le cas, installe-le avec pip :

pip install mlflow

Vérifie que la journalisation MLflow est activée dans les paramètres Ultralytics. Elle est généralement contrôlée par la clé 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()

Utilisation#

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

    Tu peux aussi utiliser 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 : comme pour le nom du projet, tu peux définir le nom de l’exécution via une variable d’environnement :

    export MLFLOW_RUN=YOUR_RUN_NAME

    Tu peux aussi utiliser 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 un serveur MLflow local : pour commencer le suivi, utilise :

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

    Cela démarre par défaut un serveur local à l’adresse http://127.0.0.1:5000 et enregistre tous les journaux mlflow dans le répertoire « runs/mlflow ». Pour diriger 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. Maintenir l’exécution MLflow active après l’entraînement : par défaut, Ultralytics termine automatiquement l’exécution MLflow lorsque l’entraînement est terminé. Pour laisser l’exécution ouverte (par exemple, afin de journaliser des métriques ou des artefacts 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 entre majuscules et minuscules). Toute autre valeur, y compris une variable non définie, conserve le comportement par défaut de fermeture de l’exécution. N’oublie pas de la fermer manuellement ensuite avec mlflow.end_run().

Journalisation#

La journalisation est prise en charge par les on_pretrain_routine_end, on_fit_epoch_end et on_train_end fonctions de rappel. Ces fonctions sont appelées automatiquement pendant les étapes correspondantes du processus d’entraînement et prennent en charge la journalisation des paramètres, des métriques et des artefacts.

Exemples#

  1. Journaliser des métriques personnalisées : tu peux ajouter des métriques personnalisées à journaliser en modifiant le dictionnaire trainer.metrics avant l’appel de on_fit_epoch_end.

  2. 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. MLflow experiment tracking interface for YOLO

  3. Afficher l’exécution : Les exécutions sont des modèles individuels au sein d’une expérience. Clique sur une exécution et consulte les détails de l’exécution, notamment les artefacts téléversé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 la journalisation MLflow avec Ultralytics YOLO offre un moyen rationalisé de suivre tes expériences de machine learning. Elle te permet de surveiller efficacement les métriques de performance et de gérer les artefacts, ce qui favorise le développement et le déploiement de modèles robustes. Pour plus de détails, 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 mlflow

    Ensuite, active la journalisation MLflow dans les paramètres Ultralytics. Elle peut être contrôlée à 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 métriques, de paramètres et d’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 pendant le processus d’entraînement.
    • Journalisation des artefacts : enregistre les artefacts du modèle, tels que les poids et les fichiers de configuration, après l’entraînement.

    Pour plus d’informations, consulte la documentation du suivi 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=False

    Pour 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/mlflow

    Cette commande démarre par défaut un serveur local à l’adresse http://127.0.0.1:5000. Appuie sur Ctrl+C dans ce terminal pour l’arrêter.

    Consulte la section consacrée aux commandes pour découvrir d’autres options.

  • 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, sa valeur est False, donc Ultralytics appelle mlflow.end_run() à la fin de l’entraînement. Avec MLFLOW_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 avec mlflow.end_run() lorsque tu as terminé. Les valeurs 1, true, yes, on, y et t activent ce comportement (sans distinction entre majuscules et minuscules).

  • L’intégration de MLflow à Ultralytics YOLO offre plusieurs avantages pour gérer tes expériences de machine learning :

    • Suivi amélioré des expériences : suis et compare facilement différentes exécutions ainsi que leurs résultats.
    • Reproductibilité accrue des modèles : assure la reproductibilité de tes expériences en journalisant tous les paramètres et artefacts.
    • Surveillance des performances : visualise l’évolution des métriques de performance au fil du temps pour prendre des décisions fondées sur les données et améliorer tes modèles.
    • Workflow rationalisé : automatise le processus de journalisation pour te concentrer davantage sur le développement des modèles plutôt que sur le suivi manuel.
    • Développement collaboratif : partage les résultats des expériences avec les membres de ton équipe afin de favoriser la collaboration et le partage des connaissances.

    Pour découvrir en détail comment configurer et exploiter MLflow avec Ultralytics YOLO, consulte la documentation Intégration de MLflow avec Ultralytics YOLO.

Commentaires