top of page
Rechercher

Déployez vos algorithmes de Deep Learning sur systèmes embarqués grâce aux FPGAs

  • Photo du rédacteur: Jean-Alexis Boulet
    Jean-Alexis Boulet
  • 5 juil. 2022
  • 7 min de lecture

Québec, le 4 Juillet 2022 —L’apprentissage machine (ou machine learning) occupe aujourd’hui une place importante au sein de la grande famille des méthodes de traitement numérique. Parce que ces méthodes sont exigeantes en ressources de calcul, elles ont historiquement été utilisées en association avec l’infonuagique. Récemment, grâce à l'évolution des techniques de edge computing (traitement des données au point de capture),il devient possible et même intéressant d’en faire le déploiement sur système embarqué. Comme c’est souvent le cas en embarqué, le concepteur doit alors faire le choix du type d’engin de calculs à utiliser pour exécuter un algorithme d’IA. Lorsque l’algorithme à déployer comprend beaucoup d’opérations, il n’est pas rare de faire appel à des technologies comme les GPU ou les FPGA pour accélérer les calculs et ainsi améliorer le débit de traitement (on parle souvent de hardware acceleration). Dans ce document, nous présentons une expérience comparative réalisée pour comparer le déploiement de réseaux de neurones artificiels (RNA) sur CPU, GPU et sur FPGA. Nos résultats démontrent que le déploiement sur FPGA de certains RNA permet de minimiser le coût, de maximiser le débit de traitement et d’obtenir la meilleure efficacité énergétique. Enfin, nous discuterons d’une expérience de déploiement sous FPGA dans une plateforme de type embarqué, réalisée avec un modèle commercial dans le domaine minier, en partenariat avec l’entreprise Nemesis Intelligence Inc.


Le recours à l’apprentissage machine pour résoudre des problèmes en vision numérique est en forte expansion et poussé par l’arrivée des méthodes de Deep Learning. Ces dernières font appel aux réseaux de neurones artificiels (RNA) dits profonds (c’est-à-dire dont le nombre de couches de neurones est élevé) pour résoudre des problèmes de classification élaborés. Ces nouvelles méthodes prometteuses permettent de repousser les limites des algorithmes de vision numérique classiques.


En apprentissage machine, il est commun d’avoir recours aux RNA avec une approche d’apprentissage supervisé. Cela impliquegénéralement deux étapes:

  1. L’apprentissage: À cette étape, le concepteur cherche à répondre à plusieurs questions. Il faut déterminer le type de RNA à utiliser, établir et préparer le jeu de données d’entraînement ainsi que le jeu de données de validation, établir les opérations à réaliser en prétraitement ainsi qu’en post-traitement, etc. Comme cette étape nécessite la flexibilité d’un environnement de R&D, elle est généralement effectuée sur une ou des machines où les ressources (taille des mémoires, capacité de calcul, etc.) ne sont pas un enjeu.

  2. L’utilisation en inférence: Une fois le RNA entraîné, il peut être utilisé pour effectuer des inférences. On veut dire par là que le réseau peut être confronté à des données entièrement nouvelles qui sont similaires aux données d’entraînement. Si l’entraînement s’est avéré efficace, il sera en mesure de faire des prédictions justes. Un exemple typique d’inférence: un réseau entraîné pour reconnaître des chats et des chiens se voit présenté à son entrée une image de chien qu’il n’a jamais vu lors de l’entraînement, néanmoins, il est en mesure de prédire qu’il s’agit d’un chien.


C’est lors de la deuxième étape que le choix est fait d’effectuer, ou non, le déploiement du RNA sur système embarqué. L’alternative étant que la plateforme qui capture les données transmet ces données vers le cloud où un RNA fait des inférences dans un environnement de calcul haute performance. Le choix d’inclure un RNA dans le système embarqué paraît évident lorsque:


  • La portabilité du système est un requis et les environnements de travail sont multiples, voire imprévisibles;

  • Il existe un besoin en faible latence pour obtenir l’information à la sortie du RNA, par exemple pour nourrir d’autres algorithmes exécutés dans le système embarqué;

  • Il existe des contraintes quant à la communication sans-fil, bande passante, accès au réseau, etc.;

Lorsqu’un déploiement sur système embarqué est choisi, le concepteur fait face à beaucoup d’options quant au type de technologie de calcul. Dans bien des cas, il est nécessaire d’avoir recours à un accélérateur car la capacité du CPU embarqué à faire les calculs par lui-même est rapidement dépassée. C’est pourquoi les concepteurs ont souvent recours à un GPU embarqué ou à un FPGA qui collabore avec un CPU au sein d’un système embarqué. Nous verrons dans la prochaine section qu’il s’agit d’une étape nécessaire lorsqu’il s’agit du déploiement d’un RNA.


Comparaison des performances d’un RNA embarqué


Afin de comparer les performances d’un RNA embarqué sur CPU, GPU et FPGA, Six Metrix a développé un banc d’essais utilisant une Jetson AGX Xavier de Nvidia (~USD$700) et une carte Kria KV260 de Xilinx (~USD$200). Sur la Jetson, un framework qui maximise l’utilisation des CUDA core du GPU (512-core Volta GPU) est utilisé. Sur la carte Kria KV260, le RNA est déployé dans un bloc DPUTM (Deep Learning Processor Unit) de Xilinx. Ce déploiement implique notamment de modifier le modèle d’IA pour le rendre compatible avec les différentes plateformes (GPU/FPGA). Du côté CPU, le processeur ARM (8-core ARM 64-bits) de la Jetson est utilisé pour comparer les performances avec le GPU et le FPGA. La précision des modèles entre les implémentations sur CPU, GPU et FPGA est la même.


Deux types de RNA convolutifs sont déployés, un Resnet-50 et un MobileNet. Ces deux réseaux typiques en IA sont utilisés pour résoudre des problèmes de classifications en vision numérique. Les mêmes jeux de données sont utilisés avec chaque plateforme, l’ensemble du traitement inclut:

  1. Une étape de prétraitement qui est propre à chaque plateforme;

  2. L’inférence sur le RNA;

  3. Une étape de post-traitement pour mettre en forme les données en sortie.

La figure ci-bas illustre ces étapes pour le FPGA et le GPU. À noter que lorsque le CPU est utilisé ci-bas pour effectuer les étapes d’inférences et de post-traitement, il s’agit du CPU ARM de la Jetson.



ree

Figure 1: Représentation des étapes du benchmarking


Le banc d’essai ainsi développé avec les deux plateformes nous permet de mesurer le temps pris par chaque engin de calcul (CPU, GPU et FPGA) pour effectuer un grand nombre d’inférences (des milliers). Les résultats concernant le nombre moyen d’images traitées par seconde (ou frame per second, FPS) et le nombre moyen d’images traitées par watt sont présentés sur la Figure 2 ci-bas et tiennent compte des trois (3) étapes ci-haut. Les conclusions suivantes peuvent être tirées de l’analyse de ces résultats:


  • Il est contre-productif de faire le déploiement de RNA sur CPU, le recours à un accélérateur (GPU ou FPGA) est nécessaire;

  • Pour les modèles de RNA utilisés de cette expérience, le déploiement sur FPGA permet d’obtenir un débit de traitement supérieur ou équivalent à un déploiement sur GPU embarqué;

  • L’efficacité énergétique des FPGA est supérieure d’un ordre de grandeur à celle des GPU. En d’autres termes, pour un même débit de traitement, le FPGA consomme 10x moins de puissance que le GPU embarqué;

  • À débit égal, le coût d’un FPGA est beaucoup moindre que le coût d’un GPU embarqué.


ree

Figure 2: Comparaison des performances: CPU, GPU et FPGA



Qui plus est, il existe d’autres arguments propres au monde des systèmes embarqués qui justifient le recours à un FPGA:


  • Le nombre d’I/Os: L’une des plus grandes limitations des GPUs embarqués est le nombre d’I/Os disponibles pour faire l’interface des capteurs qui fournissent bien souvent les entrées à l’IA. Cette limitation n’est pas un enjeu pour les FPGAs puisque le modèle de FPGA peut être choisi spécialement pour répondre à ce besoin.

  • Une utilisation optimale des ressources: Comme les FPGA sont essentiellement un ensemble de circuits numériques entièrement programmables, le designer peut choisir la taille de cette logique programmable afin non seulement de minimiser les coûts mais également de maximiser l’utilisation des ressources. Cette approche permet également, éventuellement, de passer à un design ASIC qui permet d’avoir un coût optimal pour la production.


Malheureusement, bien que leur utilisation soit souvent optimale, les FPGA sont difficiles d’approche et le recours à des ressources spécialisées est nécessaire pour s’assurer d’un déploiement efficace. Six Metrix se positionne comme un joueur clé dans le marché des accélérateurs de RNA sur FPGA grâce à notre large expertise des systèmes de traitement numérique embarqués.


Success Story: Le déploiement sur FPGA d’un RNA de détection de boulons sur parois rocheuse


Nemesis Intelligence Inc, une entreprise qui innove dans le domaine minier via le développement d’algorithmes de pointe, a entraîné un RNA permettant de faire la détection de boulons sur les parois de mines souterraines. Cette nouvelle approche permet d’extraire de l’information critique dans l’environnement immédiat de chaque véhicule se trouvant dans la mine. Cette information est ensuite utilisée pour nourrir de multiples algorithmes qui permettent aux opérateurs de prendre de meilleures décisions.


Comme les équipements de Nemesis sont embarqués sur des véhicules se déplaçant dans des galeries souterraines, le transfert de données par voie sans-fil est un enjeu. Le déploiement du RNA sur système embarqué est donc de mise.


C’est dans ce contexte qu’un partenariat a été établi entre Six Metrix et Nemesis Intelligence pour faire le déploiement du RNA entraîné dans un environnement R&D sur FPGA embarqué.


Le processus suivi pour faire le déploiement sur FPGA impliquait de:


  1. Prendre connaissance du modèle de RNA utilisé ainsi que des processus de prétraitement et de post-traitement des données;

  2. Effectuer la quantification du RNA. Cette étape nécessite parfois le recours à du pruning pour modifier le RNA de façon à ce qu’il soit implémentable;

  3. Valider les performances du RNA embarqué par rapport au RNA non quantifié;

  4. Créer une application embarquée de traitement des données utilisant le RNA quantifié ainsi que le pré/post-traitement;

  5. Déployer l’application sur FPGA en utilisant une plateforme spécialement conçue pour celle-ci.

À noter que ce processus est itératif en ce qui concerne les étapes 2 et 3. Dans le cas du RNA de Nemesis, l’application pour FPGA développée est un pipeline de traitement d’images qui effectue les opérations suivantes:

  • Les images en haute définition sont d’abord (pré)traitées sur FPGA pour les adapter à l’entrée attendue du RNA;

  • Les images sont ensuite passées à la DPU qui effectue les inférences du RNA;

  • Les résultats sont présentés sous forme de données en format texte et images annotées tel qu’illustré sur la Figure 3. Ces résultats sont ensuite utilisés par d’autres algorithmes.


ree

Figure 3: Un RNA fait l’identification et la classification de deux types de boulons (distingués par des carrés verts et des carrés roses) sur les parois d’une mine souterraine (image propriété de Nemesis Intelligence Inc)


Pour joindre Six Metrix:


 
 
 

Comments


© 2022 Six Métriques Inc.
Tous droits réservés.

LogoSixMetrics - Officiel-01 - Copie.png
  • Black LinkedIn Icon
bottom of page