AI @ Edge - Le Calendrier de l’I.A.vent : Un benchmark d’intelligence artificielle (Partie 2)
- Publié le lundi 1 novembre 2021
- temps de lecture 4 minutes
![](/-/media/image-banner-sido/ai--edge-partie-2-banner.png?vs=1&w=1120&la=fr-FR&hash=FAFD1ACA06246513E8CC0D747CA76C7A)
Un banc d’essai IA sous forme de Calendrier de l’Avent
Avec notre modèle Masky, nous atteignons une excellente précision (mAP = 92%). Cependant sur un Raspberry Pi 4B, il ne répond pas à notre objectif de vitesse d’inférence en temps réel. Aussi convient-il de savoir plus précisément comment atteindre ce cap sur un appareil « Edge » : quelles sont les meilleures solutions pour combler le gap de puissance avec un PC, quels sont les appareils les plus à même d’y parvenir et les frameworks les plus performants ? Sans compter le « Bill of Materials », le coût de ces solutions, face à des contraintes budgétaires souvent très serrées. Il faut en réalité appréhender le problème sous son angle opposé et se demander quels sont les formats compatibles avec son matériel et comment va-t-on optimiser son IA pour lui conférer les meilleures performances possibles. Nous avons souhaité pour cela tester la vitesse d’inférence de notre modèle sur de nombreux appareils afin d’acquérir la base de connaissance la plus complète. Pour ce faire, nous avons établi un véritable banc d’essai en évaluant la rapidité de notre modèle sous plusieurs formats, avec plusieurs frameworks d’IA et devices différents.Pour terminer l’année 2020, nous avons offert une partie de notre retour d’expérience avec ce benchmark. Disponible sur le compte Twitter @edgeaicalendar, le « calendrier de l’I.A.vent », lancé quotidiennement du 1er au 24 décembre 2020, a proposé chaque jour de découvrir une configuration différente (device/framework) et son score de vitesse.
La définition de l’inférence
Le Calendrier de l’I.A.vent se base essentiellement sur la notion d’« inférence ». Pour comprendre les enjeux afférents, il convient de définir ce qu’est exactement l’inférence d’un modèle et la manière dont on peut la mesurer. Il n’est pas aisé de trouver une définition précise de l’inférence tant le concept peut différer d’un domaine à un autre, que ce soit par exemple en mathématiques ou en philosophie. L’inférence a généralement trait au raisonnement. L’inférence dont on parle en Machine Learning rejoint la définition de l’inférence statistique [1], à savoir qu’il s’agit du processus d’utilisation de l’analyse des données pour déduire les propriétés d’une distribution de probabilité sous-jacente. Google donne ainsi sa propre définition dans son glossaire du Machine Learning [2]:« (l’inférence) désigne généralement l'application du modèle entraîné à des exemples sans étiquette pour effectuer des prédictions.». On retiendra de ces définitions que l’inférence dont on parle dans ce projet est l’exécution - en elle-même - d’un modèle à partir de données, quelles qu’elles soient. On exclut donc complètement la phase d’entraînement du modèle, on ne s’intéresse ici qu’à son traitement brut, une fois le modèle entraîné.La mesure de la vitesse d’inférence
L’objectif de notre banc d’essai est de calculer la vitesse de l’inférence de notre modèle sur différentes configurations. Comment cette vitesse est-elle calculée et avec quelle métrique ? Quand démarre-t-on le chronomètre et à quel moment l’arrête-t-on ? Pour répondre à ces questions, il convient tout d’abord de connaître précisément le processus du traitement d’un modèle de Machine Learning. Il se compose généralement de plusieurs étapes, comme suit :
- Chargement des données
- Preprocessing (préparation/normalisation des données avant l’entrée dans le réseau de neurones)
- Entrée des données dans le réseau
- Sortie du réseau sous forme de vecteur
- Postprocessing (affichage des résultats, par exemple sous forme de bounding boxes sur une image)
On peut se demander si l’on considère l’inférence comme l’ensemble de ce processus ou si l’on peut exclure certaines étapes. Aussi, doit-on se demander ce que l’on souhaite précisément mesurer.
Comme évoqué précédemment, l’objectif est ici d’obtenir la mesure du traitement brut d’un modèle. Cela exclut d’emblée la phase de postprocessing dont l’objectif est de traduire et de retranscrire les résultats du traitement. Si l’on se réfère à la manière dont procèdent les chercheurs en IA pour calculer l’inférence de leurs modèles, il est établi que cette phase de postprocessing n’entre pas en considération.
L’EEMBC, un consortium qui développe des normes industrielles pour le matériel et le logiciel utilisés en IA embarquée, précise dans l’une de ses publications [3] la fenêtre de mesure qu’elle emploie pour calculer l’inférence d’un modèle : cette fenêtre commence juste après le chargement des données et s’arrête après la sortie du réseau, sous la forme de vecteur(s).
Figure 4 : la fenêtre de mesure de l’inférence choisie par l’EEMBC
On retiendra cette fenêtre pour effectuer le calcul de la vitesse de l’inférence. Il ne reste alors qu’à mesurer la durée précise de ce traitement, laquelle est généralement évaluée en Frames Per Second (FPS). Le terme FPS signifie images par secondes et est également appelé « Frame Rate », se référant à la vitesse de lecture d’un flux vidéo. Il est le plus souvent attribué à la vidéo ou au jeu vidéo.
Chez Avanade nous préférerons parler d’IPS pour « Inferences Per Second ». En Machine Learning, cela représente le nombre de prédictions envoyées par le modèle en une seconde.
Plus on a un score IPS élevé, plus on approche d’un traitement dit « temps réel », qui se situe entre 25 IPS et 35 IPS. Cette notion de temps réel est relative à la perception naturelle humaine. On estimera qu’un modèle qui tourne à 25 IPS aura des capacités de réaction vraisemblablement aussi rapides que celles d’un être humain. Ainsi l’affichage des prédictions d’un modèle sur un flux vidéo paraîtra naturel à l’œil nu. Une exigence qu’il est difficile à réaliser sur des objets connectés de faible puissance.
Le protocole de test
L’intérêt du benchmark de vitesse d’inférence IA est d’avoir une base commune d’évaluation pour tous les tests. Chaque test prend en entrée des images similaires sous une résolution de caméra standard, soit du 1280x720.
Nous avons choisi d’exclure du test toutes phases de prétraitement d’image et, comme nous l’avons évoqué précédemment, toutes phases de décodage des prédictions en postprocess. Nous mesurons la vitesse du traitement du modèle depuis le chargement des images jusqu’à l’obtention des résultats en sortie du réseau de neurones.
Nous mesurons de cette manière 100 fois par test le temps d’inférence à partir d’une même image et calculons ensuite sa vitesse moyenne en IPS. Plusieurs tests sont réalisés sur la même configuration pour vérifier la stabilité et les éventuels écarts. Le résultat moyen est enfin retenu, comme score IPS dit « consolidé ».
Figure 5 : Schéma du protocole de test
Résultats et enseignements à suivre dans le dernier volet de cette série consacrée à l’IA pour le Edge computing, à paraître prochainement.
Note : Cet article a été rédigé fin 2020 et reflète l’état de l’art des compétences Avanade à cette date. L’exploration des technologies IA et Edge Computing continue à ce jour au Technology Office, le département Innovation d’Avanade France, tenant compte des évolutions des technologies et de matériels. Nos connaissances, notre expertise, notre méthodologie et nos outils ont fortement progressé depuis la rédaction de cet article.
Commentaires