Former et surveiller à distance Ultralytics YOLOv5 l'aide de ClearML
Découvrez notre partenariat avec ClearML pour une expérience Ultralytics YOLOv5 améliorée avec une intégration ML transparente, un suivi des expériences, et plus encore.

Découvrez notre partenariat avec ClearML pour une expérience Ultralytics YOLOv5 améliorée avec une intégration ML transparente, un suivi des expériences, et plus encore.

Chez Ultralytics , nous avons des partenariats commerciaux avec d'autres startups pour nous aider à financer la recherche et le développement de nos formidables outils open-source, comme YOLOv5, afin qu'ils restent gratuits pour tout le monde. Cet article peut contenir des liens d'affiliation vers ces partenaires.
ClearML est notre nouveau partenaire : une boîte à outils open-source conçue pour vous faire gagner du temps.
Avec pour mission d'accélérer l'adoption de la ML, ClearML permet d'intégrer la ML de manière transparente dans tous les produits logiciels et matériels existants.
Cette intégration simplifie encore davantage la formation d'une équipe d'experts. YOLOv5 et d'utiliser le gestionnaire d'expériences ClearML pour le track automatiquement. Vous pouvez facilement spécifier l'identifiant de la version d'un jeu de données ClearML en tant qu'entrée de données, et il sera automatiquement utilisé pour entraîner votre modèle.
C'est à vous de choisir le nombre d'outils que vous souhaitez utiliser. Vous pouvez vous en tenir au gestionnaire d'expériences, ou les enchaîner tous ensemble dans un pipeline impressionnant.
Pour garder une track vos expériences et de vos données, ClearML a besoin de communiquer avec un serveur. Vous avez deux options pour cela : soit vous vous inscrivez gratuitement au ClearML Hosted Service, soit vous créez votre propre serveur, voir ici.
Même le serveur est open source, donc si vous traitez des données sensibles, ce n'est pas un problème !
Et voilà ! Vous êtes prêt à démarrer...
Pour activer le suivi des expériences ClearML , il suffit d'installer le paquetage pip ClearML .
pip install clearml
Cela permettra l'intégration avec le script de formation YOLOv5 . A partir de maintenant, chaque formation sera capturée et stockée par le gestionnaire d'expériences ClearML . Si vous souhaitez modifier le nom du projet ou le nom de la tâche, rendez-vous dans notre logger personnalisé, où vous pourrez le modifier : clearml.py
python train.py --img 640 --batch 16 --epochs 3 --data coco128yaml --weights yolov5s.pt --cache
Ceci capturera :
Ce n'est pas si mal ! Nous pouvons maintenant visualiser toutes ces informations dans l'interface ClearML afin d'obtenir une vue d'ensemble de la progression de notre formation. Ajoutez des colonnes personnalisées à la vue du tableau (comme par exemple mAP.5) afin de pouvoir facilement trier le modèle le plus performant. Vous pouvez également sélectionner plusieurs expériences et les comparer directement !
Nous pouvons faire encore plus avec toutes ces informations, comme l'optimisation des hyperparamètres et l'exécution à distance, alors continuez à lire pour savoir comment !
Le versionnage de vos données séparément de votre code est généralement une bonne idée et facilite également l'acquisition de la dernière version. Ce référentiel prend en charge la fourniture d'un ID de version de l'ensemble de données, et il s'assurera d'obtenir les données si elles ne sont pas encore là. De plus, ce flux de travail enregistre également l'ID de l'ensemble de données utilisé dans le cadre des paramètres de la tâche, vous saurez donc toujours avec certitude quelles données ont été utilisées dans quelle expérience !
Le référentiel YOLOv5 prend en charge un certain nombre de jeux de données différents en utilisant des fichiers YAML contenant leurs informations. Par défaut, les jeux de données sont téléchargés dans le dossier ../datasets par rapport au dossier racine du référentiel. Ainsi, si vous avez téléchargé le jeu de données coco128 en utilisant le lien dans le YAML ou avec les scripts fournis par yolov5, vous obtenez cette structure de dossier :
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ LICENSE
|_ README.txt
Mais il peut s'agir de n'importe quel jeu de données de votre choix. N'hésitez pas à utiliser le vôtre, à condition de respecter cette structure de dossiers.
Ensuite, ⚠️copy le fichier YAML correspondant à la racine du dataset folder⚠️. Ces fichiers YAML contiennent les informations dont ClearML aura besoin pour utiliser correctement le jeu de données. Vous pouvez bien sûr les créer vous-même, il suffit de suivre la structure des exemples de fichiers YAML.
En gros, nous avons besoin des clés suivantes : path, train, test, val, nc, names.
.
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ coco128yaml # ← ICI !
|_ LICENSE
|_ README.txt
Pour intégrer ce jeu de données dans ClearML en tant que jeu de données versionné, accédez au dossier racine du jeu de données et exécutez la commande suivante :
cd coco128
clearml sync --project YOLOv5 --name coco128 --folder .
La commande clearml sync est en fait une commande abrégée. Vous pouvez également exécuter ces commandes l'une après l'autre :
# Ajoutez éventuellement --parent si vous voulez baser
# cette version sur une autre version de l'ensemble de données, afin qu'aucun fichier en double ne soit téléchargé !
clearml create --name coco128 --project YOLOv5
clearml add --files .
clearml close
Maintenant que vous disposez d'un ensemble de données ClearML , vous pouvez très simplement l'utiliser pour entraîner des modèles YOLOv5 personnalisés.
python train.py --img 640 --batch 16 --epochs 3 --data clearml:// --weights yolov5s.pt --cache
Maintenant que nos expériences et notre version de données sont prêtes, il est temps de voir ce que nous pouvons construire par-dessus !
En utilisant les informations sur le code, les paquets installés et les détails de l'environnement, l'expérience elle-même est maintenant complètement reproductible. En fait, ClearML vous permet de cloner une expérience et même de changer ses paramètres. Nous pouvons alors la réexécuter automatiquement avec ces nouveaux paramètres, c'est en fait ce que fait HPO !
Pour exécuter l'optimisation des hyperparamètres localement, nous avons inclus un script prédéfini. Il suffit de s'assurer qu'une tâche d'entraînement a été exécutée au moins une fois, de sorte qu'elle se trouve dans le gestionnaire d'expériences ClearML , nous allons essentiellement la cloner et modifier ses hyperparamètres.
Vous devrez remplir l'ID de cette tâche modèle dans le script qui se trouve à clearml.py et ensuite l'exécuter. Vous pouvez remplacer task.execute_locally() par task.execute() pour la placer dans une file d'attente ClearML et demander à un agent distant de travailler dessus à la place.
# Pour utiliser optuna, installez-le d'abord, sinon vous pouvez changer l'optimiseur en RandomSearch pip install optuna python clearml.py
Exécuter HPO localement est très pratique, mais que faire si nous voulons exécuter nos expériences sur une machine distante ? Peut-être avez-vous accès à une machine GPU très puissante sur site, ou disposez-vous d'un budget pour utiliser des GPU en nuage. C'est là que l'agent ClearML entre en jeu.
Découvrez ce que l'agent peut faire ici :
En bref : chaque expérience suivie par le gestionnaire d'expériences contient suffisamment d'informations pour la reproduire sur une machine différente (paquets installés, changements non validés, etc.). C'est ce que fait un agent ClearML : il écoute une file d'attente pour les tâches entrantes et lorsqu'il en trouve une, il recrée l'environnement et l'exécute tout en continuant à rapporter les scalaires, les tracés, etc. au gestionnaire d'expériences.
Vous pouvez transformer n'importe quelle machine (une VM dans le nuage, une machine GPU locale, votre propre ordinateur portable) en un agent ClearML en l'exécutant simplement :
clearml daemon --queue [--docker]
Maintenant que notre agent est en cours d'exécution, nous pouvons lui donner du travail. Vous vous souvenez de la section HPO où nous pouvions cloner une tâche et modifier les hyperparamètres ? Nous pouvons le faire aussi depuis l'interface !
🪄 Clonez l'expérience en cliquant dessus avec le bouton droit de la souris
🎯 Modifiez les hyperparamètres selon vos souhaits
⏳ Mettre la tâche en file d'attente dans l'une des files d'attente en cliquant dessus avec le bouton droit de la souris
Vous pouvez maintenant cloner une tâche comme nous l'avons expliqué ci-dessus, ou simplement marquer votre script actuel en ajoutant task.execute_remotely() et lors de l'exécution, il sera placé dans une file d'attente, pour que l'agent commence à travailler dessus!
Pour exécuter le script de formation YOLOv5 à distance, il suffit d'ajouter cette ligne au script training.py après l'instanciation du logger ClearML :
# ... # 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 either None is user did not choose for ClearML dataset or is filled in by ClearML data_dict = loggers.clearml.data_dict # ...
Lors de l'exécution du script de formation après cette modification, python exécutera le script jusqu'à cette ligne, après quoi il empaquettera le code et l'enverra dans la file d'attente à la place !
ClearML est également doté d'un outil de mise à l'échelle automatique ! Cet outil démarre automatiquement de nouvelles machines distantes dans le cloud de votre choix (AWS, GCP, Azure) et les transforme en agents ClearML pour vous chaque fois que des expériences sont détectées dans la file d'attente. Une fois les tâches traitées, l'auto scaler arrêtera automatiquement les machines distantes, et vous cesserez de payer ! Regardez la vidéo de démarrage de l'auto scaler ci-dessous.
Des questions ? Rejoignez notre communauté et posez votre question dès aujourd'hui !