En cliquant sur "Accepter tous les cookies", vous acceptez que des cookies soient stockés sur votre appareil afin d'améliorer la navigation sur le site, d'analyser l'utilisation du site et de nous aider dans nos efforts de marketing. Plus d'informations
Paramètres des cookies
En cliquant sur "Accepter tous les cookies", vous acceptez que des cookies soient stockés sur votre appareil afin d'améliorer la navigation sur le site, d'analyser l'utilisation du site et de nous aider dans nos efforts de marketing. Plus d'informations
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.
Grâce à cette intégration, il est encore plus simple d'entraîner un modèle YOLOv5 et d'utiliser le gestionnaire d'expériences ClearML pour le suivre 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.
Passez à la vitesse supérieure en matière de suivi des expériences
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 décider combien de ces outils vous voulez 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 trace de 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, il n'y a pas de problème !
Installer le paquetage python 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-init
Et voilà ! Vous êtes prêt à commencer...
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 : utils/loggers/clearml/clearml_utils.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 graphiques produits, tels que le corrélogramme des étiquettes et la matrice de confusion
Images avec boîtes de délimitation par époque
Mosaïque par époque
Images de validation par épisode
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_0.5) afin de pouvoir facilement trier le modèle le plus performant. Vous pouvez également sélectionner plusieurs expériences et les comparer directement !
Il y a encore plus à faire avec toutes ces informations, comme l'optimisation des hyperparamètres et l'exécution à distance, alors continuez à lire pour apprendre comment !
Gestion de la version des données
Versionner vos données séparément de votre code est généralement une bonne idée et facilite l'acquisition de la dernière version. Ce référentiel prend en charge la fourniture d'un identifiant de version du jeu de données, et il s'assurera d'obtenir les données si elles ne sont pas encore disponibles. En outre, ce flux de travail enregistre également l'ID du jeu de données utilisé dans les paramètres de la tâche, de sorte que vous saurez toujours avec certitude quelles données ont été utilisées dans quelle expérience !
Préparez 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 ensemble de données. N'hésitez pas à utiliser les vôtres, tant que vous respectez cette structure de dossiers.
Ensuite, ⚠️copy le fichier YAML correspondant à la racine du jeu de données 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.
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 :
Maintenant que nous avons nos expériences et notre version des données, il est temps de voir ce que nous pouvons construire au-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 à utils/loggers/clearml/hpo.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 utils/loggers/clearml/hpo.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-agent daemon --queue [--docker]
Clonage, modification et mise en file d'attente
Une fois notre agent en marche, nous pouvons lui donner du travail. Vous vous souvenez dans la section HPO que nous pouvons cloner une tâche et éditer les hyperparamètres ? Nous pouvons également le faire à partir de l'interface !
🪄 Cloner l'expérience en cliquant dessus avec le bouton droit de la souris
🎯 Modifiez les hyperparamètres pour qu'ils correspondent à ce que vous souhaitez.
⏳ Enqueuter la tâche dans l'une des files d'attente en cliquant dessus avec le bouton droit de la souris.
Exécuter 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 puisse commencer à 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 travailleurs
ClearML est également livré avec des auto scalers ! 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.