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'optiontopology
.
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.
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
- Consultez la page Architecture du système pour en savoir plus sur l'architecture des TPU.
- Consultez la section Cas d'utilisation de TPU pour comprendre quels types de modèles sont adaptés à Cloud TPU.