Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Architecture du système

Les TPU (Tensor Processing Units) sont des accélérateurs de ML conçus par Google. Cloud TPU rend les TPU disponibles en tant que ressource Google Cloud évolutive. Vous pouvez exécuter des charges de travail de machine learning sur des Cloud TPU à l'aide de frameworks de machine learning tels que TensorFlow, Pytorch et JAX.

L'unité matricielle (matrice) est composée de 128 x 128 multiplicateurs/accumulateurs dans un tableau systolique. Les unités matricielles fournissent la majeure partie de la puissance de calcul dans un TensorCore (cœur TPU). Chaque unité matricielle est capable d'effectuer 16 000 opérations de multiplication par cumul dans chaque cycle. Toutes les multiplications acceptent les entrées bfloat16, mais toutes les accumulations sont effectuées au format numérique FP32.

L'unité vectorielle est utilisée pour les calculs généraux tels que les activations, softmax, etc. L'unité scalaire est utilisée pour le flux de contrôle, le calcul d'adresses mémoire et d'autres opérations de maintenance.

Versions de TPU

La disposition exacte d'un TPU dépend de la version de TPU que vous utilisez. Les détails architecturaux et les caractéristiques des performances des TPU v2 et v3 sont disponibles dans A Super Specific Supercomputer for Training Deep Neural Networks (Supersuperordinateur spécifique au domaine pour l'entraînement de réseaux de neurones profonds).

TPU v4

Chaque puce TPU v4 contient deux TensorCores. Chaque TensorCore comporte quatre unités matricielles, une unité vectorielle et une unité scalaire. Le tableau suivant présente les spécifications de clé et leurs valeurs pour un pod TPU v4.

Caractéristiques principales Valeurs des pods v4
Pic de calcul par chip 275 téraflops (bf16 ou int8)
Capacité et bande passante HBM2 32 Gio, 1 200 Gbit/s
Puissance min./moyenne/puissance mesurée 90/170/192 W
Taille du pod TPU Chips 4096
Topologie d'interconnexion Tore 3D
Pic par pod Exaflops 1.1 (bf16 ou int8)
Bande passante complète par pod 1,1 Po/s
Bande passante de bissection par pod 24 To/s

Le schéma suivant illustre une puce TPU v4.

Image

TPU v3

Chaque puce TPU v3 contient deux TensorCores. Chaque TensorCore comporte deux unités matricielles, une unité vectorielle et une unité scalaire. Le tableau suivant présente les spécifications de clé et leurs valeurs pour un pod TPU v3.

Caractéristiques principales Valeurs des pods v3
Pic de calcul par chip 123 téraflops (bf16)
Capacité et bande passante HBM2 32 Gio, 900 Gbit/s
Puissance min./moyenne/puissance mesurée 123/220/262 W
Taille du pod TPU Chips 1024
Topologie d'interconnexion Tore 2D
Pic par pod 126 pétaflops (bf16)
Bande passante complète par pod 340 To/s
Bande passante de bissection par pod 6,4 To/s

Le schéma suivant illustre une puce TPU v3.

Image

TPU v2

La plus petite configuration de TPU v2 contient quatre puces TPU et 16 Gio de mémoire HBM. Chaque puce TPU contient deux TensorCores. Chaque TensorCore comporte un MXU, une unité vectorielle et une unité scalaire. Le schéma suivant illustre une puce TPU v2.

Image

Cloud TPU propose les configurations de TPU suivantes :

  • TPU individuel
  • Pod TPU : groupe d'appareils TPU connectés par des interconnexions à haut débit
  • Tranche de TPU : subdivision d'un pod TPU

Avantages du TPU v4 par rapport à la version v3

Système de mémoire:

  • Les puces TPU v4 disposent d'un espace de mémoire HBM unifié de 32 Gio sur l'intégralité de la puce, ce qui permet une meilleure coordination entre les deux processeurs TensorCore intégrés.
  • Amélioration des performances HBM grâce aux dernières normes et vitesses de mémoire.
  • Profil de performances DMA amélioré avec prise en charge intégrée du mode hautes performances avec un niveau de précision de 512 B

TensorCores:

  • Deux fois plus d'unités matricielles et une fréquence d'horloge plus élevée, 275 TFLOPS max.
  • Bande passante de transposition et de permutation 2x.
  • Modèle d'accès à la mémoire du magasin de charge pour la mémoire commune (Cmem).
  • Bande passante de chargement MXU plus rapide et mode 8 bits permettant de réduire la taille de lot et d'améliorer la latence d'inférence.

Interconnexion entre puces:

Six liaisons d'interconnexion par puce pour activer des topologies de réseau ayant des diamètres de réseau inférieurs.

Autre :

  • Interface PCIe x16 génératrice à héberger (connexion directe).
  • Modèle de sécurité amélioré.
  • Efficacité énergétique améliorée.

Avantages en termes de performances des TPU v3 par rapport aux TPU v2

L'augmentation de FLOPS par cœur et de la capacité de mémoire accrue dans les configurations TPU v3 peut améliorer les performances de vos modèles des manières suivantes :

  • Les configurations TPU v3 offrent des avantages significatifs en termes de performances par cœur pour les modèles subordonnés aux calculs. Les modèles subordonnés à la mémoire sur les configurations TPU v2 peuvent ne pas bénéficier de cette même amélioration de performances s'ils sont également subordonnés à la mémoire sur les configurations TPU v3.

  • Dans les cas où les données ne tiennent pas dans la mémoire sur les configurations TPU v2, le TPU v3 peut améliorer les performances et réduire le recalcul des valeurs intermédiaires (rematérialisation).

  • Les configurations TPU v3 peuvent exécuter de nouveaux modèles avec des tailles de lots supérieures à celles acceptées par les configurations TPU v2. Par exemple, les TPU v3 acceptent des réseaux ResNet plus profonds et des images plus grandes avec RetinaNet.

Les modèles qui, avec un TPU v2, sont presque subordonnés au flux d'entrée ("infeed") parce que certaines étapes d'entraînement attendent une entrée, peuvent également être subordonnés aux entrées avec Cloud TPU v3. Le guide pour un pipeline performant peut vous aider à résoudre les problèmes de flux d'entrée.

Configurations TPU v4

Un pod TPU v4 est composé de 4 096 puces interconnectées avec des liaisons haut débit reconfigurables. Le réseau flexible de TPU v4 vous permet de connecter les puces de la même taille de plusieurs manières. Vous allez configurer des TPU v4 à l'aide d'AcceleratorConfig. AcceleratorConfig vous permet de spécifier la taille de la tranche en termes de puces via le champ topology.

La topologie du TPU v4 est spécifiée à l'aide d'un 3-tuple qui décrit le nombre, la forme et les interconnexions entre les puces TPU. Les illustrations suivantes présentent certaines topologies TPU v4 courantes.

Image

Des tranches plus grandes peuvent être créées à partir d'un ou de plusieurs "cubes" de chips 4x4x4.

Les tranches de TPU d'un nombre donné de puces peuvent être configurées de différentes manières. Par exemple, une tranche de TPU v4-1024 avec accélérateur type peut désormais être configurée comme suit: 4x4x32, 4x8x16 ou 8x8x8.

Configurations des TPU v2 et v3

Les TPU sont disponibles dans les configurations suivantes :

  1. Carte TPU unique
  2. Pod TPU
  3. Tranche de pod TPU

Carte TPU unique

Une configuration TPU à carte unique est une carte autonome avec quatre puces TPU (huit TensorCores) sans connexion réseau à d'autres cartes TPU. Les cartes TPU uniques ne font pas partie d'une configuration de pod TPU et ne constituent pas une partie d'un pod TPU.

Pods TPU et tranches de pods TPU

Dans une tranche de pod TPU ou une tranche de pod TPU, les puces TPU sont connectées via une interconnexion haut débit. Chaque puce TPU communique directement avec les autres puces de l'appareil TPU. Le logiciel TPU gère automatiquement la distribution des données vers chaque cœur de TPU d'un pod ou d'une tranche. Les tranches de pod sont disponibles avec 32, 128, 512, 1 024 ou 2 048 cœurs.

Architectures de VM Cloud TPU

Les TPU sont conçus pour effectuer des opérations matricielles rapidement. Chaque carte TPU est connectée à une machine hôte basée sur un processeur pour effectuer des opérations qui ne peuvent pas être exécutées sur le TPU. Les machines hôtes sont responsables du chargement des données depuis Cloud Storage, du prétraitement des données et de l'envoi de données au TPU.

image

Dans un pod TPU, il existe un hôte TPU pour chaque carte TPU.

Image

La manière dont vous interagissez avec l'hôte TPU (et la carte TPU) dépend de l'architecture de la VM TPU que vous utilisez: les nœuds TPU ou les VM TPU.

Nœuds TPU

L'architecture du nœud TPU consiste en une VM utilisateur qui communique avec l'hôte TPU via gRPC. Lorsque vous utilisez cette architecture, vous ne pouvez pas accéder directement à l'hôte TPU. Il est donc difficile de déboguer les erreurs d'entraînement et de TPU.

Image

VM TPU

L'architecture de la VM TPU vous permet de vous connecter en SSH à la VM connectée physiquement à l'appareil TPU. Vous disposez d'un accès racine à la VM, ce qui vous permet d'exécuter du code arbitraire. Vous pouvez accéder aux journaux de débogage du compilateur et de l'environnement d'exécution, ainsi qu'aux messages d'erreur.

Image

Frameworks compatibles

Des frameworks tels que JAX, PyTorch et TensorFlow accèdent aux TPU à l'aide d'une bibliothèque partagée appelée libtpu, présente sur chaque VM TPU. libtpu inclut le compilateur XLA, le logiciel d'exécution TPU et le pilote TPU.

Image

TensorFlow

VM TPU

Avec les VM TPU, au lieu d'exécuter votre code Python sur une VM utilisateur, celui-ci peut s'exécuter directement sur l'hôte TPU.

Image

Pour en savoir plus sur les VM TensorFlow et Cloud TPU, consultez le guide de l'utilisateur de la VM Cloud TPU.

Nœuds TPU

À l'origine, l'architecture système des nœuds Cloud TPU a été conçue pour TensorFlow. Les hôtes TPU sont inaccessibles à l'utilisateur et exécutent une copie sans adresse IP du serveur TensorFlow. Ils n'exécutent aucun code Python ni aucun code utilisateur qui n'est pas représenté sous forme de graphe TensorFlow. Le code utilisateur s'exécute dans une VM utilisateur distincte qui communique avec les hôtes TPU via le réseau gRPC.

Image

PyTorch

VM TPU

Avec les VM TPU, votre code PyTorch s'exécute directement sur les hôtes TPU.

images

Pour plus d'informations sur PyTorch et Cloud TPU, consultez le guide de l'utilisateur PyTorch/XLA.

Nœuds TPU

PyTorch s'exécute sur l'architecture des nœuds Cloud TPU à l'aide d'une bibliothèque appelée XRT. XRT envoie des graphes XLA et des instructions d'exécution via gRPC à exécuter sur les serveurs TensorFlow. Une VM utilisateur est requise pour chaque hôte TPU.

Image

JAX

VM TPU

Avec les VM TPU, votre code JAX s'exécute directement sur les hôtes TPU.

Image

Pour en savoir plus sur l'exécution de JAX sur Cloud TPU, consultez le guide de démarrage rapide de JAX.

Nœuds TPU

Sur les nœuds Cloud TPU, JAX s'exécute de la même manière que PyTorch, dans la mesure où une VM utilisateur distincte est requise pour chaque VM hôte.

Image

Étapes suivantes