Meet YOLO26: next-gen vision AI.

Link to this sectionIntégration de ClearML#

ClearML MLOps experiment tracking platform

Link to this sectionÀ propos de ClearML#

ClearML est une plateforme MLOps open-source conçue pour rationaliser les flux de travail de machine learning et gagner du temps d'ingénierie.

  • 🔨 Suis chaque exécution d'entraînement YOLOv5 dans le gestionnaire d'expériences.
  • 🔧 Versionne et accède à tes données d'entraînement avec l'outil de versionnage de données intégré de ClearML.
  • 🔦 Entraîne et surveille à distance les exécutions de YOLOv5 en utilisant le ClearML Agent.
  • 🔬 Trouve le meilleur mAP avec l'optimisation des hyperparamètres de ClearML.
  • 🔭 Transforme ton modèle YOLOv5 entraîné en une API en quelques commandes grâce à ClearML Serving.

Utilise autant ou aussi peu de ces outils que nécessaire — commence uniquement avec le gestionnaire d'expériences, ou enchaîne le tout dans un pipeline complet.

Tableau de bord des scalaires ClearML affichant les métriques d'entraînement YOLOv5

Link to this section🦾 Configuration#

ClearML doit communiquer avec un serveur pour suivre tes expériences et tes données. Tu as deux options :

Ensuite, installe le paquet Python clearml et connecte le SDK à ton serveur :

pip install clearml

Génère des identifiants dans Paramètres → Espace de travail → Créer de nouveaux identifiants (en haut à droite de l'interface utilisateur de ClearML), puis exécute :

clearml-init

Suis les instructions. C'est tout — la configuration est terminée.

Link to this section🚀 Entraînement de YOLOv5 avec ClearML#

Pour activer le suivi des expériences, installe le paquet pip ClearML si ce n'est pas déjà fait :

pip install clearml

Cela permettra l'intégration avec le script d'entraînement YOLOv5. Chaque exécution d'entraînement sera désormais capturée et stockée par le gestionnaire d'expériences de ClearML.

Pour personnaliser les noms de projet et de tâche, passe --project et --name à train.py. Les valeurs par défaut sont YOLOv5 et Training. ClearML utilise / comme délimiteur de sous-projet, alors évite le / dans les noms de projet personnalisés.

python train.py --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cache

Ou avec des noms personnalisés :

python train.py --project my_project --name my_training --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cache

Chaque exécution capture :

  • Le code source et les modifications non validées
  • Les paquets installés
  • Les hyperparamètres
  • Les points de contrôle du modèle (utilise --save-period n pour enregistrer toutes les n époques)
  • La sortie console
  • Les scalaires (mAP_0.5, mAP_0.5:0.95, précision, rappel, pertes, taux d'apprentissage)
  • Les détails de la machine, le temps d'exécution et la date de création
  • Les graphiques générés tels que le corrélogramme des étiquettes et la matrice de confusion
  • Les images avec des boîtes englobantes par époque
  • Les visualisations mosaïques par époque
  • Les images de validation par époque

Tout apparaît dans l'interface utilisateur de ClearML afin que tu puisses surveiller l'entraînement à un seul endroit. Ajoute des colonnes personnalisées (par exemple, mAP_0.5) pour trier par modèle le plus performant, ou sélectionne plusieurs expériences pour les comparer côte à côte.

Continue la lecture pour l'optimisation des hyperparamètres et l'exécution à distance.

Link to this section🔗 Gestion du versionnage des jeux de données#

Le versionnage des données séparément du code facilite l'extraction de la dernière version et garantit une reproductibilité totale. Ce dépôt accepte un ID de version de jeu de données, récupère les données automatiquement si elles sont manquantes et enregistre l'ID en tant que paramètre de tâche afin que tu saches toujours quelles données ont été utilisées dans quelle expérience.

Interface de gestion du versionnage de jeux de données ClearML

Link to this sectionPrépare ton jeu de données#

Le dépôt YOLOv5 prend en charge de nombreux jeux de données via des fichiers de configuration YAML. Par défaut, les jeux de données se téléchargent dans le dossier ../datasets par rapport à la racine du dépôt. Après avoir téléchargé coco128, la structure du dossier ressemble à ceci :

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ LICENSE
        |_ README.txt

N'importe quel jeu de données fonctionne, à condition de conserver cette structure.

Ensuite, copie le fichier YAML du jeu de données dans le dossier racine du jeu de données — ClearML lit ce fichier pour utiliser le jeu de données correctement. Tu peux écrire ton propre YAML en suivant la disposition de l'exemple, en t'assurant qu'il définit path, train, test, val, nc, et names.

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ coco128.yaml  # <---- HERE
        |_ LICENSE
        |_ README.txt

Link to this sectionTéléverse ton jeu de données#

Pour enregistrer le jeu de données en tant que jeu de données ClearML versionné, rends-toi dans son dossier racine et exécute :

cd ../datasets/coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .

clearml-data sync est un raccourci pour la séquence suivante, que tu peux également exécuter explicitement :

# Add --parent <parent_dataset_id> to base this version on a previous one.
# Duplicate files are not re-uploaded.
clearml-data create --name coco128 --project YOLOv5
clearml-data add --files .
clearml-data close

Link to this sectionEntraîner sur un jeu de données ClearML#

Une fois le jeu de données enregistré, pointe l'entraînement vers celui-ci par son ID :

python train.py --img 640 --batch 16 --epochs 3 --data clearml://YOUR_DATASET_ID --weights yolov5s.pt --cache

Link to this section👀 Optimisation des hyperparamètres#

Avec des expériences et des données versionnées, tu peux construire par-dessus. Parce que chaque expérience suivie capture l'environnement complet — code, paquets installés et configuration — les exécutions sont totalement reproductibles. ClearML te permet de cloner une expérience, de modifier ses paramètres et de la relancer automatiquement, ce qui est la base de l'optimisation des hyperparamètres (HPO).

Pour exécuter le HPO localement, utilise le script fourni. Assure-toi d'abord qu'une tâche d'entraînement existe dans le gestionnaire d'expériences — le script la clone et fait varier ses hyperparamètres.

Remplis l'ID de la tâche modèle dans utils/loggers/clearml/hpo.py, puis exécute :

# Install Optuna or change the optimizer to RandomSearch.
pip install optuna
python utils/loggers/clearml/hpo.py

Remplace task.execute_locally() par task.execute() pour envoyer le travail vers une file d'attente ClearML afin qu'un agent distant le récupère.

Tableau de bord HPO de ClearML avec les métriques YOLOv5

Link to this section🤯 Exécution à distance (Avancé)#

Exécuter le HPO localement est pratique, mais tu voudras souvent des expériences sur du matériel plus puissant — une machine GPU sur site ou une instance cloud. C'est le rôle du ClearML Agent :

Chaque expérience suivie contient tout le nécessaire pour la reproduire sur une autre machine (paquets installés, modifications non validées et configuration). Un agent ClearML écoute une file d'attente, récupère les tâches entrantes, recrée l'environnement, exécute le travail et diffuse les scalaires et les graphiques vers le gestionnaire d'expériences.

Transforme n'importe quelle machine — une VM cloud, une boîte GPU locale ou un ordinateur portable — en un agent ClearML avec :

clearml-agent daemon --queue QUEUES_TO_LISTEN_TO [--docker]

Link to this sectionClonage, modification et mise en file d'attente#

Avec un agent en cours d'exécution, tu peux lui assigner du travail directement depuis l'interface utilisateur :

  • 🪄 Fais un clic droit sur une expérience et clone-la.
  • 🎯 Modifie ses hyperparamètres.
  • ⏳ Fais un clic droit sur la tâche clonée et ajoute-la à une file d'attente cible.

Mettre une tâche en file d'attente depuis l'interface utilisateur

Link to this sectionExécuter une tâche à distance#

Tu peux également marquer un script en cours d'exécution pour une exécution à distance par programmation en ajoutant task.execute_remotely() après l'instanciation du logger ClearML. Ajoute la ligne surlignée à train.py :

# ...
# Loggers
data_dict = None
if RANK in {-1, 0}:
    loggers = Loggers(save_dir, weights, opt, hyp, LOGGER)  # loggers instance
    if loggers.clearml:
        loggers.clearml.task.execute_remotely(queue="my_queue")  # <------ ADD THIS LINE
        # data_dict is None unless the user selected a ClearML dataset, in which case ClearML fills it in.
        data_dict = loggers.clearml.data_dict
# ...

Après ce changement, l'exécution du script d'entraînement s'exécute jusqu'à cette ligne, conditionne le code et l'envoie à la file d'attente.

Link to this sectionWorkers à mise à l'échelle automatique#

ClearML est fourni avec des autoscalers qui démarrent des machines distantes sur AWS, GCP ou Azure lorsqu'une file d'attente a des expériences en attente, les transforment en agents ClearML et les arrêtent lorsque le travail est terminé — ainsi, tu ne paies que pour le calcul qui est réellement en cours.

Regarde la vidéo de démarrage ci-dessous :

Regarder la vidéo

Link to this sectionEn savoir plus#

Pour plus d'informations sur l'intégration de ClearML avec les modèles Ultralytics, consulte notre guide d'intégration ClearML et explore comment tu peux améliorer ton flux de travail MLOps avec d'autres outils de suivi d'expériences.

Contributeurs

Commentaires