TPU v6e

In diesem Dokument werden die Architektur und die unterstützten Konfigurationen von Cloud TPU v6e (Trillium) beschrieben.

Trillium ist der KI-Beschleuniger der neuesten Generation von Cloud TPU. Auf allen technischen Oberflächen wie der API und in Protokollen sowie in diesem Dokument wird Trillium als v6e bezeichnet.

Mit einer Chipfläche von 256 Chips pro Pod hat v6e viele Ähnlichkeiten mit v5e. Dieses System ist für das Training, die Feinabstimmung und die Bereitstellung von Transformern, Text-zu-Bild-Modellen und CNNs (Convolutional Neural Networks) optimiert.

Systemarchitektur

Jeder v6e-Chip enthält einen TensorCore. Jeder TensorCore hat vier Matrixmultiplikationseinheiten (MXUs), eine Vektoreinheit und eine Skalareinheit. In der folgenden Tabelle sind die wichtigsten Spezifikationen und ihre Werte für TPU v6e im Vergleich zu TPU v5e aufgeführt.

Spezifikation v5e v6e
Leistung/Gesamtbetriebskosten (TCO) (erwartet) 0,65‑fach 1
Maximale Rechenleistung pro Chip (bf16) 197 TFLOPS 918 TFLOPS
Spitzenrechenleistung pro Chip (Int8) 393 TOPs 1836 TOPs
HBM-Kapazität pro Chip 16 GB 32 GB
HBM-Bandbreite pro Chip 819 Gbit/s 1.640 Gbit/s
Inter-Chip-Interconnect-Bandbreite (ICI) 1.600 Gbit/s 3584 Gbit/s
ICI-Ports pro Chip 4 4
DRAM pro Host 512 GiB 1.536 GiB
Chips pro Host 8 8
TPU-Pod-Größe 256 Chips 256 Chips
Interconnect-Topologie 2D-Torus 2D-Torus
BF16-Grafikleistung pro Pod 50,63 PFLOPs 234,9 PFLOPs
All-Reduce-Bandbreite pro Pod 51,2 TB/s 102,4 TB/s
Geteilte Bandbreite pro Pod 1,6 TB/s 3,2 TB/s
NIC-Konfiguration pro Host 2 x 100 Gbit/s NIC 4 x 200 Gbit/s NIC
Rechenzentrumsnetzwerkbandbreite pro Pod 6,4 Tbit/s 25,6 Tbit/s
Besondere Features - SparseCore

Unterstützte Konfigurationen

TPU v6e unterstützt das Training mit bis zu 256 v6e-Chips und die Inferenz mit einem einzelnen Host für bis zu 8 Chips.

In der folgenden Tabelle sind die 2D-Scheibenformen aufgeführt, die für v6e unterstützt werden:

Topologie TPU-Chips Hosts VMs Beschleunigertyp (TPU API) Maschinentyp (GKE API) Umfang Unterstützt die Inferenz?
1x1 1 1/8 1 v6e-1 ct6e-standard-1t Untergeordneter Host Ja
2x2 4 1/2 1 v6e-4 ct6e-standard-4t Untergeordneter Host Ja
2x4 8 1 1 v6e-8 ct6e-standard-8t Einzelner Host Ja
2x4 8 1 2 - ct6e-standard-4t Einzelner Host Nein
4x4 16 2 4 v6e-16 ct6e-standard-4t Mehrere Hosts Nein
4x8 32 4 8 v6e-32 ct6e-standard-4t Mehrere Hosts Nein
8x8 64 8 16 v6e-64 ct6e-standard-4t Mehrere Hosts Nein
8x16 128 16 32 v6e-128 ct6e-standard-4t Mehrere Hosts Nein
16x16 256 32 64 v6e-256 ct6e-standard-4t Mehrere Hosts Nein

Slices mit 8 Chips (v6e-8), die mit einer einzelnen VM verbunden sind, sind für die Inferenz optimiert. So können alle 8 Chips in einer einzelnen Arbeitslast verwendet werden.

Informationen zur Anzahl der VMs für jede Topologie finden Sie unter VM-Typen.

VM-Typen

Jede TPU v6e-VM kann einen, vier oder acht Chips enthalten. Slices mit 4 Chips und weniger haben denselben NUMA-Knoten (Non-Uniform Memory Access). Weitere Informationen zu NUMA-Knoten finden Sie in der Wikipedia unter Non-Uniform Memory Access.

Diagramm eines v6e-Hosts

v6e-Slices werden mit Half-Host-VMs mit jeweils 4 TPU-Chips erstellt. Von dieser Regel gibt es zwei Ausnahmen:

  • v6e-1: Eine VM mit nur einem einzigen Chip, die hauptsächlich zu Testzwecken dient
  • v6e-8: Eine Full-Host-VM, die für einen Inferenz-Use-Case optimiert wurde und bei der alle 8 Chips an eine einzelne VM angeschlossen sind.

Die folgende Tabelle zeigt einen Vergleich der VM-Typen für TPU v6e:

VM-Typ Anzahl der vCPUs pro VM RAM (GB) pro VM Anzahl der NUMA-Knoten pro VM
VM mit einem Chip 44 176 1
4-Chip-VM 180 720 1
VM mit 8 Chips 180 1440 2

V6e-Konfiguration angeben

Wenn Sie mit der TPU API ein TPU v6e-Stück zuweisen, geben Sie dessen Größe und Form entweder mit den Parametern AcceleratorType oder AcceleratorConfig an.

Wenn Sie GKE verwenden, verwenden Sie das Flag --machine-type, um einen Maschinentyp anzugeben, der die gewünschte TPU unterstützt. Weitere Informationen finden Sie in der GKE-Dokumentation unter TPU-Arbeitslasten in GKE Standard bereitstellen.

AcceleratorType verwenden

Wenn Sie TPU-Ressourcen zuweisen, geben Sie mit AcceleratorType die Anzahl der TensorCores in einem Slice an. Der für AcceleratorType angegebene Wert ist ein String im Format v$VERSION-$TENSORCORE_COUNT. v6e-8 gibt beispielsweise ein TPU-Segment vom Typ v6e mit 8 TensorCores an.

Das folgende Beispiel zeigt, wie Sie mit AcceleratorType ein TPU v6e-Stück mit 32 TensorCores erstellen:

gcloud

    $ gcloud compute tpus tpu-vm create tpu-name \
        --zone=zone \
        --accelerator-type=v6e-32 \
        --version=v2-alpha-tpuv6e

Console

  1. Rufen Sie in der Google Cloud Console die Seite TPUs auf:

    TPUs aufrufen

  2. Klicken Sie auf TPU erstellen.

  3. Geben Sie im Feld Name einen Namen für die TPU ein.

  4. Wählen Sie im Feld Zone die Zone aus, in der die TPU erstellt werden soll.

  5. Wählen Sie im Feld TPU-Typ die Option v6e-32 aus.

  6. Wählen Sie im Feld TPU-Softwareversion die Option v2-alpha-tpuv6e aus. Beim Erstellen einer Cloud TPU-VM gibt die TPU-Softwareversion die Version der zu installierenden TPU-Laufzeit an. Weitere Informationen finden Sie unter TPU-VM-Images.

  7. Klicken Sie auf den Schalter Warteschlange aktivieren.

  8. Geben Sie im Feld Name der anstehenden Ressource einen Namen für die anstehende Ressourcenanfrage ein.

  9. Klicken Sie auf Erstellen.

AcceleratorConfig verwenden

Sie können auch AcceleratorConfig verwenden, um die Anzahl der zu verwendenden TensorCores anzugeben. Da es jedoch keine benutzerdefinierten 2D-Topologievarianten für TPU v6e gibt, gibt es keinen Unterschied zwischen der Verwendung von AcceleratorConfig und AcceleratorType.

Verwenden Sie zum Konfigurieren einer TPU v6e mit AcceleratorConfig die Flags --version und --topology. Legen Sie --version auf die gewünschte TPU-Version und --topology auf die physische Anordnung der TPU-Chips im Slice fest. Der für AcceleratorConfig angegebene Wert ist ein String im Format AxB, wobei A und B die Chipanzahl in jede Richtung ist.

Im folgenden Beispiel wird gezeigt, wie Sie einen TPU v6e-Speicher mit 32 TensorCores mit AcceleratorType in einer 4x8-Topologie erstellen:

    $ gcloud compute tpus tpu-vm create tpu-name \
        --zone=zone \
        --type=v6e \
        --topology=4x8 \
        --version=v2-alpha-tpuv6e