De nos jours, l’intégration de l’intelligence artificielle dans les applications logicielles est devenue courante.
Une de ces applications populaires est YOLO (You Only Look Once), un modèle de reconnaissance d’objets en temps réel.
Pour améliorer les performances de cette application et éviter les contraintes matérielles, les entreprises migrent souvent leurs applications de serveurs physiques vers des infrastructures cloud, notamment AWS (Amazon Web Services).
Cet article vise à expliquer les étapes nécessaires pour porter une application logicielle basée sur le modèle IA YOLO depuis un serveur physique avec GPU vers l’infrastructure multi-GPU d’AWS.
Spécificité de notre application : on ne porte chez AWS que les fonctionnalités d’apprentissage et on récupère en fin d’entraînement les poids du modèle. On continue à faire tourner l’application en mode détection en local en lui transférant les poids du modèle entraîné chez AWS. En effet, seules les fonctions d’apprentissage de YOLO nécessitent de fonctionner sur un serveur disposant de GPU. Ces fonctions d’apprentissage sont exécutés à partir un notebook local qui fonctionne lentement et avec de petits batchs d’entraînement.
Comprendre les termes clés
-
- YOLO (You Only Look Once) : YOLO est un modèle de détection d’objets qui permet de localiser et de classifier plusieurs objets dans une image en temps réel. Son principal avantage réside dans sa vitesse élevée de traitement et sa capacité à détecter des objets en une seule passe sur l’image.
-
- GPU (Graphical Processing Unit) : Un GPU est un processeur spécialisé utilisé pour accélérer les tâches de calcul complexes, comme l’entraînement et l’inférence de modèles IA, en parallélisant les opérations. Il offre des performances supérieures aux CPU (Central Processing Unit) pour les charges de travail liées à l’IA.
-
- Infrastructure SaaS (Software as a Service) : Une infrastructure SaaS permet aux entreprises d’accéder à des services informatiques sur le cloud, tels que des serveurs virtuels, des bases de données et des applications logicielles, sans avoir à gérer l’infrastructure sous-jacente.
-
- AWS (Amazon Web Services) : AWS est un fournisseur de services cloud leader proposant une gamme complète de services, notamment des instances de calcul, des solutions de stockage et des outils d’apprentissage automatique, qui peuvent être utilisés pour héberger des applications et des modèles IA.
-
- AWS Sagemaker : Sagemaker est un service cloud d’AWS qui permet de développer, former et déployer des modèles d’apprentissage automatique en utilisant des solutions notebooks et d’autres ressources serverless.
Les étapes du portage vers l’infrastructure multi-GPU AWS
Création d’une instance AWS :
La première étape consiste à créer une instance AWS adaptée à l’application YOLO.
Pour utiliser Sagemaker Studio il faut créer un domaine SageMaker (configuration rapide).

Configuration du domaine
Lancer avec SageMaker Studio
Lancement SageMakerStudio
Dans la console AWS, créez un notebook Sagemaker pour développer et entraîner votre modèle. Choisissez l’environnement qui correspond à vos besoins en termes de langage de programmation et d’autres dépendances.
Upload file : Ajouter le notebook d’entrainement
Choisissez une instance qui dispose de GPU, comme les instances EC2 basées sur les GPU NVIDIA (p. ex. les instances de la série G4). Assurez-vous de sélectionner une instance avec les spécifications de calcul adaptées à vos besoins en termes de mémoire, de puissance de calcul et de stockage.
Large choix d’instances
Préparation des données annotées
Avant de migrer, assurez-vous d’avoir des ensembles de données d’images annotées pour entraîner le modèle YOLO.
Les images doivent être étiquetées avec les classes d’objets que vous souhaitez détecter.
Le fichier .yaml contient toutes les informations d’annotation au format attendu par YOLO.
Transfert de l’application et des données
Importer le code du notebook de l’application locale vers le notebook Sagemaker nouvellement créé.
Assurez-vous d’inclure les bibliothèques, les modules et les dépendances nécessaires.
Importez les ensembles de données d’images annotées dans le notebook Sagemaker, en utilisant les outils fournis par AWS pour le stockage et le traitement des données.
Les images annotées sont stockées sur le serveur S3 associé à SageMaker.
Le script notebook importe ces ressources depuis le S3 à partir d’un fichier .yaml
Adaptation des chemins de fichier et de configuration
Utilisez le notebook Sagemaker pour lancer le processus d’apprentissage du modèle YOLO à l’aide des données importées.
Vous pouvez spécifier le nombre d’itérations d’entraînement, la taille du lot et d’autres paramètres d’entraînement selon vos besoins.
Création d’un entrainement en arrière-plan
Test et validation
Une fois l’application déployée sur AWS, effectuez des tests et des validations pour vous assurer que tout fonctionne correctement.
Débuter par un fonctionnement sans GPU en exploitant les ressources CPU disponibles.
Instance CPU
Changer les instances pour fonctionner en GPU.
Instance GPU
Vérifiez la performance du modèle sur l’infrastructure multi-GPU AWS pour vous assurer que les résultats sont conformes aux attentes.
Lancer un entraînement avec une fonction d’arrêt automatique et observer les métriques intégrés pour analyser la qualité de l’entraînement.
Courbe F1
Le F1-score est basé sur deux autres métriques importantes, la précision (precision) et le rappel (recall).
La précision représente la proportion d’instances positives prédites correctement parmi toutes les instances prédites comme positives.
Le rappel, quant à lui, représente la proportion d’instances positives prédites correctement parmi toutes les instances réellement positives.
Ces deux métriques sont calculées comme suit :
Précision = (Nombre de vrais positifs) / (Nombre de vrais positifs + Nombre de faux positifs)
Rappel = (Nombre de vrais positifs) / (Nombre de vrais positifs + Nombre de faux négatifs)
Le F1-score est alors défini comme la moyenne harmonique de la précision et du rappel, et il est calculé de la manière suivante :
F1-score = 2 * (Précision * Rappel) / (Précision + Rappel)
Métriques de l’IA (dont mAP, précision, recall…)
Monitoring de l’entraînement
Avantages de la migration vers l’infrastructure multi-GPU AWS
En migrant l’application YOLO vers l’infrastructure multi-GPU AWS, plusieurs avantages sont à considérer :
-
- Amélioration des performances : Les instances basées sur GPU d’AWS permettent une exécution plus rapide des tâches d’inférence grâce à la puissance de calcul parallèle des GPU.
- Évolutivité : Vous pouvez facilement ajuster les ressources de calcul en fonction des besoins de l’application, notamment la capacité de passer à des instances plus puissantes ou d’utiliser plusieurs instances en parallèle.
- Gestion simplifiée : AWS s’occupe de la gestion de l’infrastructure sous-jacente, ce qui vous libère des contraintes de maintenance matérielles.
- Yolo étant sensible à la taille des batchs d’entraînement, avec cette infrastructure, nous pouvons augmenter la quantité d’images dans les batchs ce qui améliore la qualité de son entraînement.
Inconvénients de la migration vers l’infrastructure multi-GPU AWS
Le coût d’utilisation de leur infrastructure est encore trop élevé pour espérer enrichir notre modèle d’apprentissages successifs fréquents.
Il reste un travail d’optimisation des process pour réduire les coûts en utilisant l’explorateur de coûts d’AWS permettant de choisir des instances moins chères et éviter de lancer des apprentissages trop fréquemment.
Conclusion
Le portage d’une application logicielle basée sur le modèle IA YOLO vers une infrastructure multi-GPU AWS offre des avantages significatifs en termes de performances et de qualité des entraînements.
En suivant les étapes décrites dans cet article, vous pouvez migrer votre application YOLO vers le cloud AWS en toute confiance et profiter de l’efficacité des ressources cloud pour des tâches de reconnaissance d’objets en temps réel.

Article proposé par
Lucas Vançon
Développeur en Intelligence Artificielle