ARM a regroupé plus de cent cinquante personnes pour travailler sur ce processeur, avec des expériences variées : processeurs principaux (CPU), processeurs graphiques (GPU), processeurs de traitement du signal (DSP). L’architecture est prévue pour fonctionner à diverses échelles, depuis des applications embarquées ou de l’Internet des objets jusqu’à des serveurs haut de gamme ou des voitures. La première génération se focalise sur les téléphones mobiles, mais avec des dérivés pour d’autres segments. Ils devraient être disponibles cette année, au moins en licence.
L’architecture de ces processeurs est conçue dès le départ pour être efficace pour des réseaux neuronaux de grande taille, particulièrement convolutionnels ou récurrents. Un processeur ML est constitué de seize moteurs de calcul, mais surtout d’une grande mémoire statique, un mégaoctet de cache. L’objectif est d’atteindre trois téraopérations par watt en utilisant une surface de deux millimètres carrés et demi, avec un processus de fabrication en sept nanomètres. En pratique, la convolution peut être effectuée à raison de quatre téraopérations par seconde à la fréquence d’un gigahertz. Ces processeurs sont prévus pour implémenter l’API NNAPI d’Android. En pratique, ces processeurs orientés apprentissage profond ont été conçus à partir des ARM Cortex-M, des puces à très basse consommation auxquelles les développeurs ont ajouté des instructions spécifiques pour les réseaux neuronaux (un cœur Cortex-M par moteur de calcul).
Pour un tel processeur, il faut faire attention à quatre points particuliers. Tout d’abord, un ordonnancement statique des instructions, puisque les opérations à exécuter sont relativement peu variées. Ensuite, une implémentation efficace des convolutions, ce qui est facilité par leur côté très statique : on peut prévoir à l’avance, en mémoire, toutes les données nécessaires pour effectuer une convolution aussi rapidement que possible (mélanger intelligemment les poids de la convolution avec les données pour exploiter au mieux les caches). Le compilateur, connaissant la taille de la mémoire statique disponible, peut effectuer ce genre d’optimisations.
Troisièmement, la réduction de la bande passante utilisée en mémoire. En effet, la mémoire dynamique (externe au processeur) peut consommer autant que le processeur : moins il y a de communications, plus la consommation d’énergie est limitée. Pour y arriver, ARM a développé de nouvelles techniques de compression des réseaux neuronaux, qui s’exécutent entièrement au niveau du processeur (non de la compilation). Ces techniques se basent surtout sur le fait que, après l’apprentissage, de très nombreux poids sont proches de zéro : les mettre à zéro change peu la précision du réseau, mais permet d’économiser beaucoup d’énergie.
Le quatrième élément est une grande programmabilité, ici atteinte avec un moteur programmable pour chacune des couches du réseau, de telle sorte que de futures architectures puissent fonctionner sur ces processeurs.
Source : Hot Chips 2018: Arm’s Machine Learning Core Live Blog.