- La première TPU (Tensor Processing Unit) v1 de Google visait à développer un ASIC (Application Specific Integrated Circuit) offrant un avantage coût-performance de 10x, en tenant compte des opportunités ouvertes par de nouveaux services exploitant le deep learning ainsi que de l’ampleur et du coût du matériel nécessaire.
- La TPU a été conçue pour accélérer les opérations sur les tenseurs, c’est-à-dire des opérations qui mettent en relation des tableaux multidimensionnels entre vecteurs, scalaires et autres tenseurs.
- La multiplication matricielle est l’opération centrale des réseaux de neurones ; elle sert à calculer les couches cachées et la couche de sortie en multipliant le vecteur d’entrée par la matrice de poids, puis en appliquant une fonction d’activation.
La première unité de traitement des tenseurs de Google : origines
- Le projet TPU v1 a démarré fin 2013 et a été développé en 15 mois, ce qui en fait un sujet intéressant pour celles et ceux qui s’intéressent aux accélérateurs de réseaux de neurones.
- Le contexte et les objectifs du développement de la TPU v1 ont été abordés dans un précédent billet ; celui-ci examine plus en détail la structure et les performances de la TPU v1.
Structure et performances
- La conception de la TPU v1 repose sur l’architecture présentée dans l’article de 1978 de H.T Kung et Charles E. Leiserson, "Systolic Arrays (for VLSI)".
- Un systolic array est constitué d’un réseau de processeurs qui calcule périodiquement des données et les transmet à travers le système, ce qui permet d’effectuer efficacement des multiplications matricielles.
- Le systolic array de la TPU v1 est composé d’unités de multiplication/accumulation 256x256 et produit automatiquement les résultats nécessaires sans avoir à stocker ni à relire les résultats intermédiaires depuis la mémoire principale.
Unités de multiplication/accumulation (MAC)
- La TPU v1 effectue des multiplications entières 8 bits x 8 bits et exploite la quantification, qui nécessite moins de surface de puce que les calculs en virgule flottante.
Jeu d’instructions
- La TPU v1 utilise un jeu d’environ 20 instructions complexes (CISC), transmises depuis l’ordinateur hôte via une interface PCIe.
- Les principales instructions incluent la lecture de la mémoire hôte, la lecture des poids, la multiplication/fusion matricielle, l’activation et l’écriture en mémoire hôte.
Logiciel
- Le matériel de la TPU v1 prend en charge une pile logicielle comme Tensorflow, ce qui permet de porter rapidement vers la TPU des applications développées pour CPU et GPU.
Fabrication et puce
- La TPU v1 a été fabriquée avec le procédé 28nm de TSMC, et sa surface de puce est inférieure à la moitié de celle des puces CPU Intel Haswell et GPU Nvidia K80 que Google utilisait dans ses data centers.
Performances
- La TPU v1 a été conçue pour rendre l’inférence plus efficace et offre, par rapport au GPU Nvidia K80 et au CPU Haswell, une vitesse d’inférence et une efficacité énergétique environ 15 à 30 fois supérieures.
Enseignements
- L’architecture sur mesure de la TPU v1 permet des performances et une consommation énergétique bien meilleures que celles des CPU et GPU modernes.
- La TPU v1 a été conçue pour rendre l’inférence rapide et économe en énergie, et non pour l’entraînement.
Avis de GN⁺
- Le développement de la TPU v1 marque un tournant important dans la transition de Google vers du matériel spécialisé afin d’optimiser les tâches d’inférence dans les data centers à grande échelle.
- L’architecture en systolic array optimise les flux de données et minimise les accès mémoire, ce qui contribue à améliorer l’efficacité énergétique et les performances.
- Le succès de la TPU v1 a ensuite conduit au développement de différentes versions de TPU, jouant un rôle important dans l’évolution du matériel d’inférence IA.
- Parmi les autres produits offrant des fonctions similaires à la TPU figurent les GPU équipés de Tensor Core de Nvidia, le Nervana NNP d’Intel et Inferentia d’Amazon.
- Lors de l’adoption de la technologie TPU, il faut prendre en compte la compatibilité avec l’infrastructure existante, la pile logicielle et le niveau d’optimisation pour des applications spécifiques. Les avantages liés au choix d’une TPU résident dans l’accélération des tâches d’inférence et l’efficacité énergétique, mais une optimisation peut être nécessaire pour certains modèles ou types de données.
1 commentaires
Avis Hacker News