Architecture du système

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

Les TPU sont conçus pour effectuer rapidement des opérations matricielles, ce qui les rend idéaux 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.

Conditions d'utilisation de Cloud TPU

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

Inférence par lot

L'inférence par lot ou hors connexion consiste à effectuer des inférences 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 les tâches hors connexion telles que le libellé des données, mais aussi pour évaluer le modèle entraîné. Les SLO de latence ne sont pas une priorité pour l'inférence par lot.

Puce TPU

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

Une unité matricielle est composée de 256 x 256 (TPU v6e) ou 128 x 128 (versions de TPU antérieures à la version v6e) d'accumulateurs de multiplication dans un tableau systolique. Les unités matricielles fournissent l'essentiel de la puissance de calcul d'un TensorCore. Chaque unité matricielle est capable d'effectuer 16 000 opérations multiply-accumulate par cycle. Toutes les multiplications utilisent 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 les softmax. 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.

Cube TPU

Topologie 4x4x4 Cela ne s'applique qu'aux topologies 3D (à partir de la version v4 du TPU).

Inférence

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

Multislice ou tranche unique

Multislice est un groupe de tranches qui étend la connectivité TPU au-delà des connexions d'interconnexion entre puces (ICI) et exploite le réseau de centre de données (DCN) pour transmettre des données au-delà d'une tranche. Les données de chaque tranche sont toujours transmises par l'ICI. Grâce à cette connectivité hybride, Multislice permet le parallélisme entre les tranches et vous permet d'utiliser un plus grand nombre de cœurs TPU pour une seule tâche que ce qu'une seule tranche peut accueillir.

Les TPU peuvent être utilisés pour exécuter une tâche sur une seule tranche ou sur plusieurs tranches. Pour en savoir plus, consultez la section Présentation de la multislice.

Résilience des ICI Cloud TPU

La résilience ICI permet d'améliorer la tolérance aux pannes des liaisons optiques et des commutateurs de circuits optiques (OCS) qui connectent les TPU entre les cubes. (les connexions ICI au sein d'un cube utilisent des liaisons en cuivre qui ne sont pas affectées). La résilience ICI permet de contourner les défaillances de l'OCS et de l'ICI optique. Par conséquent, il améliore la disponibilité de planification des tranches de TPU, avec le compromis d'une dégradation temporaire des performances de l'ICI.

Comme pour Cloud TPU v4, la résilience ICI est activée par défaut pour les tranches v5p d'un cube ou plus:

  • v5p-128 lorsque vous spécifiez le type d'accélérateur
  • 4x4x4 lors de la spécification de la configuration de l'accélérateur

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. Pour en savoir plus, consultez le guide de l'utilisateur des ressources en file d'attente.

Diffusion

Le déploiement consiste à déployer un modèle de machine learning entraîné dans un environnement de production où il peut être utilisé pour effectuer des prédictions ou des décisions. La latence et la disponibilité au niveau du service sont importantes pour la diffusion.

Hôte unique, multi-hôte et sous-hôte

Un hôte TPU est une VM qui s'exécute sur un ordinateur physique connecté à du 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 seule VM TPU. Une charge de travail multi-hôte distribue l'entraînement sur plusieurs VM TPU. Une charge de travail de sous-hôte n'utilise pas toutes les puces d'une VM TPU.

Tranches

Une tranche de pod est un ensemble de puces situées dans le même pod TPU, connectées par des interconnexions entre puces (ICI) à haut débit. Les tranches sont décrites en termes de puces ou de TensorCores, en fonction de la version du TPU.

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

SparseCore

Les SparseCores sont des processeurs de flux de données qui accélèrent les modèles en s'appuyant sur les représentations vectorielles continues qu'on peut trouver dans les modèles de recommandation. La version v5p comprend quatre SparseCores par puce, et la version v6e en comprend deux par puce.

pod TPU

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

VM ou travailleur TPU

Une machine virtuelle exécutant Linux qui a accès aux TPU sous-jacents. Une VM TPU est également appelée nœud de calcul.

TensorCores

Les puces TPU disposent d'un ou de deux TensorCores pour exécuter la multiplication matricielle. Pour en savoir plus sur les TensorCores, consultez cet article de l'ACM.

Nœud de calcul

Consultez la section VM TPU.

Versions de TPU

L'architecture exacte d'une puce TPU dépend de la version de TPU que vous utilisez. Chaque version de TPU est également compatible avec différentes tailles et configurations de tranches. Pour en savoir plus sur l'architecture du système et les configurations compatibles, consultez les pages suivantes:

Architectures TPU

Deux architectures TPU décrivent comment une VM est physiquement connectée à l'appareil TPU: le nœud TPU et la VM TPU. Le nœud TPU était l'architecture TPU d'origine pour les versions TPU v2 et v3. Avec la version 4, la VM TPU est devenue l'architecture par défaut, mais les deux architectures étaient compatibles. L'architecture de nœud TPU est obsolète et seule la VM TPU est prise en charge. Si vous utilisez des nœuds TPU, consultez Passer d'un nœud TPU à une architecture de VM TPU pour passer d'un nœud TPU à une architecture de VM TPU.

Architecture avec une VM TPU

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

image

Architecture avec un nœud TPU

L'architecture du nœud TPU se compose d'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 rend le débogage de l'entraînement et des erreurs TPU difficile.

image

Passer d'une architecture avec un nœud TPU à une architecture avec une VM TPU

Si vous disposez de TPU utilisant l'architecture de nœud TPU, suivez la procédure ci-dessous pour les identifier, les supprimer et les provisionner à nouveau en tant que VM TPU.

  1. Accédez à la page "TPU" :

    Accéder aux TPU

    1. Recherchez votre TPU et son architecture sous l'en-tête Architecture. Si l'architecture est "VM TPU", aucune action n'est requise de votre part. Si l'architecture est "Nœud TPU", vous devez supprimer et réprovisionner le TPU.
  2. Supprimez et réprovisionnez le TPU.

    Consultez la section Gérer les TPU pour savoir comment supprimer et provisionner à nouveau des TPU.

Étape suivante