En cliquant sur « Accepter tous les cookies », vous acceptez le stockage de cookies sur votre appareil pour améliorer la navigation sur le site, analyser son utilisation et contribuer à nos efforts de marketing. Plus d’infos
Paramètres des cookies
En cliquant sur « Accepter tous les cookies », vous acceptez le stockage de cookies sur votre appareil pour améliorer la navigation sur le site, analyser son utilisation et contribuer à nos efforts de marketing. Plus d’infos
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.
Faites passer le suivi de vos expériences au niveau supérieur
Suivez chaque entraînement YOLOv5 dans le gestionnaire d'expériences.
Versionnez et accédez facilement à vos données de formation personnalisées grâce à l'outil intégré de versionnement des données ClearML .
Obtenez le meilleur mAP grâce à l'optimisation des hyperparamètres ClearML .
Transformez votre modèle YOLOv5 nouvellement formé en une API avec seulement quelques commandes à l'aide de ClearML Serving.
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.
Mise en place
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 !
Installer le paquetagepython clearml : pip install clearml
Connectez le ClearML SDK au serveur en créant des identifiants (allez en haut à droite dans Settings → Workspace → Create new credentials), puis exécutez la commande ci-dessous et suivez les instructions : clearml
Et voilà ! Vous êtes prêt à démarrer...
Former YOLOv5 avec ClearML
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
Informations générales telles que les détails de la machine, la durée d'exécution, la date de création, etc.
Tous les tracés produits, tels que le correlogramme d'étiquettes et la matrice de confusion
Images avec des boîtes englobantes par époque
Mosaïque par époque
Images de validation par époque
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 !
Gestion des versions de l'ensemble de données
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 !
Préparer votre jeu de données
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 :
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.
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 :
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
Entraînement à l'aide d'un ensemble de données ClearML
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.
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écution à distance (Avancé)
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.
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]
Clonage, édition et mise en file d'attente
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
Exécution d'une tâche à distance
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 !
Mise à l'échelle automatique des workers
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.