# Puce d'accélération de réseaux de neurones

Un Accélérateur d'IA pour accélérateur d'intelligence artificielle (ou NPU, anglais : Neural Processing Unit) est une catégorie de microprocesseurs ou de systèmes de calculs conçus pour accélérer un réseau de neurones artificiels, accélérer des algorithmes de vision industrielle et d'apprentissage automatique pour la robotique, l'internet des objets et autres tâches de calcul intensif ou de contrôle de capteurs. Il s'agit souvent de conceptions multicœurs et se concentrant généralement sur l'arithmétique de faible précision, des nouvelles architectures de flux de données ou de la capacité de calcul en mémoire. Il existe plusieurs termes propres au fournisseur pour certains appareils dans cette page.

## Historique de puces d'accélération d'IA

Les systèmes informatiques ont souvent complété le CPU par des accélérateurs spéciaux pour des tâches spécialisées, notamment des cartes vidéo (GPU) pour les graphiques, mais aussi des cartes son pour l'audio, etc. Au fur et à mesure que l'apprentissage automatique et l'intelligence artificielle ont pris de l'ampleur, des unités matérielles spécialisées ont été développées ou adaptées à partir de produits précédents pour accélérer ces tâches.

### Les premières tentatives

Dès 1993, les DSP ont été utilisés comme accélérateurs de réseaux neuronaux, par exemple pour accélérer les logiciels de reconnaissance optique de caractères. Dans les années 1990, on a également tenté de créer des systèmes parallèles à haut débit pour les postes de travail destinés à diverses applications, y compris les simulations de réseaux neuronaux$^,$$^,$. Les accélérateurs à base de FPGA ont également été explorés pour la première fois dans les années 1990 pour l'inférence et l'apprentissage. ANNA était un accélérateur de réseau neuronal CMOS développé par Yann Le Cun.

### Calcul hétérogène

Le calcul hétérogène a commencé par l'incorporation d'un certain nombre de processeurs spécialisés dans un seul système, voire une seule puce, chacun optimisé pour un type de tâche spécifique. Les architectures telles que le microprocesseur Cell ont des caractéristiques qui se chevauchent de façon significative avec les accélérateurs d'IA, y compris la prise en charge de l'arithmétique de faible précision, l'architecture de flux de données et la priorité accordée au "débit" plutôt qu'à la latence. Le microprocesseur Cell a ensuite été appliqué à un certain nombre de tâches$^,$$^,$, y compris l'IA$^,$$^,$.
Les CPU eux-mêmes ont également gagné des unités SIMD de plus en plus larges (utilisés pour les tâches lourdes et les jeux) et la prise en charge des types de données de faible précision.

### Utilisation des GPU

Les processeurs graphiques ou GPU sont des matériels spécialisés pour la manipulation d'images. Comme les bases mathématiques des réseaux neuronaux et de la manipulation d'images sont similaires, pour des tâches parallèles compliquées impliquant des matrices, les GPU sont devenus de plus en plus utilisés pour les tâches d'apprentissage machine$^,$$^,$. En tant que tels, à partir de 2016, les GPU sont populaires pour l'apprentissage d'IA, et ils continuent à évoluer afin de faciliter l'apprentissage profond, à la fois pour l'apprentissage et pour l'inférence dans des dispositifs tels que les véhicules autonomes et bénéficient des capacités de connexion supplémentaires pour les types de flux de données dont profite l'IA (par exemple NVLink de Nvidia). Comme les GPU ont été de plus en plus appliqués à l'accélération de l'IA, les fabricants de GPU ont incorporé du matériel spécifique aux réseaux neuronaux pour accélérer davantage ces tâches. Les cœurs tensoriels sont destinés à accélérer l'entraînement des réseaux neuronaux.

### Utilisation des FPGA

Les frameworks d'apprentissage profond évoluent encore, ce qui rend difficile la conception de matériel sur mesure. Les dispositifs reconfigurables comme les "field-programmable gate array" (FPGA) facilitent l'évolution du matériel, des frameworks et des logiciels en eux$^,$$^,$.
Microsoft a utilisé les puces FPGA pour accélérer l'inférence$^,$. L'application des FPGA à l'accélération de l'IA a également motivé Intel à acheter Altera dans le but d'intégrer les FPGA dans les CPU des serveurs, ce qui permettrait d'accélérer l'IA ainsi que les tâches générales.

### Émergence des ASIC dédiés à l'accélération de l'IA

Alors que les GPU et les FPGA sont beaucoup plus performants que les CPU pour ces tâches liées à l'IA, un facteur d'efficacité de 10$^,$ peut encore être obtenu avec une conception plus spécifique, via un « Application-specific integrated circuit » (ASIC). On retrouve ce type d’accélérateur en ASIC dans la majorité des SoC ARM et RISC-V. Ce qui inclut des différences dans l'utilisation de la mémoire et l'utilisation de nombres de plus faible précision$^,$.

## Nomenclature

À partir de 2016, le champ est toujours en mouvement et les vendeurs poussent leur propre terme marketing pour ce qui équivaut à un accélérateur de réseaux de neurones, appelé « accélérateur d'IA » dans la communication grand public, dans l'espoir que leurs conceptions et API domineront. Il n'y a pas de consensus sur la frontière entre ces dispositifs, ni sur la forme exacte qu'ils prendront, mais plusieurs exemples visent clairement à combler ce nouvel espace, avec un certain chevauchement des capacités.
Dans le passé, lorsque les accélérateurs graphiques grand public ont émergé, l'industrie a finalement adopté le terme auto-attribué de Nvidia, "GPU", comme nom collectif pour « accélérateurs graphiques », qui avait pris de nombreuses formes avant de s'installer sur un pipeline global mettant en œuvre un modèle présenté par OpenGL, puis plus tard Direct3D.

## Exemples
### Processeurs autonomes

* Adapteva epiphany est un coprocesseur multi-cœur avec un réseau sur un modèle de "scratchpad memory", adapté à un modèle de programmation de flux de données, qui devrait convenir à de nombreuses tâches d'apprentissage machine.
* Google « TPU » est un accélérateur spécialement conçu par Google pour son framework TensorFlow, qui est largement utilisé pour les réseaux neuronaux convolutifs. Il se concentre sur un volume élevé d'arithmétique de précision de 8 bits. La première génération s'est concentrée sur l'inférence, tandis que la deuxième génération a augmenté la capacité de formation au réseau neuronal.
* Intel Nervana NNP (« Neural Network Processor ») (alias « Lake Crest »), qui, selon Intel, est la première puce disponible sur le marché avec une architecture spécialement conçue pour l'apprentissage approfondi. Facebook était un partenaire dans le processus de conception$^,$.
* Mobileye EyeQ est un processeur spécialisé dans le traitement de la vision (VPU (en)) pour les voitures autonomes.
* Movidius Myriad 2 est un accélérateur VLIW AI à multi-cœurs, complété par des unités de fonctions vidéo fixes.

### Produits basés sur les GPU

* Nvidia Tesla est la gamme de produits dérivés des GPU de Nvidia commercialisés pour les tâches GPGPU et réseau de neurones artificiels.
** Nvidia Volta est une micro-architecture qui complète l'unité de traitement graphique avec des 'tenseurs' supplémentaires visant spécifiquement à accélérer les calculs pour les réseaux neuronaux.
** Nvidia DGX-1 (en) est un produit station de travail/serveur Nvidia qui intègre les GPU de la marque Nvidia pour les tâches GPGPU, y compris l'apprentissage automatique.
* Radeon Instinct est la gamme de produits dérivés des GPU d'AMD pour l'accélération de l'IA.

### Coprocesseurs optimisés pour l'IA

* Le processeur de la plate-forme mobile Snapdragon 845 de Qualcomm contient un noyau DSP Hexagon 685 pour le traitement de l'IA dans les applications de caméra, voix, XR et de jeux.
* PowerVR 2NX NNA ("Neural Net Accelerator") est un noyau IP de Imagination Technologies sous licence d'intégration dans des puces.
* Neural Engine est un noyau d'accélérateur IA au sein du SoC A11 Bionic d'Apple.
* Cadence Tensilica Vision C5 est un cœur IP DSP optimisé pour les réseaux neuronaux.
* Le "Neural Processing Unit" (NPU) est un accélérateur de réseau neuronal au sein du HiSilicon Kirin 970.
* En janvier 2018 CEVA, Inc. a lancé une famille de quatre processeurs AI appelés NeuPro, contenant chacun un DSP vectoriel programmable et une implémentation câblée de couches de réseau neuronal 8 ou 16 bits supportant les réseaux neuronaux avec des performances allant de 2 TOPS à 12,5 TOPS.
* Sipeed a développé la carte Sipeed M1 (ou Kendryte KD233), équipée d'un SoC Kendryte K210 comportant 2 cœurs RISC-V 64 bits et un processeur d'intelligence artificielle. Ces cartes sont prévues pour fonctionner avec FreeRTOS. Plusieurs déclinaisons existent, elles peuvent être programmées en microPython, via l'IDE Plateforme.IO, avec Arduino IDE et supportent également Linux.
* Les processeurs Intel Core Ultra contiennent un noyau pour l'intelligence artificielle.

### Accélérateur multifonctions

Accélérateur Universel Multifonctionnel (UMA) développé et produit par Manjeera Digital Systems sous l'égide du Centre for Innovation Engineering and Entrepreneurship Incubator de l'Indian Institute of Information Technolgy (IIIT), Hyderabad est une innovation révolutionnaire en matière d'accélération dans le calcul de toute application avec une architecture propriétaire basée sur les opérations Middle Stratum$^,$$^,$.

### Recherche et produits non commercialisés

* En décembre 2017, Tesla Motors a confirmé une rumeur selon laquelle elle est en train de développer un Soc IA pour la conduite autonome. Jim Keller travaille sur ce projet depuis au moins le début de 2016.
* Eyeriss est un accélérateur destiné explicitement aux réseaux neuronaux convolutionnels, utilisant un scratchpad et une architecture de réseau sur puce.
* Nullhop est un accélérateur conçu à l'Institut de Neuroinformatique de l'ETH Zürich et à l'Université de Zürich sur la base d'une représentation éparses de cartes de caractéristiques. La deuxième génération de l'architecture est commercialisée par la spin-off universitaire Synthara Technologies$^,$.
* Kalray est un accélérateur pour les réseaux neuronaux convolutifs.
* SpiNNNaker est une conception à multicœurs spécialisée dans la simulation d'un grand réseau neuronal.
* Graphcore IPU est un accélérateur d'IA à base de graphiques.
* DPU, par wave computing, est une architecture de flux de données
* STMicroelectronics a présenté début 2017 un démonstrateur SoC fabriqué selon un procédé à 28 nm contenant un accélérateur de réseau neuronal convolutif (CNN) profond.
* Le NM500 est le dernier né en date de 2016 d'une série de puces accélératrices pour les réseaux neuronaux à fonction de base radiale (Radial Basis Function)de General Vision.
* TrueNorth est un modèle multicœur basé sur des neurones à impulsions plutôt que sur l'arithmétique traditionnelle$^,$.
* Intel Loihi est une puce neuromorphe expérimentale.
* En septembre 2017, BrainChip a introduit une carte [PCI Express] commerciale avec un FPGA Xilinx Kintex Ultrascale FPGA utilisant des noyaux neuromorphes neuronaux en appliquant la reconnaissance de formes sur 600 images vidéo par seconde en utilisant 16 watts de puissance.
* IIT Madras est en train de concevoir un accélérateur de neurones à impulsions pour l'analyse de big data.
* Plusieurs accélérateurs d'intelligence artificielle basés sur les mémoires ont été proposés qui tirent parti de la capacité de calcul en mémoire de memristor.
* AlphaICs est en train de concevoir un coprocesseur basé sur un agent appelé "Real AI Processor" (RAP) pour permettre la perception et la prise de décision dans une puce.
* European Processor Initiative, dont le but est d'équiper les supercalculateurs européens et l'automobile européenne, dont le processeur est basé sur l'architecture ARM, et les accélérateurs chargés de l'AI et du calcul intensifs sont basés sur de l'architecture RISC-V.

## Applications potentielles

* Voitures autonomes, Nvidia a conçu ses cartes Drive PX-series dans cet objectif.
* Robots militaires, Thales fabrique le système de défense anti-missile antinavire Goalkeeper CIWS qui utilise des VPU pour la reconnaissance de cibles.
* Robots agricoles, par exemple dans la lutte contre les mauvaises herbes sans produits chimiques.
* La commande vocale, par exemple dans les téléphones mobiles, une cible pour Qualcomm Zeroth ou Assistant Google.
* Traduction automatique, le site DeepL entraîne l'intelligence artificielle pour comprendre et traduire des textes.
* Drones, par exemple des systèmes de navigation, comme le Movidius Myriad 2, ont été utilisés avec succès en guidant des drones autonomes.
* Robots industriels, augmentant la gamme de tâches qui peuvent être automatisées, en ajoutant l'adaptabilité à des situations variables.
* Santé, avec l'assistance au diagnostic, les Hospices civils de Lyon testent actuellement des IA pour l'aide au diagnostic.
* Moteurs de recherche, augmentant l'efficacité énergétique des centres de données et la capacité d'utiliser des requêtes de plus en plus avancées.
* Traitement du langage naturel