Contrôle vert
Lien copié dans le presse-papiers

Entraîne et surveille à distance Ultralytics YOLOv5 à l'aide de ClearML

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

À Ultralytics , nous nous associons commercialement à 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 te faire gagner du temps.

Avec pour mission d'accélérer l'adoption de la ML, ClearML rend la ML facile à intégrer dans tous les produits logiciels et matériels existants.

Cette intégration rend encore plus simple la formation d'un modèle et l'utilisation du gestionnaire d'expériences pour en faire le suivi automatiquement. YOLOv5 et d'utiliser le gestionnaire d'expériences ClearML pour le suivre automatiquement. Tu peux facilement spécifier un identifiant de version du jeu de données ClearML comme entrée de données et il sera automatiquement utilisé pour former ton modèle.

Fais passer ton suivi des expériences au niveau supérieur

  • Effectue le suivi de chaque formation YOLOv5 dans le gestionnaire d'expériences.
  • Versionne et accède facilement à tes données de formation personnalisées grâce à l'outil de versionnage des données intégré à ClearML .
  • Obtiens le meilleur mAP en utilisant ClearML Optimisation des hyperparamètres.
  • Transforme ton modèle YOLOv5 nouvellement formé en API avec seulement quelques commandes à l'aide de ClearML Serving.

C'est à toi de décider combien de ces outils tu veux utiliser, tu peux t'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 tes expériences et de tes données, ClearML a besoin de communiquer avec un serveur. Tu as deux options pour cela : soit tu t'inscris gratuitement au service hébergé ClearML , soit tu installes ton propre serveur, voir ici.

Même le serveur est open-source, donc si tu as affaire à des données sensibles, il n'y a pas de problème !

  1. Installe le paquet clearml python : pip install clearml
  2. Connecte le SDK ClearML au serveur en créant des identifiants (va en haut à droite à Settings -> Workspace -> Create new credentials), puis exécute la commande ci-dessous et suis les instructions : clearml-init

Et voilà ! Tu es prêt à commencer...

Formation YOLOv5 Avec ClearML

Pour activer le suivi des expériences sur ClearML , il suffit d'installer le paquet pip ClearML .

pip install clearml

Cela permettra l'intégration avec le script de formation YOLOv5 . À partir de maintenant, chaque formation sera capturée et stockée par le gestionnaire d'expériences ClearML . Si tu veux changer le nom du projet ou le nom de la tâche, rends-toi sur notre logger personnalisé, où tu pourras le modifier : utils/loggers/clearml/clearml_utils.py

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

Cela permettra de capturer :

  • Code source + changements non validés
  • Paquets installés
  • (Hyper)paramètres
  • Fichiers de modèle (utilise --save-period n pour sauvegarder un point de contrôle toutes les n époques)
  • Sortie de la console
  • Scalaires (mAP_0.5, mAP_0.5:0.95, précision, rappel, pertes, taux d'apprentissage, ...)
  • 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 époch

Ce n'est pas si mal ! Maintenant, nous pouvons visualiser toutes ces informations dans l'interface utilisateur ClearML pour avoir une vue d'ensemble de la progression de notre formation. Ajoute des colonnes personnalisées à la vue du tableau (comme par exemple mAP_0.5) pour pouvoir facilement trier le modèle le plus performant. Tu peux aussi 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 continue de lire pour apprendre comment !

Gestion de la version des données

Versionner tes données séparément de ton 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 s'assurera d'obtenir les données si elles n'existent pas encore. En outre, ce flux de travail enregistre également l'identifiant du jeu de données utilisé dans les paramètres de la tâche, de sorte que tu sauras toujours avec certitude quelles données ont été utilisées dans quelle expérience !

Données, Ultralytics YOLOv5  et ClearML

Prépare ton 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 tu as téléchargé le jeu de données coco128 en utilisant le lien dans le YAML ou avec les scripts fournis par yolov5, tu obtiens cette structure de dossier :

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

Mais il peut s'agir de n'importe quel ensemble de données que tu souhaites. N'hésite pas à utiliser les tiens, tant que tu respectes la structure de ce dossier.

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. Tu peux aussi le faire toi-même, bien sûr, il suffit de suivre la structure des YAML d'exemple.

En gros, nous avons besoin des clés suivantes : path, train, test, val, nc, names.

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

Télécharger ton jeu de données

Pour intégrer ce jeu de données dans ClearML en tant que jeu de données versionné, va dans le dossier racine du jeu de données et exécute la commande suivante :

cd coco128

clearml-data sync --projet YOLOv5 --name coco128 --dossier .


La commande clearml-data sync est en fait une commande abrégée. Tu peux aussi exécuter ces commandes l'une après l'autre :

# Ajoute optionnellement --parent si tu veux baser

# cette version sur une autre version du jeu de données, afin qu'aucun fichier en double ne soit téléchargé !

clearml-data create --name coco128 --project YOLOv5/p>

clearml-data add --files .

clearml-data close

Entraînement à la course à l'aide d'un ensemble de données ClearML

Maintenant que tu as un ensemble de données ClearML , tu peux 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

Optimisation des hyperparamètres

Maintenant que nous avons nos expériences et notre version des données, il est temps de jeter un coup d'œil à 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 te permet de cloner une expérience et même de changer ses paramètres. Il suffit ensuite de la réexécuter automatiquement avec ces nouveaux paramètres, c'est en gros ce que fait HPO !

Pour exécuter l'optimisation des hyperparamètres localement, nous avons inclus un script préétabli pour toi. Assure-toi simplement qu'une tâche d'apprentissage 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.

Tu devras 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. Tu peux remplacer task.execute_locally() par task.execute() pour la mettre dans une file d'attente ClearML et demander à un agent distant de travailler dessus à la place.

# Pour utiliser optuna, installe-le d'abord, sinon tu peux changer l'optimiseur en RandomSearch pip install optuna python utils/loggers/clearml/hpo.py

HPO, Ultralytics YOLOv5  et ClearML

Exécution à distance (avancé)

Exécuter HPO localement est vraiment pratique, mais que se passe-t-il si nous voulons plutôt exécuter nos expériences sur une machine distante ? Tu as peut-être accès à une machine GPU très puissante sur place ou tu disposes d'un certain budget pour utiliser des GPU dans le nuage. C'est là que l'agent ClearML entre en jeu.

Vérifie 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.

Tu peux transformer n'importe quelle machine (une VM dans le nuage, une machine locale GPU , ton propre ordinateur portable ... ) en un agent ClearML en l'exécutant simplement :

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

Clonage, édition et mise en file d'attente

Notre agent étant en marche, nous pouvons lui donner un peu de travail. Tu te souviens dans la section HPO que nous pouvons cloner une tâche et modifier les hyperparamètres ? Nous pouvons aussi le faire à partir de l'interface !

🪄 Clone l'expérience en faisant un clic droit dessus.

🎯 Modifie les hyperparamètres en fonction de ce que tu souhaites qu'ils soient.

⏳ Enqueue la tâche dans l'une des files d'attente en cliquant dessus avec le bouton droit de la souris.

Enqueue, Ultralytics YOLOv5  et ClearML

Exécuter une tâche à distance

Tu peux maintenant cloner une tâche comme nous l'avons expliqué plus haut, ou simplement marquer ton 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 te 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 # ...

Lorsque tu exécuteras le script de formation après cette modification, python exécutera le script jusqu'à cette ligne, après quoi il emballera le code et l'enverra dans la file d'attente à la place !

Mise à l'échelle automatique des travailleurs

ClearML est aussi livré avec des scalers automatiques ! Cet outil démarre automatiquement de nouvelles machines distantes dans le nuage de ton choix (AWS, GCP, Azure) et les transforme en agents ClearML pour toi dès qu'il y a des expériences 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 tu arrêteras de payer ! Regarde la vidéo de démarrage de l'auto scaler ci-dessous.

Tu as des questions ? Rejoins notre communauté et laisse ta question aujourd'hui !

Logo FacebookLogo de TwitterLogo LinkedInSymbole du lien de copie

Lire la suite dans cette catégorie

Construisons ensemble le futur
de l'IA !

Commence ton voyage avec le futur de l'apprentissage automatique.