Architecture du système

Les TPU (Tensor Processing Units) sont des circuits intégrés spécifiques aux applications, conçus par Google pour accélérer les charges de travail de machine learning. Cloud TPU est un service Google Cloud qui rend les TPU disponibles en tant que ressource évolutive.

Conçus pour effectuer rapidement des opérations matricielles, les TPU sont parfaits pour les charges de travail de machine learning. Vous pouvez exécuter des charges de travail de machine learning sur des TPU à l'aide de frameworks tels que TensorFlow, Pytorch et JAX.

Termes liés à Cloud TPU

Si vous débutez avec les Cloud TPU, consultez la page d'accueil de la documentation sur les TPU. Les sections suivantes décrivent les termes et les concepts associés utilisés dans ce document.

Inférence par lot

L'inférence par lot ou hors connexion fait généralement référence à des opérations d'inférence en dehors des pipelines de production, généralement sur un grand nombre d'entrées. L'inférence par lot est utilisée pour des tâches hors connexion telles que l'étiquetage des données, ainsi que pour l'évaluation du modèle entraîné. Les SLO de latence ne constituent pas une priorité pour l'inférence par lot.

Inférence

L'inférence consiste à utiliser un modèle entraîné pour réaliser des prédictions sur de nouvelles données. Il est utilisé par le processus de diffusion.

Ressource en file d'attente

Représentation des ressources TPU, utilisée pour mettre en file d'attente et gérer une requête pour un environnement TPU à une ou plusieurs tranches. Consultez le Guide de l'utilisateur pour les ressources en file d'attente pour plus d'informations.

Diffusion

L'inférence est le processus de déploiement d'un modèle de machine learning entraîné dans un environnement de production où il peut être utilisé pour effectuer des prédictions ou prendre des décisions. La latence et la disponibilité au niveau du service sont importantes pour l'inférence.

Un seul hôte et plusieurs hôtes

Un hôte TPU est une VM qui s'exécute sur un ordinateur physique connecté au matériel TPU. Les charges de travail TPU peuvent utiliser un ou plusieurs hôtes.

Une charge de travail à hôte unique est limitée à une VM TPU et peut accéder à 1, 4 ou 8 puces TPU. Une charge de travail TPU v5e à hôtes multiples peut accéder à 8, 12, 16, 32, 64, 128 ou 256 puces TPU avec une VM TPU pour quatre puces TPU. Les charges de travail à hôtes multiples répartissent l'entraînement sur plusieurs VM TPU.

TPU v5e est compatible avec l'entraînement à hôte unique et multi-hôte, ainsi que l'inférence sur un seul hôte. L'inférence multi-hôte est compatible avec Sax. Pour en savoir plus, consultez la section Diffusion des grands modèles de langage.

Tranches

Une tranche de pod est un ensemble de puces situées toutes à l'intérieur d'un même pod TPU et connectées par des interconnexions de puces à haut débit (ICI, High-Speed inter-Chip interconnects).

Les tranches v5e sont décrites par des formes de secteurs 2D. Chaque nombre de la forme de tranche correspond au nombre de puces v5e dans une dimension. Par exemple, 4x2 décrit une disposition de huit puces v5e dans une grille 4x2.

Les tranches de TPU v4 peuvent être décrites en termes de puces v4. Elles sont décrites avec des formes 3D. Chaque nombre de la forme de la tranche correspond au nombre de puces v4 dans une dimension. Par exemple, 4x4x8 décrit une disposition de 128 chips v4 dans un cube de 4 x 4 x 8.

Les tranches v4 peuvent également être décrites en fonction du nombre de TensorCores qu'elles contiennent. Par exemple, v4-128 décrit une tranche v4 avec 128 TensorCores. Les tranches v4 sont disponibles avec 16, 32, 64, 128, 256, 512, 1 024, 2 048 ou 4 096 TensorCores.

Les tranches de TPU v3 sont décrites en termes de TensorCores et sont disponibles avec 32, 128, 512, 1 024 ou 2 048 TensorCore. Les tranches de TPU v2 sont également décrites en termes de TensorCores et sont disponibles avec 32, 128, 256 ou 512 TensorCores.

La forme de puce et la topologie de puce font également référence aux formes de tranche.

Consultez le tableau de la section Types d'accélérateurs pour obtenir la liste des formes de tranche compatibles avec la version 5e.

Puce TPU

Une puce TPU contient un ou plusieurs Tensor Cores. Le nombre de Tensor Cores dépend de la version de la puce TPU. Chaque TensorCore se compose d'une ou de plusieurs unités matricielles (MXU), d'une unité vectorielle et d'une unité scalaire.

Une unité matricielle est composée d'accumulateurs multiples de 128 x 128 dans un tableau systolique. Les unités matricielles constituent l'essentiel de la puissance de calcul d'un TensorCore. Chaque MXU est capable d'effectuer 16 000 opérations de multiplication/cumul par cycle. Toutes les multiplications prennent des 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 et softmax. L'unité scalaire est utilisée pour le flux de contrôle, le calcul des adresses mémoire et d'autres opérations de maintenance.

TensorCores

Les puces TPU possèdent un ou deux TensorCore pour effectuer la multiplication matricielle. Comme pour les pods v2 et v3, la version v5e comporte un seul TensorCore par puce. En revanche, les pods v4 possèdent 2 TensorCore par puce. Pour en savoir plus sur TensorCores, consultez l'article ACM.

pod TPU

Un pod TPU est un ensemble contigu de TPU regroupés dans un réseau spécialisé. Le nombre de puces TPU dans un pod TPU dépend de la version de TPU.

VM TPU

Machine virtuelle exécutant Linux et ayant accès aux TPU sous-jacents Pour les TPU v5e, chaque VM TPU a un accès direct à 1, 4 ou 8 puces, selon le type d'accélérateur spécifié par l'utilisateur. Pour les versions 4 et antérieures, chaque VM TPU a accès à quatre puces TPU. Une VM TPU est également appelée nœud de calcul.

Nœud de calcul

Consultez la section VM TPU.

Versions de TPU

La structure exacte d'un TPU dépend de la version de TPU que vous utilisez. Les détails de l'architecture et les caractéristiques de performances des TPU v2 et v3 sont disponibles dans le document Un superordinateur spécifique à un domaine pour l'entraînement de réseaux de neurones profonds.

TPU v5e

Chaque puce v5e contient un seul TensorCore. Chaque TensorCore comporte quatre unités de multiplication matricielle (MXU), une unité vectorielle et une unité scalaire.

Le schéma suivant illustre une puce TPU v5e.

Puce de pod v5e

Le tableau suivant présente les spécifications des chips de clé et leurs valeurs pour la version 5e.

Caractéristiques des puces de clés Valeurs v5e
Pic de calcul par puce (bf16) 197 TFLOPs
Pic de calcul par puce (Int8) 393 TFLOPs
Capacité et bande passante HBM2 16 Go, 819 Go/s
Interchip Interconnect BW 1 600 Gbit/s

Le tableau suivant présente les spécifications des pods et leurs valeurs pour la version 5e.

Spécifications clés des pods Valeurs v5e
Taille du pod TPU 256 chips
Topologie d'interconnexion 2D Torus
Pic de calcul par pod 100 PetaOps(Int8)
Réduction totale de la bande passante par pod 51,2 To/s
Bande passante bissectionnelle par pod 1,6 To/s
Bande passante réseau du centre de données par pod 6,4 Tbit/s

TPU v4

Chaque puce TPU v4 contient deux Tensor Cores. Chaque TensorCore comporte quatre MXU, une unité vectorielle et une unité scalaire. Le tableau suivant présente les principales spécifications pour un pod TPU v4.

Principales caractéristiques Valeurs des pods v4
Pic de calcul par puce 275 téraflops (bf16 ou int8)
Capacité et bande passante HBM2 32 Gio, 1 200 Gbit/s
Puissance minimale/moyenne/maximale mesurée 90/170/192 W
Taille du pod TPU 4096 chips
Topologie d'interconnexion Maillage 3D
Pic de calcul par pod 1.1 Exaflops (bf16 ou int8)
Réduction totale de la bande passante par pod 1,1 Po/s
Bande passante bissectionnelle par pod 24 To/s

Le schéma suivant illustre une puce TPU v4.

Image

Maillage 3D et torus 3D

Les TPU v4 disposent d'une connexion directe en 3 dimensions aux puces voisines les plus proches, ce qui se traduit par un maillage 3D des connexions réseau. Lorsque la tranche est égale ou supérieure à un seul cube, les connexions peuvent être configurées en tant que torus 3D. En général, les performances d'une configuration 3D sont meilleures qu'une configuration maillée 3D.

TPU v3

Chaque puce TPU v3 contient deux Tensor Cores. 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.

Principales caractéristiques Valeurs des pods v3
Pic de calcul par puce 123 téraflops (bf16)
Capacité et bande passante HBM2 32 Gio, 900 Go/s
Puissance minimale/moyenne/maximale mesurée 123/220/262 W
Taille du pod TPU 1024 chips
Topologie d'interconnexion Tore 2D
Pic de calcul par pod 126 pétaflops (bf16)
Réduction totale de la bande passante par pod 340 To/s
Bande passante bissectionnelle par pod 6,4 To/s

Le schéma suivant illustre une puce TPU v3.

Image

Avantages en termes de performances du TPU v4 par rapport à la version v3

Cette section décrit les avantages en termes de performances de TPU v4.

Système de mémoire:

Le modèle NUMA (Non Uniform Memory Access) est une architecture de mémoire informatique conçue pour les machines dotées de plusieurs processeurs. Chaque processeur a un accès direct à un bloc de mémoire à haut débit. Un processeur et sa mémoire s'appellent des nœuds NUMA. Les nœuds NUMA sont connectés à des nœuds NUMA directement adjacents. Un processeur provenant d'un nœud NUMA peut accéder à la mémoire d'un autre nœud NUMA, mais cet accès est plus lent que l'accès à la mémoire dans un nœud NUMA.

Les logiciels exécutés sur une machine à plusieurs processeurs peuvent placer les données requises par un processeur dans son nœud NUMA, ce qui augmente le débit de la mémoire. Pour en savoir plus sur la norme NUMA, consultez la section Non Uniform Memory Access (Accès non uniforme à la mémoire) sur Wikipédia.

Vous pouvez profiter des avantages de la localité NUMA en liant votre script d'entraînement au nœud 0 NUMA.

Pour activer la liaison de nœuds NUMA:

  1. Installez l'outil de ligne de commande Numactl.

     $ sudo apt-get update
     $ sudo apt-get install numactl
    

  2. Utilisez numactl --cpunodebind=0 lorsque vous lancez votre script d'entraînement. Cela lie le code de votre script au nœud NUMA 0.

     $ numactl --cpunodebind=0 python3 your-training-script
    

Activez la liaison de nœud NUMA si:

  • si votre charge de travail dépend fortement des charges de travail du processeur (par exemple, classification d'images ou charges de travail de recommandation), quel que soit le framework.
  • Si vous utilisez une version d'exécution TPU sans suffixe "-pod" (par exemple, tpu-vm-tf-2.10.0-v4) :

Autres différences au niveau du système de mémoire:

  • Les puces TPU v4 disposent d'un espace mémoire HBM unifié de 32 Gio sur l'ensemble de la puce, ce qui permet une meilleure coordination entre les deux TensorCores intégrés.
  • Amélioration des performances HBM grâce à l'utilisation des dernières normes de mémoire et vitesses.
  • Amélioration du profil de performances des zones de marché désignées avec compatibilité intégrée pour des performances élevées avec un niveau de précision de 512 milliards.

TensorCores:

  • Deux fois plus de MXU et une fréquence d'horloge plus élevée pour atteindre 275 TFLOPS maximum.
  • Bande passante de transposition et de permutation multipliée par 2.
  • Modèle d'accès à la mémoire de chargement pour la mémoire commune (Cmem).
  • Bande passante de chargement de pondération plus élevée pour MXU et prise en charge du mode 8 bits pour permettre des tailles de lot inférieures et une meilleure latence d'inférence.

Interconnexion interchip:

Six liaisons d'interconnexion par puce pour permettre les topologies de réseau ayant des diamètres de réseau plus petits.

Autre :

  • Interface PCIE 3e génération x16 vers l'hôte (connexion directe).
  • Amélioration du modèle de sécurité.
  • Une efficacité énergétique améliorée

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

L'augmentation du nombre de FLOPS par TensorCore et la capacité de mémoire dans les configurations de TPU v3 peuvent améliorer les performances de vos modèles de différentes manières:

  • Les configurations TPU v3 offrent des avantages significatifs en termes de performances par TensorCore pour les modèles subordonnés au calcul. Il est possible que les modèles subordonnés à la mémoire sur les configurations TPU v2 n'obtiennent pas cette même amélioration des performances s'ils sont également lié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, 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. Ce guide peut vous aider à résoudre les problèmes de flux d'entrée.

Architectures de VM Cloud TPU

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

Architecture de nœud TPU

L'architecture de 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, ce qui complique le débogage de l'entraînement et des erreurs de TPU.

Image

Architecture de VM TPU

L'architecture de VM TPU vous permet de vous connecter directement à la VM connectée physiquement à l'appareil TPU à l'aide de SSH. 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 et aux messages d'erreur du compilateur et de l'environnement d'exécution.

Image

Étapes suivantes