TPU-Typen und Topologien

TPU-Konfigurationen

Wenn Sie eine TPU erstellen, müssen Sie eine TPU-Konfiguration angeben. Sie können eine TPU-Konfiguration als TensorCores oder TPU-Chips festlegen. Eine TPU-Konfiguration in Bezug auf Chips muss nur in erweiterten Szenarien angegeben werden, in denen Sie ein großes Modell trainieren und seine Leistung optimieren.

TensorCore-basierte Konfiguration

Sie können eine TensorCore-basierte Konfiguration mit TPUs der Version 2 und 4 verwenden. Sie beschreiben TensorCore-basierte Konfigurationen mit einer TPU-Version und die Anzahl der zu verwendenden TensorCores. Beispiel: v4-128 gibt eine Konfiguration mit v4 TPUs und 128 TensorCores an. Sie geben eine TensorCore-basierte Konfiguration mit dem Flag --accelerator-type des gcloud compute tpus tpu-vm create-Befehls an:

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

Chipbasierte TPU-Konfiguration

Sie können eine TPU-Chip-basierte Konfiguration mit TPU-Version v4 und höher verwenden. Sie beschreiben chipbasierte Konfigurationen mit einer TPU-Version und einer Topologie (einer physischen Anordnung von TPU-Chips). Sie geben eine TPU-Version mit einem String wie "v4" an. Sie definieren eine Topologie mit einem 3-Tuple, das beschreibt, wie die Chips in drei Dimensionen angeordnet sind. Sie geben eine chipbasierte Konfiguration mit den Flags --version und --topology des gcloud-Befehls „tpus tpu-vm erstellen“ an. Der folgende Befehl gibt beispielsweise TPU v4 als TPU-Version und 2x2x4 (16 Chips mit jeweils 2 TensorCores) als Topologie an:

  $ gcloud compute tpus tpu-vm create tpu-name
    --zone=zone
    --type=v4
    --topology=2x2x4
    --version=tpu-vm-tf-2.12.0

Weitere Informationen zu den verschiedenen Cloud TPU-Versionen und -Topologien finden Sie unter Systemarchitektur.

Die Darstellung einer v4-Topologie ist AxBxC, wobei A<=B<=C und A, B, C entweder alle <= 4 oder das gesamte Vielfache von 4 sind. Die Werte A, B und C sind die Anzahl der Chips in jeder der drei Dimensionen. Topologien, bei denen 2A=B=C oder 2A=2B=C auch Topologievarianten für die vollständige Kommunikation optimiert sind, z. B. 4×4×8, 8×8×16 und 12×12×24.

Weitere Informationen zu v4-Topologien finden Sie unter TPU v4-Konfigurationen.

Topologievarianten

Die mit einer bestimmten Chipanzahl verknüpfte Standardtopologie ist die, die einem Würfel am ehesten entspricht (siehe Topologieformen). Diese Form ist wahrscheinlich die beste Wahl für datengestütztes ML-Training. Andere Topologien können für Arbeitslasten mit mehreren Parallelitäten (z. B. Modell- und Datenparallelität oder räumliche Partitionierung einer Simulation) nützlich sein. Diese Arbeitslasten erzielen die beste Leistung, wenn die Topologie mit der verwendeten Parallelität übereinstimmt. Wenn Sie beispielsweise die Parallele für die 4-Wege-Modelle auf die Dimension X und die 256-Wege-Parallelität für die Y- und die Z-Dimension anwenden, entspricht das einer 4 x 16 x 16-Topologie.

Modelle mit mehreren Parallelitätsdimensionen funktionieren am besten, wenn ihre Parallelitätsdimensionen den TPU-Topologiedimensionen zugeordnet sind. Dies sind in der Regel parallele LLMs (Data+Model). Bei einem TPU v4-Pod-Slice mit der Topologie 8x16x16 lauten die TPU-Topologiedimensionen beispielsweise 8, 16 und 16. Es ist leistungsstärker, die 8- oder 16-Wege-Modellparallelität zu verwenden, die einer der physischen TPU-Topologiedimensionen zugeordnet ist. Eine 4-Wege-Modellparallelität wäre mit dieser Topologie nicht optimal, da sie mit keiner der TPU-Topologiedimensionen ausgerichtet ist, dafür aber eine 4 x 16 x 32-Topologie mit derselben Anzahl von Chips.

Kleine v4-Topologien

Cloud TPU unterstützt die folgenden TPU v4-Slices, die kleiner als 64 Chips sind, also ein 4x4x4- Cube. Sie können diese kleinen v4-Topologien entweder mit ihrem TensorCore-basierten Namen (z. B. v4-32) oder ihrer Topologie (z. B. 2x2x4) erstellen:

Name (basierend auf der TensorCore-Anzahl) Anzahl der Chips Topologie
V4-8 4 2x2x1
V4-16 8 2x2x2
v4–32 16 2x2x4
v4-64 32 2x4x4

Große v4-Topologien

TPU v4-Slices sind in Schritten von 64 Chips verfügbar, wobei die Formen in allen drei Dimensionen ein Vielfaches von 4 sind. Außerdem müssen die Abmessungen in aufsteigender Reihenfolge angegeben werden. In der folgenden Tabelle sind mehrere Beispiele aufgeführt. Einige dieser Topologien sind „benutzerdefinierte“ Topologien, die nur mit der Topology API gestartet werden können, da sie die gleiche Anzahl von Chips wie eine gängige benannte Topologie haben.

Name (basierend auf der TensorCore-Anzahl) Anzahl der Chips Topologie
v4–128 64 4x4x4
v4–256 128 4x4x8
v4–512 256 4x8x8
Siehe Topology API 256 4x4x16
v4-1024 512 8x8x8
v4–1536 768 8x8x12
v4–2048 1.024 8x8x16
Siehe Topology API 1.024 4x16x16
v4-4096 2.048 8x16x16

Topology API

Die gcloud TPU API kann so verwendet werden:

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

Topologieformen

In der folgenden Abbildung sehen Sie drei mögliche Topologieformen und die zugehörigen Einstellungen für das Flag topology.

Image

TPU-Typkompatibilität

Sie können den TPU-Typ in einen anderen TPU-Typ mit der gleichen Anzahl von TensorCores oder Chips ändern (z. B. v3-128 und v4-128) und Ihr Trainingsskript ohne Codeänderungen ausführen. Wenn Sie jedoch zu einem TPU-Typ mit einer größeren oder kleineren Anzahl von Chips oder TensorCores wechseln, müssen Sie eine erhebliche Feinabstimmung und Optimierung vornehmen. Weitere Informationen finden Sie unter Auf TPU-Pods trainieren.

Nächste Schritte