Cependant, les réseaux neuronaux sont volumineux et leurs calculs consomment beaucoup d'énergie ; ils sont donc peu pratiques pour les appareils mobiles. La plupart des applications pour smartphones qui utilisent des réseaux neuronaux se contentent de télécharger des données sur des serveurs internet, qui les traitent et renvoient les résultats au téléphone.
Des chercheurs du MIT ont mis au point une puce spécialisée qui multiplie par trois à sept la vitesse de calcul des réseaux neuronaux par rapport aux puces précédentes, tout en réduisant la consommation d'énergie de 94 à 95 %. Cette innovation pourrait permettre d'exécuter des réseaux neuronaux localement sur des smartphones, voire de les intégrer à des appareils électroménagers.
« Le modèle général de processeur est le suivant : il y a de la mémoire quelque part sur la puce, et un processeur ailleurs sur la puce, et vous déplacez des données d'un côté à l'autre lorsque vous effectuez ces calculs », explique Avishek Biswas, étudiant diplômé du MIT en génie électrique et informatique, qui a dirigé le développement de la nouvelle puce.
« Comme ces algorithmes d'apprentissage automatique nécessitent de nombreux calculs, ces transferts de données aller-retour représentent la part prépondérante de la consommation d'énergie. Or, les calculs effectués par ces algorithmes peuvent être simplifiés en une opération spécifique appelée produit scalaire. Notre approche a consisté à nous demander si nous pouvions implémenter cette fonctionnalité de produit scalaire directement en mémoire afin d'éviter ces transferts de données incessants. »
Biswas et son directeur de thèse, Anantha Chandrakasan, doyen de l'école d'ingénierie du MIT et professeur Vannevar Bush de génie électrique et informatique, décrivent la nouvelle puce dans un article que Biswas présente cette semaine à la Conférence internationale sur les circuits à semi-conducteurs.

Retour à l'analogique :
les réseaux de neurones sont généralement organisés en couches. Un nœud de traitement d'une couche reçoit généralement des données de plusieurs nœuds de la couche suivante et les transmet à plusieurs nœuds de la couche supérieure. Chaque connexion entre les nœuds possède son propre « poids », qui indique l'importance de la sortie du nœud dans le calcul effectué par le nœud suivant. L'apprentissage du réseau consiste à établir ces poids.
Un nœud recevant des données de plusieurs nœuds de la couche supérieure multiplie chaque entrée par le poids de la connexion correspondante et additionne les résultats. Cette opération, la somme de produits, est la définition du produit scalaire. Si le produit scalaire dépasse un certain seuil, le nœud le transmet aux nœuds de la couche supérieure, via des connexions pondérées.
Un réseau de neurones est une abstraction : les « nœuds » sont simplement des poids stockés en mémoire. Calculer un produit scalaire implique généralement de récupérer un poids en mémoire, de récupérer l'élément de données associé, de multiplier les deux, de stocker le résultat, puis de répéter l'opération pour chaque entrée de nœud. Puisqu'un réseau neuronal comporte des milliers, voire des millions de nœuds, la quantité de données à traiter est colossale.
Or, cette séquence d'opérations n'est qu'une approximation numérique du fonctionnement cérébral, où les signaux circulant le long de plusieurs neurones convergent au niveau d'une synapse, espace situé entre des faisceaux de neurones. La fréquence de décharge des neurones et les signaux électrochimiques traversant la synapse correspondent aux valeurs et aux pondérations des données. La nouvelle puce développée par les chercheurs du MIT améliore l'efficacité en reproduisant le fonctionnement du cerveau avec une plus grande fidélité.
Sur cette puce, les valeurs d'entrée d'un nœud sont converties en tensions électriques, puis multipliées par les pondérations appropriées. Seules les tensions combinées sont ensuite reconverties en une représentation numérique et stockées pour un traitement ultérieur.
Ainsi, la puce peut calculer les produits scalaires de plusieurs nœuds (16 simultanément dans le prototype) en une seule étape, au lieu de devoir alterner entre le processeur et la mémoire pour chaque calcul.

Tout ou rien :
L’une des clés du système réside dans le fait que tous les poids sont soit 1, soit -1. Cela signifie qu’ils peuvent être implémentés en mémoire comme de simples interrupteurs qui ferment ou laissent un circuit ouvert. Des travaux théoriques récents suggèrent que les réseaux de neurones entraînés avec seulement deux poids devraient perdre peu de précision – de l’ordre de 1 à 2 %.
Les recherches de Biswas et Chandrakasan confirment cette prédiction. Lors d’expériences, ils ont exécuté l’implémentation complète d’un réseau de neurones sur un ordinateur classique et son équivalent binaire sur leur puce. Les résultats obtenus avec leur puce étaient généralement à 2 ou 3 % près de ceux du réseau classique.

Par Larry Hardesty, MIT News Office

Plus d'informations