Apprentissage machine pour les systèmes embarqués

L'arrivée des services interactifs en ligne tels que Siri d'Apple et Amazon Echo dans les maisons a sensibilisé les consommateurs à l'essor de l'intelligence artificielle (IA) et de l'apprentissage machine. Bien que ces services soient déployés sur de nombreux systèmes embarqués, les algorithmes d'IA principaux doivent être exécutés dans le cloud. Cependant, cette situation ne constitue pas une solution à long terme pour les nombreuses applications d'apprentissage machine fournies par les futurs systèmes embarqués.

Les voitures autonomes sont en train d'apprendre à traiter les obstacles au travers d'exemples, que ce soit dans des conditions de simulation ou de conduite réelle. De la même façon, les robots peuvent désormais être dirigés par les opérateurs pour réaliser des tâches au lieu d'être programmés laborieusement à la main. Bien que ces systèmes puissent faire appel au cloud pour certains services, les algorithmes d'apprentissage machine principaux devront pouvoir fonctionner localement en raison du temps de latence induit par l'envoi des données vers le cloud.

De nombreux systèmes n'auront tout simplement pas accès au cloud. Par exemple, les systèmes de forage nécessaires à l'extraction des ressources naturelles sont souvent situés dans des endroits isolés, loin de toute infrastructure sans fil à haut débit. De plus, les opérateurs d'équipement commencent à demander à pouvoir bénéficier de la puissance de l'apprentissage machine pour surveiller de plus près l'état des machines et détecter tout signe de dysfonctionnement. Les algorithmes à boucle fermée conventionnels manquent souvent de souplesse pour traiter les nombreuses sources potentielles de défaillance et interactions avec l'environnement dans de tels systèmes. En utilisant l'apprentissage machine pour entraîner les systèmes aux comportements des interactions réelles, il est possible de gagner en fiabilité.

La surveillance représente un autre secteur où le traitement local devra être utilisé pour identifier les menaces immédiates. Cependant, elle pourra faire appel au cloud pour réaliser des traitements et des recherches supplémentaires dans les bases de données en ligne afin de confirmer si d'autres mesures doivent être prises. Même les liaisons de communication sans fil utilisées pour relayer les informations commencent à faire usage de l'apprentissage machine. Par exemple, les paramètres contrôlant les modems sans fil 5G sont si complexes que certains responsables d'implémentations se sont tournés vers l'apprentissage machine pour optimiser leurs performances à partir de l'expérience sur le terrain.

La gamme d'applications pour l'apprentissage machine traduit de nombreuses approches disponibles. Actuellement, la majorité des efforts réalisés en intelligence artificielle basée sur le cloud porte sur l'architecture des réseaux de neurones profonds (DNN). Les DNN ont marqué un tournant décisif où les concepts relatifs aux réseaux de neurones ont pu être mis en pratique pour classifier et reconnaître les images et l'audio, avec des variantes plus tardives telles que les DNN contradictoires et récurrents qui ont pris de l'importance pour les tâches de surveillance en temps réel.

Initialement, les réseaux de neurones employaient une structure relativement horizontale, avec une couche « cachée » au maximum entre les couches d'entrée et de sortie des neurones simulés. Au milieu des années 2000, les chercheurs ont développé des techniques d'entraînement plus efficaces. Bien que le processus soit resté à forte intensité de calcul, augmenter le nombre de couches cachées est devenu possible, et ce parfois jusqu'à plusieurs centaines, ainsi que la complexité des données manipulables par les réseaux de neurones.

Interférence de faible latence par la couche de flux de données sur puce

Fig.1 : interférence de faible latence par la couche de flux de données sur puce

La nature même des couches a été modifiée avec l'apparition des couches de convolution et des couches de regroupement. Celles-ci ne sont pas entièrement connectées comme l'étaient les couches des premiers réseaux de neurones. Ces couches effectuent un filtrage localisé et une collecte des entrées qui sont utiles pour extraire des caractéristiques de haut niveau et réaliser une réduction de la dimension, permettant ainsi aux DNN de classifier des entrées très complexes.

Il existe bien d'autres types d'algorithme d'apprentissage machine et certains systèmes peuvent utiliser plusieurs techniques à la fois. Un des courants actuels en R&D pour l'apprentissage machine dans les systèmes de haute fiabilité est d'utiliser un deuxième algorithme en guise de sauvegarde. Depuis l'apparition des DNN, les craintes suscitées au sujet de leur fiabilité dans des conditions difficiles et de leur susceptibilité à des exemples contradictoires ont pris de l'ampleur. En effet, ce sont certaines entrées délibérément altérées qui ont induit des systèmes entraînés à ignorer ou lire incorrectement les panneaux de signalisation, par exemple. Les algorithmes plus simples, dont le comportement est plus prévisible même s'ils sont moins puissants, peuvent agir comme sauvegardes pour empêcher les comportements indésirables au niveau système.

Avant que les DNN deviennent réalité, la machine à vecteurs de support (SVM) était couramment utilisée dans les tâches de classification des images et des panneaux de signalisation. Grâce à la capacité de traitement des entrées très complexes et à haute résolution des DNN, de nombreuses implémentations SVM sont devenues redondantes. Toutefois, pour les données de dimension inférieure, la SVM peut encore être efficace, en particulier pour les systèmes de contrôle qui sont soumis à des dynamiques chaotiques. La SVM exploite ses données comme un ensemble de vecteurs multidimensionnels et tente de définir un hyperplan entre des clusters de données connexes.

Depuis les premières expérimentations en intelligence artificielle, les arbres de décision ont joué un rôle important. Initialement, ces arbres étaient fabriqués à la main grâce à la participation d'experts pour définir les règles qu'une machine pouvait utiliser pour déterminer la façon de traiter les données. La forêt aléatoire associe le concept des arbres de décision avec l'apprentissage machine. L'algorithme crée de nombreux arbres de décision à partir des données d'entraînement afin de déterminer une moyenne du résultat, qui peut être un mode pour les tâches de classification ou un moyen pour les applications de régression, puis diffuse cette valeur unique.

Arbres de décision à partir des données d'entraînement

Fig.2 : arbres de décision à partir des données d'entraînement - Image provenant de Premier Farnell

Les processus gaussiens fournissent un outil supplémentaire pour l'apprentissage machine et ont été proposés comme moyens de sauvegarde pour les DNN. En effet, étant basés sur la théorie des probabilités, ils fournissent non seulement des estimations basées sur les données d'entraînement, mais également une idée de la confiance à avoir dans la prédiction. Grâce à cette information, les algorithmes en aval peuvent choisir d'afficher plus de prudence concernant le résultat provenant des systèmes d'apprentissage machine et ainsi prendre la mesure appropriée.

Un des éléments essentiels pour la mise en œuvre sur les systèmes intégrés de l'apprentissage machine, pour toutes les techniques les plus simples, est celui de la performance. La clé de l'adoption des DNN par la communauté des chercheurs, puis par les principaux opérateurs de Cloud computing, a été la manière dont le traitement pouvait être accéléré par les moteurs shader fournis par des processeurs graphiques haut de gamme. En mettant à disposition plusieurs moteurs à virgule flottante en parallèle, les processeurs graphiques ont fourni un débit beaucoup plus élevé pour les charges de travail DNN classiques, aussi bien en matière d'entraînement que d'inférence. Dans le secteur, les fournisseurs tels que nVidia avec leur Tegra X1, et NXP avec la famille i.MX fournissent des processeurs graphiques capables d'exécuter des DNN et des charges de travail arithmétiques intensives similaires.

L'une des préoccupations des utilisateurs de processeurs graphiques pour l'apprentissage machine concerne la consommation énergétique. Les mémoires locales relativement petites auxquelles les cœurs shader ont accès peuvent conduire à des taux élevés d'échange de données avec la mémoire principale. Pour favoriser le traitement des demandes en mémoire, les opérateurs de serveurs cloud cherchent des processeurs DNN personnalisés conçus pour fonctionner avec les modèles d'accès mémoire des DNN et ainsi réduire l'énergie consommée pour accéder à la DRAM sur puce séparée. Citons par exemple l'unité de traitement de tenseur (TPU) de Google. Des processeurs personnalisés similaires sont désormais utilisés pour les processeurs de systèmes embarqués. Citons par exemple le processeur d'apprentissage machine de la plate-forme SnapDragon de Qualcomm.

Les moteurs DNN dédiés tirent profit des optimisations possibles pour les applications embarquées classiques. Généralement, l'entraînement implique beaucoup plus de calculs que l'inférence. En conséquence, une approche de plus en plus courante pour l'apprentissage machine dans les systèmes embarqués est de transférer l'entraînement vers les serveurs cloud et n'utiliser l'inférence que sur le matériel embarqué.

Les chercheurs ont constaté que la résolution complète de l'arithmétique à virgule flottante fournie par les processeurs graphiques et les processeurs à usage général n'est pas nécessaire pour de nombreuses tâches d'inférence. En effet, il a été prouvé que la performance de nombreux DNN n'est que légèrement réduite en ayant recours à l'approximation. Ce constat permet de réduire la résolution arithmétique à 8 bits ou moins. Certains DNS fonctionnent même avec des masses neuronales qui ne peuvent traiter que deux ou trois valeurs discrètes.

Il existe une autre méthode d'optimisation : l'élagage du réseau. Celle-ci utilise l'analyse du DNN avant entraînement pour éliminer les connexions entre les neurones n'ayant que peu ou pas d'influence sur le résultat. La suppression de ces connexions évite d'effectuer des calculs inutiles et, autre avantage, permet de réduire considérablement la consommation énergétique induite par les accès à la mémoire.

Le réseau de portes programmables in situ (FPGA) est idéalement positionné pour tirer profit du calcul approximatif et des optimisations similaires pour l'inférence. Bien que l'ARM et d'autres implémentations de microprocesseurs disposent désormais de pipelines à instruction unique et données multiples (SIMD) optimisés pour les données de nombre entier basse résolution (jusqu'à 8 bits), le FPGA permet de régler la résolution à un niveau élevé de précision. Selon Xilinx, réduire la précision de 8 bits à un traitement binaire permet de réduire l'utilisation de la table de correspondance (LUT) FPGA par 40 fois.

Les plates-formes telles qu'Ultra96board permettent de diviser le traitement entre un processeur à usage général et une matrice logique programmable pour prendre en charge les interactions étroites entre les deux. Basée sur l'architecture système multiprocesseur sur puce Xilinx Zynq UltraScale+, une telle plate-forme permet de déployer facilement des architectures DNN complexes qui utilisent des couches à usage spécial. La matrice FPGA intégrée au système multiprocesseur sur puce peut prendre en charge les couches de convolution et de regroupement, ainsi que les fonctions de seuillage, tandis que le processeur ARM de Zynq, basé sur un système d'exploitation Linux et des logiciels connexes, gère les flux de données et exécute les couches qui disposent d'un nombre moins important de modèles d'accès mémoire prévisibles.

Au sein de la matrice FPGA d'une plate-forme telle qu'Ultra96board, les développeurs peuvent faire appel aux tranches DSP programmables. Celles-ci peuvent être facilement configurées pour agir en tant que processeurs de nombre entier 8 bits à double cœur ainsi qu'en tant que découpage logique de la table de correspondance pour mettre en œuvre le traitement binaire ou ternaire. Un des avantages clés de l'utilisation du matériel programmable est le fait de pouvoir fusionner des couches. Les unités arithmétiques peuvent être interconnectées directement ou par le biais de blocs RAM, de sorte que les données produites par chaque couche sont transmises sans utiliser la mémoire externe comme tampon. Bien que les algorithmes d'apprentissage machine soient complexes à créer, la communauté des chercheurs a adopté des concepts tels que les logiciels libres. Résultat : un certain nombre de packs sont librement disponibles et les développeurs s'en servent pour mettre en œuvre des systèmes. Le seul problème est que la plupart de ces packs ont été développés pour une utilisation sur les plates-formes de serveur. Des fournisseurs tels que Xilinx ont permis aux utilisateurs de leur matériel d'effectuer des implémentations DNN vers FPGA. Par exemple, la Xilinx ML Suite peut utiliser un modèle DNN Caffe entraîné dans un environnement de bureau ou serveur et le connecter à une cible Zynq. Le translateur divise le traitement entre le code personnalisé compilé pour le processeur ARM et un réseau de neurones de convolution préoptimisé et chargé dans la matrice FPGA.

xFdnn : inférence directe de l'apprentissage profond à partir de Caffe

Fig.3 : xFdnn : inférence directe de l'apprentissage profond à partir de Caffe

Pour les charges de travail d'apprentissage machine non DNN, les développeurs peuvent avoir accès à de nombreux algorithmes, notamment aux implémentations SVM et de forêt aléatoire, grâce aux bibliothèques de logiciels libres. La plupart de ces bibliothèques sont destinées au langage de programmation Python plutôt qu'au langage C/C++ qui est généralement utilisé pour développer les systèmes embarqués. Toutefois, la popularité croissante du système d'exploitation Linux permet de charger relativement simplement une exécution Python sur la cible et d'utiliser ces bibliothèques sur une cible de système embarqué.

Grâce à l'association de matériels haute performance et à la disponibilité des outils de prototypage, l'utilisation de l'apprentissage machine devient courante pour les systèmes embarqués.

Apprentissage machine pour les systèmes embarqués - Date de publication : 15 octobre 2018 par Farnell element14