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

Types de TPU et topologies

Présentation

Lorsque vous créez une configuration TPU, vous devez spécifier un type et une taille de TPU, ou un type de TPU et une topologie (arrangement logique de puces). Pour ce faire, vous pouvez procéder de deux manières dans une opération gcloud create:

  • Créer une seule chaîne accelerator-type spécifiant le type (v2, v3 ou v4) et le nombre de TensorCores demandés
  • Spécifiez le paramètre type du TPU ainsi que l'option topology.

Consultez la section Types de TPU pour obtenir des exemples de création de TPU à l'aide de la chaîne accelerator-type ou des options type et topology.

Pour en savoir plus sur les différentes versions et topologies de Cloud TPU, consultez le document Architecture système.

Types de TPU

Utilisez l'option "accelerator-type" de la commande gcloud pour spécifier une configuration TPU. Une configuration TPU est composée d'une version de TPU et du nombre de TensorCores. Par exemple, la commande gcloud suivante crée un TPU v3 avec 128 TensorCores:

    $ gcloud compute tpus tpu-vm create tpu-name
      --zone=zone
      --accelerator-type=v3-128
      --version=tpu-vm-tf-2.11.0

Vous pouvez également spécifier la configuration TPU comme le nombre de puces TPU et leur disposition logique (topologie). Pour en savoir plus, consultez la section Configuration des TPU à puce.

Configurations TPU basées sur TensorCore

Pour tous les types de TPU, la version est suivie du nombre de TensorCores (par exemple, 8, 32, 128). Par exemple, --accelerator-type=v2-8 spécifie un TPU v2 avec 8 TensorCores et v3-1024 spécifie un TPU v3 avec 1024 TensorCores (une tranche d'un pod v3).

Configurations TPU basées sur la puce

Les configurations v4 sont spécifiées avec une version de TPU et une topologie. La topologie est spécifiée avec un 3-tuple qui décrit la façon dont les puces sont organisées. Par exemple, la configuration 32-TensorCore peut être représentée sous forme de chips sous la forme 2x2x4 (16 puces, chacune avec 2 TensorCores). Le 3-tuple ne spécifie que la topologie, pas la configuration, qui nécessite une version de TPU.

La représentation d'une topologie v4 est AxBxC, où A<=B<=C et A,B,C sont tous <=4 ou tous les multiples entiers multiples de 4. Les valeurs A, B et C correspondent au nombre de chips des trois dimensions. Les topologies dans lesquelles 2A=B=C ou 2A=2B=C ont également des variantes optimisées pour une communication globale, par exemple 4×4×8, 8×8×16 et 12×12×24.

Pour en savoir plus sur les topologies v4, consultez la section Configurations TPU v4.

Créer des topologies basées sur la topologie à puce (v4)

Avec la version 4, vous voyez des appareils au lieu de TensorCores, soit un appareil par puce. Pour spécifier des topologies basées sur la topologie à puce, la version 4 a introduit les formats de topologie en trois dimensions (par exemple, 4x4x4) avec une option --topology pour l'opération de création de TPU gcloud. Les tableaux présentés dans la section Variantes de topologie incluent des exemples de topologies basées sur la topologie de chips compatibles.

Vous pouvez spécifier un type et une topologie v4 à l'aide des options type et topology de l'opération de création gcloud. Par exemple, la commande gcloud suivante crée un TPU v4 avec 64 puces dans une topologie cubique 4x4x4.

  $ gcloud alpha compute tpus tpu-vm create tpu-name
    --zone=zone
    --type=v4
    --topology=4x4x4
    --version=tpu-vm-tf-2.11.0

La valeur acceptée pour --type est v4.

Variantes de topologie

La topologie standard associée à un nombre de TensorCore ou à un nombre de puces donné est celle qui se rapproche le plus d'un cube (consultez la section Formes de topologie). De par sa forme, il s'agit probablement du meilleur choix pour l'entraînement de ML avec parallélisme des données. D'autres topologies peuvent être utiles pour les charges de travail ayant plusieurs types de parallélisme (par exemple, le parallélisme des modèles et des données, ou le partitionnement spatial d'une simulation). Ces charges de travail fonctionnent mieux si la forme de tranche correspond au parallélisme utilisé. Par exemple, le fait de placer le parallélisme des modèles à quatre voies sur l'axe X et le parallélisme des données à 256 voies sur les dimensions Y et Z correspond à une topologie 4x16x16.

Les modèles comportant plusieurs dimensions de parallélisme sont plus performants, car leurs dimensions de parallélisme sont mappées avec des dimensions de tore. En général, il s'agit des modèles de langage parallèle (LMD) Data+Model parallèle. Par exemple, pour une tranche de pod TPU v4 avec une topologie de 8x16x16, les dimensions de tore sont 8, 16 et 16. Il est plus performant d'utiliser le parallélisme des modèles à 8 ou 16 voies (mappé sur l'une des dimensions de physique physiques). Un parallélisme à quatre directions serait moins optimal avec cette topologie, car il n'est pas aligné avec des dimensions de tore, mais il serait optimal avec une topologie de 4x16x32 sur le même nombre de puces.

Petites topologies v4

Cloud TPU est compatible avec les tranches de TPU v4 suivantes, inférieures à 64 puces, soit un cube 4x4x4. Vous pouvez créer ces topologies v4 de petite taille à l'aide de leur nom basé sur TensorCore (par exemple, v4-32) ou de leur topologie (par exemple, 2x2x4):

Nom (basé sur le nombre de TensorCore) Nombre de chips Topology
v4-8 4 2x2x1
v4-16 8 2x2x2
v4-32 16 2x2x4
v4-64 32 2x4x4

Topologies v4 volumineuses

Les tranches TPU v4 sont disponibles par incréments de 64 puces, avec des formes multiple de quatre sur les trois dimensions. Les dimensions doivent également être dans un ordre croissant. Plusieurs exemples sont présentés dans le tableau suivant. Certaines de ces topologies sont des topologies "personnalisées" qui ne peuvent être lancées qu'à l'aide de l'API Topology, car elles possèdent le même nombre de puces qu'une topologie nommée plus couramment utilisée.

Nom (basé sur le nombre de TensorCore) Nombre de chips Topology
v4-128. 64 4x4x4
v4-256 128 4x4x8
v4-512 256 4x8x8
Voir API Topology 256 4x4x16
v4-1024 512 8x8x8
v4-1536 768 8x8x12
V4-2048 1 024 8x8x16
Voir API Topology 1 024 4x16x16
v4-4096 2 048 8x16x16

API Topology

Pour créer des tranches de pod Cloud TPU avec une topologie personnalisée, l'API TPU gcloud peut être utilisée comme suit:

     $ gcloud alpha compute tpus tpu-vm create tpu-name \
        --zone=us-central2-b \
        --subnetwork=tpusubnet \
        --type=v4 \
        --topology=4x4x16 \
        --version=runtime-version

Formes de topologie

L'image suivante montre trois formes de topologie possibles et leurs paramètres d'option topology associés.

Image

Compatibilité du type de TPU

Vous pouvez remplacer le type de TPU par un autre type de TPU ayant le même nombre de TensorCores (par exemple, v3-128 et v4-128) et exécuter votre script d'entraînement sans modifier le code. Toutefois, si vous passez à un type de TPU comportant plus ou moins de puces ou de TensorCores, vous devrez procéder à un réglage et à une optimisation significatifs. Pour plus d'informations, consultez la page Entraînement sur pods TPU.

Étapes suivantes