TPU-Konfigurationen

v5p-TPU-Konfigurationen

Ein TPU v5p Pod besteht aus 8.960 Chips, die über neu konfigurierbare Hochgeschwindigkeitsverbindungen miteinander verbunden sind. Mit dem flexiblen Netzwerk von TPU v5p können Sie die Chips in einem Stück gleicher Größe auf mehrere Arten verbinden. Wenn Sie ein TPU-Slice mit dem Befehl gcloud compute tpus tpu-vm create erstellen, geben Sie dessen Typ und Form mit den Parametern AcceleratorType oder AcceleratorConfig an.

Die folgende Tabelle enthält die gängigsten Einzelsegmentformen, die von v5p unterstützt werden, sowie die meisten (aber nicht alle) vollständigen Würfelformen, die größer als 1 Würfel sind. Die maximale v5p-Form beträgt 16 x 16 x 24 (6.144 Chips, 96 Cubes).

Segmentform VM-Größe Anzahl der Kerne # Chips Anzahl der Maschinen Anzahl Würfel Unterstützt Twisted?
2x2x1 Vollständiger Host 8 4 1
2x2x2 Vollständiger Host 16 8 2
2x4x4 Vollständiger Host 64 32 8
4x4x4 Vollständiger Host 128 64 16 1
4x4x8 Vollständiger Host 256 128 32 2 Ja
4x8x8 Vollständiger Host 512 256 64 4 Ja
8×8×8 Vollständiger Host 1.024 512 128 8
8×8×16 Vollständiger Host 2.048 1.024 256 16 Ja
8×16×16 Vollständiger Host 4.096 2.048 512 32 Ja
16×16×16 Vollständiger Host 8.192 4.096 1.024 64
16×16×24 Vollständiger Host 12.288 6144 1.536 96

Das Training mit einem einzelnen Slice wird für bis zu 6.144 Chips unterstützt. Sie kann mit Multislice auf 18.432 Chips erweitert werden. Details zu mehreren Segmenten finden Sie in der Übersicht zu Cloud TPU-Multislices.

AcceleratorType-Parameter verwenden

Wenn Sie TPU-Ressourcen zuweisen, geben Sie mit dem Argument --accelerator-type die Anzahl der TensorCores in einem Slice an. --accelerator-type ist der formatierte String „v$VERSION_NUMBERp-$CORES_COUNT“. v5p-32 gibt beispielsweise ein v5p-TPU-Slice mit 32 TensorCores (16 Chips) an.

Verwenden Sie zum Bereitstellen von TPUs für einen v5p-Trainingsjob einen der folgenden Beschleunigertypen in Ihrer Anfrage zur Erstellung einer Befehlszeile oder TPU API:

  • v5p-8
  • v5p-16
  • v5p-32
  • v5p–64
  • v5p-128 (ein voller Cube/Rack)
  • v5p-256 (2 Cubes)
  • v5p-512
  • v5p-1024 ... v5p-12288

AcceleratorConfig-Parameter verwenden

Bei Cloud TPU-Versionen ab v5p wird AcceleratorConfig auf ähnliche Weise verwendet wie mit Cloud TPU v4. Der Unterschied besteht darin, dass Sie den TPU-Typ nicht als --type=v4, sondern als die verwendete TPU-Version angeben (z. B. --type=v5p für den v5p-Release).

ICI-Resilienz von Cloud TPU

Die ICI-Resilienz verbessert die Fehlertoleranz von optischen Verbindungen und optischen Schaltkreisen (Optical Circuit Switches, OCS), die TPUs zwischen Cubes verbinden. ICI-Verbindungen innerhalb eines Kubus verwenden Kupferverbindungen, die nicht betroffen sind. Dank der ICI-Resilienz können ICI-Verbindungen um OCS- und optische ICI-Fehler herum umgeleitet werden. Infolgedessen wird die Planungsverfügbarkeit von TPU-Slices verbessert, ohne dass eine vorübergehende Verschlechterung der ICI-Leistung entsteht.

Ähnlich wie bei Cloud TPU v4 ist die ICI-Resilienz standardmäßig für v5p-Slices aktiviert, die einen Cube oder größer sind:

  • v5p-128 bei Angabe des Beschleunigertyps
  • 4x4x4 bei Angabe der Beschleunigerkonfiguration

VM-, Host- und Slice-Attribute

Attribut Wert in einer TPU
Anzahl der v5p-Chips 4
Anzahl der vCPUs 208 (nur die Hälfte ist nutzbar, wenn eine NUMA-Bindung verwendet wird, um eine Leistungseinbußen durch mehrere NUMA-Instanzen zu vermeiden)
RAM (GB) 448 (nur die Hälfte ist verwendbar, wenn NUMA-Bindung verwendet wird, um Cross-NUMA-Leistungseinbußen zu vermeiden)
Anzahl von NUMA Knoten 2
NIC-Durchsatz (Gbit/s) 200

Beziehung zwischen der Anzahl von TensorCores, Chips, Hosts/VMs und Cubes in einem Pod:

Kerne Chips Hosts/VMs Würfel
Moderator 8 4 1
Würfel (auch als Rack bezeichnet) 128 64 16 1
Größtes unterstütztes Slice 12.288 6144 1.536 96
Vollständiger v5p-Pod 17920 8960 2240 140

TPU v5e-Konfigurationen

Cloud TPU v5e ist ein kombiniertes Trainings- und Inferenzprodukt (Bereitstellung). Verwenden Sie zum Unterscheidung zwischen einer Trainings- und einer Inferenzumgebung das Flag AcceleratorType oder AcceleratorConfig mit der TPU API oder das Flag --machine-type beim Erstellen eines GKE-Knotenpools.

Trainingsjobs sind im Hinblick auf Durchsatz und Verfügbarkeit optimiert, während die Bereitstellung von Jobs für Latenz optimiert ist. Ein Trainingsjob auf TPUs, die für die Bereitstellung bereitgestellt wurde, könnte also eine niedrigere Verfügbarkeit haben. Ebenso könnte ein Bereitstellungsjob, der auf TPUs ausgeführt wird, die für das Training bereitgestellt wurden, eine höhere Latenz haben.

Mit AcceleratorType geben Sie die Anzahl der TensorCores an, die Sie verwenden möchten. Sie geben die AcceleratorType an, wenn Sie eine TPU über die gcloud CLI oder die Google Cloud Console erstellen. Der Wert, den Sie für AcceleratorType angeben, ist ein String im folgenden Format: v$VERSION_NUMBER-$CHIP_COUNT.

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

Verwenden Sie die Flags --version und --topology, um eine TPU v5e mit AcceleratorConfig zu konfigurieren. Legen Sie für --version die gewünschte TPU-Version und für --topology die physische Anordnung der TPU-Chips im Slice fest. Der Wert, den Sie für AcceleratorConfig angeben, ist ein String mit dem Format AxB, wobei A und B die Anzahl der Chips in jede Richtung sind.

Die folgenden 2D-Segmentformen werden in v5e unterstützt:

Topologie Anzahl der TPU-Chips Anzahl der Hosts
1x1 1 1/8
2x2 4 2.1.
2x4 8 1
4x4 16 2
4x8 32 4
8x8 64 8
8x16 128 16
16x16 256 32

Jede TPU-VM in einem v5e-TPU-Slice enthält 1, 4 oder 8 Chips. In 4-Chip- und kleineren Segmenten teilen sich alle TPU-Chips denselben NUMA-Knoten (Non Uniform Memory Access).

Bei 8-Chip-v5e-TPU-VMs ist die CPU-TPU-Kommunikation innerhalb von NUMA-Partitionen effizienter. In der folgenden Abbildung ist die CPU0-Chip0-Kommunikation beispielsweise schneller als die CPU0-Chip4-Kommunikation.

Kommunikation mit NUMA-Knoten

Cloud TPU v5e-Typen für die Bereitstellung

Die Bereitstellung auf einem Host wird für bis zu 8 v5e-Chips unterstützt. Die folgenden Konfigurationen werden unterstützt: 1x1-, 2x2- und 2x4-Slices. Jedes Slice hat 1, 4 bzw. 8 Chips.

TPU v5e-Konfigurationen, die die Bereitstellung unterstützen: 1x1, 2x2 und 2x4.

Verwenden Sie zum Bereitstellen von TPUs für einen Bereitstellungsjob einen der folgenden Beschleunigertypen in der Anfrage zum Erstellen einer Befehlszeile oder API-TPU:

AcceleratorType (TPU API) Maschinentyp (GKE API)
v5litepod-1 ct5lp-hightpu-1t
v5litepod-4 ct5lp-hightpu-4t
v5litepod-8 ct5lp-hightpu-8t

Die Bereitstellung auf mehr als 8 v5e-Chips (auch als Multi-Host-Bereitstellung bezeichnet) wird mit Sax unterstützt. Weitere Informationen finden Sie unter Large Language Model Serving.

Cloud TPU v5e-Typen für das Training

Training wird für bis zu 256 Chips unterstützt.

Verwenden Sie zum Bereitstellen von TPUs für einen v5e-Trainingsjob einen der folgenden Beschleunigertypen in Ihrer Anfrage zum Erstellen einer Befehlszeile oder API-TPU:

AcceleratorType (TPU API) Maschinentyp (GKE API) Topologie
v5litepod-16 ct5lp-hightpu-4t 4x4
v5litepod-32 ct5lp-hightpu-4t 4x8
v5litepod-64 ct5lp-hightpu-4t 8x8
v5litepod-128 ct5lp-hightpu-4t 8x16
v5litepod-256 ct5lp-hightpu-4t 16x16

v5e-TPU-VM-Typvergleich:

VM-Typ n2d-48-24-v5lite-tpu n2d-192-112-v5lite-tpu n2d-384-224-v5lite-tpu
Anzahl der V5e-Chips 1 4 8
Anzahl der vCPUs 24 112 224
RAM (GB) 48 192 384
Anzahl von NUMA Knoten 1 1 2
Gilt für v5litepod-1 v5litepod-4 v5litepod-8
Störungen Hoch Mittel Niedrig

Um Platz für Arbeitslasten zu schaffen, die mehr Chips benötigen, können Planer VMs mit weniger Chips vorzeitig beenden. 8-Chip-VMs führen also wahrscheinlich dazu, dass 1- und 4-Chip-VMs vorzeitig beendet werden.

TPU v4-Konfigurationen

Ein TPU v4 Pod besteht aus 4.096 Chips, die über neu konfigurierbare Hochgeschwindigkeitsverbindungen miteinander verbunden sind. Mit dem flexiblen Netzwerk von TPU v4 können Sie die Chips in einem Pod-Slice derselben Größe auf mehrere Arten verbinden. Beim Erstellen eines TPU-Pod-Slice geben Sie die TPU-Version und die Anzahl der erforderlichen TPU-Ressourcen an. Wenn Sie ein TPU v4 Pod-Slice erstellen, können Sie seinen Typ und seine Größe auf zwei Arten angeben: AcceleratorType und AcceleratorConfig.

AcceleratorType verwenden

Verwenden Sie AcceleratorType, wenn Sie keine Topologie angeben. Wenn Sie v4-TPUs mit AcceleratorType konfigurieren möchten, verwenden Sie beim Erstellen des TPU-Pod-Slice das Flag --accelerator-type. Legen Sie für --accelerator-type einen String fest, der die TPU-Version und die Anzahl der TensorCores enthält, die Sie verwenden möchten. Um beispielsweise ein v4 Pod-Slice mit 32 TensorCores zu erstellen, verwenden Sie --accelerator-type=v4-32.

Mit dem folgenden Befehl wird mithilfe des Flags --accelerator-type ein v4 TPU-Pod-Slice mit 512 TensorCores erstellt:

  $ gcloud compute tpus tpu-vm create tpu-name
    --zone=zone
    --accelerator-type=v4-512
    --version=tpu-vm-tf-2.16.1-pod-pjrt

Die Zahl nach der TPU-Version (v4) gibt die Anzahl der TensorCores an. Eine v4 TPU enthält zwei TensorCores, sodass die Anzahl der TPU-Chips 512/2 = 256 beträgt.

AcceleratorConfig verwenden

Verwenden Sie AcceleratorConfig, wenn Sie die physische Topologie Ihres TPU-Slice anpassen möchten. Dies ist im Allgemeinen für die Leistungsoptimierung mit Pod-Slices mit mehr als 256 Chips erforderlich.

Verwenden Sie die Flags --version und --topology, um V4-TPUs mit AcceleratorConfig zu konfigurieren. Legen Sie --version auf die zu verwendende TPU-Version und --topology auf die physische Anordnung der TPU-Chips im Pod-Slice fest.

Sie geben eine TPU-Topologie mit einem 3-Tupel (AxBxC) an, wobei A<=B<=C und A, B, C entweder alle <= 4 oder alle ganzzahligen Vielfachen von 4 sind. Die Werte A, B und C sind die Anzahl der Chips in jeder der drei Dimensionen. Zum Erstellen eines v4-Pod-Slice mit 16 Chips würden Sie beispielsweise --version=v4 und --topology=2x2x4 festlegen.

Mit dem folgenden Befehl wird ein v4 TPU-Pod-Slice mit 128 TPU-Chips in einem 4x4x8-Array erstellt:

  $ gcloud compute tpus tpu-vm create tpu-name
    --zone=zone
    --type=v4
    --topology=4x4x8
    --version=tpu-vm-tf-2.16.1-pod-pjrt

Topologien mit 2A=B=C oder 2A=2B=C haben auch Topologievarianten, die für die Gesamtkommunikation optimiert sind, z. B. 4 × 4 × 8, 8 × 8 × 16 und 12 × 12 × 24. Diese werden als Twisted Tori-Topologien bezeichnet.

Die folgenden Abbildungen zeigen einige gängige TPU v4-Topologien.

Image

Größere Pod-Slices können aus einem oder mehreren 4x4x4-Chips erstellt werden.

Twisted Tori-Topologien

Bei einigen 3D-Torus-Slice-Formen in v4 kann eine sogenannte Twisted Torus-Topologie verwendet werden. Zum Beispiel können zwei v4-Würfel als 4x4x8-Slice oder 4x4x8_twisted angeordnet werden. Twisted-Topologien bieten eine erheblich höhere Bandbreite durch Zweiabschnitte. Eine erhöhte Bandbreite der geteilten Abschnitte ist nützlich für Arbeitslasten, die globale Kommunikationsmuster verwenden. Twisted Topologien können die Leistung bei den meisten Modellen verbessern, wobei große Arbeitslasten von TPU-Einbettungen am meisten davon profitieren.

Bei Arbeitslasten, die Datenparallelität als einzige Parallelitätsstrategie verwenden, funktionieren verdrillte Topologien möglicherweise etwas besser. Bei LLMs kann die Leistung mit einer Twisted-Topologie je nach Art der Parallelität (DP, MP usw.) variieren. Als Best Practice wird empfohlen, das LLM mit und ohne verdrillte Topologie zu trainieren, um festzustellen, welche die beste Leistung für Ihr Modell bietet. Bei einigen Tests mit dem FSDP MaxText-Modell wurden mit einer verdrillten Topologie ein bis zwei MFU-Verbesserungen festgestellt.

Der Hauptvorteil von verdrillten Topologien besteht darin, dass sie eine asymmetrische Torus-Topologie (z. B. 4 × 4 × 8) in eine eng verwandte symmetrische Topologie umwandelt. Die symmetrische Topologie bietet viele Vorteile:

  • Verbessertes Load-Balancing
  • Höhere Zweisektionsbandbreite
  • Kürzere Paketrouten

Diese Vorteile führen letztendlich zu einer verbesserten Leistung bei vielen globalen Kommunikationsmustern.

Die TPU-Software unterstützt ein verdrilltes Tori auf Segmenten, bei denen die Größe jeder Dimension entweder gleich oder doppelt so groß wie die kleinste Dimension ist. Beispiel: 4 × 4 × 8, 4 × 8 × 8 oder 12 × 12 × 24.

Sehen Sie sich als Beispiel diese 4 × 2-Torus-Topologie mit TPUs an, die mit ihren Koordinaten (X,Y) im Slice gekennzeichnet sind:

Die Kanten in diesem Topologiediagramm werden der Übersichtlichkeit halber als ungerichtete Kanten dargestellt. In der Praxis ist jede Edge eine bidirektionale Verbindung zwischen TPUs. Die Kanten zwischen einer Seite dieses Rasters und der gegenüberliegenden Seite werden als umlaufende Kanten bezeichnet, wie im Diagramm dargestellt.

Zeichnen

Durch das Verdrehen dieser Topologie erhalten wir eine vollständig symmetrische 4 × 2-Twisted-Torus-Topologie:

Zeichnen

Was sich zwischen diesem und dem vorherigen Diagramm geändert hat, sind nur die Y-Wickelkanten. Anstatt eine Verbindung zu einer anderen TPU mit derselben X-Koordinate herzustellen, wurden sie verschoben, um eine Verbindung zur TPU mit der Koordinate X+2 mod 4 herzustellen.

Dieselbe Idee wird auf verschiedene Dimensionsgrößen und eine unterschiedliche Anzahl von Dimensionen verallgemeinert. Das resultierende Netzwerk ist symmetrisch, solange jede Dimension gleich oder doppelt so groß wie die kleinste Dimension ist.

Die folgende Tabelle zeigt die unterstützten verdrillten Topologien und die theoretische Steigerung der Bandbreite in getrennten Teilen im Vergleich zu unverdrillten Topologien.

Twisted Topologie Theoretische Steigerung der Zweisektion
Bandbreite im Vergleich zu einem verdrehten Torus
4×4×8_twisted ~70%
8x8x16_twisted
12×12×24_twisted
4×8×8_twisted ~40%
8×16×16_twisted

TPU v4-Topologievarianten

Einige Topologien mit derselben Anzahl von Chips können auf unterschiedliche Weise angeordnet werden. Ein TPU-Pod-Slice mit 512 Chips (1.024 TensorCores) kann beispielsweise mit den folgenden Topologien konfiguriert werden: 4x4x32, 4x8x16 oder 8x8x8. Ein TPU-Pod-Slice mit 2.048 Chips (4.096 TensorCores) bietet noch mehr Topologieoptionen: 4x4x128, 4x8x64, 4x16x32 und 8x16x16. Ein TPU-Pod-Slice mit 2.048 Chips (4.096 TensorCores) bietet noch mehr Topologieoptionen: 4x4x128, 4x8x64, 4x16x32 und 8x16x16.

Die mit einer bestimmten Chipanzahl verknüpfte Standardtopologie ist einem Cube am ähnlichsten (siehe Topologie v4). Diese Form ist wahrscheinlich die beste Wahl für datenparalleles ML-Training. Andere Topologien können für Arbeitslasten mit mehreren Arten von Parallelität nützlich sein (z. B. Modell- und Datenparallelität oder räumliche Partitionierung einer Simulation). Diese Arbeitslasten funktionieren am besten, wenn die Topologie an die verwendete Parallelität angepasst ist. Wenn Sie beispielsweise die 4-Wege-Modellparallelität für die X-Dimension und die 256-Wege-Datenparallelität auf den Y- und Z-Dimensionen festlegen, entspricht eine 4 × 16 × 16-Topologie.

Modelle mit mehreren Parallelitätsdimensionen funktionieren am besten, wenn ihre Parallelitätsdimensionen den TPU-Topologiedimensionen zugeordnet werden. Dies sind in der Regel parallele Large Language Models (LLMs) aus Daten und Modellen. Für ein TPU v4-Pod-Slice mit einer Topologie von 8 x 16 x 16 betragen die Abmessungen der TPU-Topologie beispielsweise 8, 16 und 16. Leistungsstarker ist die 8-Wege- oder 16-Wege-Modellparallelität, die einer der Dimensionen der physischen TPU-Topologie zugeordnet ist. Eine 4-Wege-Modellparallelität wäre bei dieser Topologie nicht optimal, da sie nicht an eine der Dimensionen der TPU-Topologie ausgerichtet ist. Sie wäre jedoch mit einer 4 × 16 × 32-Topologie auf derselben Anzahl von Chips optimal.

TPU v4-Konfigurationen bestehen aus zwei Gruppen: entweder mit Topologien, die kleiner als 64 Chips sind (kleine Topologien), und solchen, die mehr als 64 Chips (große Topologien) haben.

Kleine v4-Topologien

Cloud TPU unterstützt die folgenden TPU v4 Pod-Slices, die kleiner als 64 Chips sind, also einen 4x4x4-Würfel. 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 Anzahl der TensorCores) 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 Pod-Slices sind in Schritten von 64 Chips verfügbar. Die Formen sind in allen drei Dimensionen ein Vielfaches von 4. Die Dimensionen müssen ebenfalls in aufsteigender Reihenfolge sein. Die folgende Tabelle enthält mehrere Beispiele. Einige dieser Topologien sind "benutzerdefinierte" Topologien, die nur mit den Flags --type und --topology erstellt werden können, da es mehr als eine Möglichkeit gibt, die Chips anzuordnen.

Mit dem folgenden Befehl wird ein v4 TPU-Pod-Slice mit 512 TPU-Chips in einem 8x8x8-Array erstellt:

  $ gcloud compute tpus tpu-vm create tpu-name
    --zone=zone
    --type=v4
    --topology=8x8x8
    --version=tpu-vm-tf-2.16.1-pod-pjrt

Mit --accelerator-type können Sie ein v4 TPU-Pod-Slice mit der gleichen Anzahl von TensorCores erstellen:

  $ gcloud compute tpus tpu-vm create tpu-name
    --zone=zone
    --accelerator-type=v4-1024
    --version=tpu-vm-tf-2.16.1-pod-pjrt
Name (basierend auf der Anzahl der TensorCores) Anzahl der Chips Topologie
v4-128 64 4x4x4
v4-256 128 4x4x8
v4-512 256 4x8x8
Nicht zutreffend, muss die Flags --type und --topology verwenden 256 4x4x16
v4-1024 512 8×8×8
v4-1536 768 8×8×12
v4-2048 1.024 8×8×16
Nicht zutreffend, muss die Flags --type und --topology verwenden 1.024 4×16×16
v4-4096 2.048 8×16×16

TPU v3-Konfigurationen

Ein TPU v3 Pod besteht aus 1.024 Chips, die über Hochgeschwindigkeitsverbindungen miteinander verbunden sind. Verwenden Sie zum Erstellen eines TPU v3-Geräts oder Pod-Slice das Flag --accelerator-type für den Befehl gcloud compute tpus tpu-vm. Zum Angeben des Beschleunigertyps geben Sie die TPU-Version und die Anzahl der TPU-Kerne an. Verwenden Sie für eine einzelne v3-TPU --accelerator-type=v3-8. Verwenden Sie --accelerator-type=v3-128 für ein v3 Pod-Slice mit 128 TensorCores.

Der folgende Befehl zeigt, wie Sie ein v3 TPU-Pod-Slice mit 128 TensorCores erstellen:

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

In der folgenden Tabelle sind die unterstützten v3-TPU-Typen aufgeführt:

TPU-Version Support-Ende
v3-8 (Enddatum wurde noch nicht festgelegt)
v3-32 (Enddatum wurde noch nicht festgelegt)
v3-128 (Enddatum wurde noch nicht festgelegt)
v3-256 (Enddatum wurde noch nicht festgelegt)
v3-512 (Enddatum wurde noch nicht festgelegt)
v3-1024 (Enddatum wurde noch nicht festgelegt)
v3-2048 (Enddatum wurde noch nicht festgelegt)

Weitere Informationen zum Verwalten von TPUs finden Sie unter TPUs verwalten. Weitere Informationen zu den verschiedenen Versionen von Cloud TPU finden Sie unter Systemarchitektur.

TPU v2-Konfigurationen

Ein TPU v2 Pod besteht aus 512 Chips, die über neu konfigurierbare Hochgeschwindigkeitsverbindungen miteinander verbunden sind. Verwenden Sie zum Erstellen eines TPU v2 Pod-Slice das Flag --accelerator-type für den Befehl gcloud compute tpus tpu-vm. Zum Angeben des Beschleunigertyps geben Sie die TPU-Version und die Anzahl der TPU-Kerne an. Verwenden Sie für eine einzelne v2-TPU --accelerator-type=v2-8. Verwenden Sie --accelerator-type=v2-128 für ein v2 Pod-Slice mit 128 TensorCores.

Der folgende Befehl zeigt, wie Sie ein v2 TPU-Pod-Slice mit 128 TensorCores erstellen:

  $ gcloud compute tpus tpu-vm create tpu-name
    --zone=zone
    --accelerator-type=v2-128
    --version=tpu-vm-tf-2.16.1-pjrt

Weitere Informationen zum Verwalten von TPUs finden Sie unter TPUs verwalten. Weitere Informationen zu den verschiedenen Versionen von Cloud TPU finden Sie unter Systemarchitektur.

In der folgenden Tabelle sind die unterstützten v2-TPU-Typen aufgeführt

TPU-Version Support-Ende
v2-8 (Enddatum wurde noch nicht festgelegt)
v2-32 (Enddatum wurde noch nicht festgelegt)
v2-128 (Enddatum wurde noch nicht festgelegt)
v2-256 (Enddatum wurde noch nicht festgelegt)
v2-512 (Enddatum wurde noch nicht festgelegt)

TPU-Typkompatibilität

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

TPU-VM-Softwareversionen

In diesem Abschnitt werden die TPU-Softwareversionen beschrieben, die Sie für eine TPU mit der TPU VM-Architektur verwenden sollten. Informationen zur Architektur des TPU-Knotens finden Sie unter Softwareversionen des TPU-Knotens.

TPU-Softwareversionen sind für TensorFlow-, PyTorch- und JAX-Frameworks verfügbar.

TensorFlow

Verwenden Sie die TPU-Softwareversion, die der Version von TensorFlow entspricht, mit der Ihr Modell geschrieben wurde.

Ab TensorFlow 2.15.0 müssen Sie außerdem entweder die SE-Laufzeit (Stream Executor) oder die PJRT-Laufzeit angeben. Wenn Sie beispielsweise TensorFlow 2.16.1 mit der PJRT-Laufzeit verwenden, verwenden Sie die TPU-Softwareversion tpu-vm-tf-2.16.1-pjrt. Versionen vor TensorFlow 2.15.0 unterstützen nur Stream Executor. Weitere Informationen zu PJRT finden Sie unter Unterstützung von TensorFlow PJRT.

Derzeit werden folgende Versionen der TensorFlow-TPU-VM-Software unterstützt:

  • tpu-vm-tf-2.16.1-pjrt
  • tpu-vm-tf-2.16.1-se
  • tpu-vm-tf-2.15.0-pjrt
  • tpu-vm-tf-2.15.0-se
  • tpu-vm-tf-2.14.1
  • tpu-vm-tf-2.14.0
  • tpu-vm-tf-2.13.1
  • tpu-vm-tf-2.13.0
  • tpu-vm-tf-2.12.1
  • tpu-vm-tf-2.12.0
  • tpu-vm-tf-2.11.1
  • tpu-vm-tf-2.11.0
  • tpu-vm-tf-2.10.1
  • tpu-vm-tf-2.10.0
  • tpu-vm-tf-2.9.3
  • tpu-vm-tf-2.9.1
  • tpu-vm-tf-2.8.4
  • tpu-vm-tf-2.8.3
  • tpu-vm-tf-2.8.0
  • tpu-vm-tf-2.7.4
  • tpu-vm-tf-2.7.3

Weitere Informationen zu TensorFlow-Patchversionen finden Sie unter Unterstützte TensorFlow-Patchversionen.

Unterstützung für TensorFlow PJRT

Ab TensorFlow 2.15.0 können Sie die PJRT-Schnittstelle für TensorFlow auf TPU verwenden. PJRT ermöglicht eine automatische Defragmentierung des Gerätespeichers und vereinfacht die Integration von Hardware in Frameworks. Weitere Informationen zu PJRT finden Sie unter PJRT: Improving ML Hardware and Framework Integration im Google Open-Source-Blog.

Nicht alle Funktionen von TPU v2, v3 und v4 wurden zur PJRT-Laufzeit migriert. In der folgenden Tabelle wird beschrieben, welche Features von PJRT oder Dampf Executor unterstützt werden.

Beschleuniger Funktion Unterstützt auf PJRT Im Stream-Executor unterstützt
TPU v2–v4 Dichtes Computing (keine TPU Embedding API) Ja Ja
TPU v2–v4 Dense Compute API + TPU Embedding API Nein Ja
TPU v2–v4 tf.summary/tf.print mit Soft-Device-Platzierung Nein Ja
TPU v5e Dichtes Computing (keine TPU Embedding API) Ja Nein
TPU v5e TPU Embedding API Nicht zutreffend – TPU v5e unterstützt die TPU Embedding API nicht
TPU v5p Dichtes Computing (keine TPU Embedding API) Ja Nein
TPU v5p TPU Embedding API Ja Nein

TPU v4 mit TensorFlow-Version 2.10.0 und niedriger

Wenn Sie ein Modell auf TPU v4 mit TensorFlow trainieren, verwenden TensorFlow-Versionen 2.10.0 und niedriger die in der folgenden Tabelle aufgeführten v4-spezifischen Versionen. Wenn die von Ihnen verwendete TensorFlow-Version nicht in der Tabelle aufgeführt ist, folgen Sie der Anleitung im Abschnitt TensorFlow.

TensorFlow-Version Version der TPU-Software
2.10.0 tpu-vm-tf-2.10.0-v4, tpu-vm-tf-2.10.0-pod-v4
2.9.3 tpu-vm-tf-2.9.3-v4, tpu-vm-tf-2.9.3-pod-v4
2.9.2 tpu-vm-tf-2.9.2-v4, tpu-vm-tf-2.9.2-pod-v4
2.9.1 tpu-vm-tf-2.9.1-v4, tpu-vm-tf-2.9.1-pod-v4

Libtpu-Versionen

TPU-VMs werden mit TensorFlow und der entsprechenden vorinstallierten Libtpu-Bibliothek erstellt. Wenn Sie ein eigenes VM-Image erstellen, geben Sie die folgenden TensorFlow-TPU-Softwareversionen und entsprechende libtpu-Versionen an:

TensorFlow-Version libtpu.so-Version
2.16.1 1.10.1
2.15.0 1.9.0
2.14.1 1.8.1
2.14.0 1.8.0
2.13.1 1.7.1
2.13.0 1.7.0
2.12.1 1.6.1
2.12.0 1.6.0
2.11.1 1.5.1
2.11.0 1.5.0
2.10.1 1.4.1
2.10.0 1.4.0
2.9.3 1.3.2
2.9.1 1.3.0
2.8.3 1.2.3
2,8.* 1.2.0
2.7.3 1.1.2

PyTorch

Verwenden Sie die TPU-Softwareversion, die der Version von PyTorch entspricht, mit der Ihr Modell geschrieben wurde. Wenn Sie beispielsweise PyTorch 1.13 und TPU v2 oder v3 verwenden, verwenden Sie die TPU-Softwareversion tpu-vm-pt-1.13. Wenn Sie TPU v4 nutzen, verwenden Sie die TPU-Softwareversion tpu-vm-v4-pt-1.13. Für TPU-Pods wird dieselbe TPU-Softwareversion verwendet (z. B. v2-32, v3-128, v4-32). Die aktuell unterstützten TPU-Softwareversionen sind:

TPU v2/v3:

  • tpu-vm-pt-2.0 (pytorch-2.0)
  • tpu-vm-pt-1.13 (pytorch-1.13)
  • tpu-vm-pt-1.12 (pytorch-1.12)
  • tpu-vm-pt-1.11 (pytorch-1.11)
  • tpu-vm-pt-1.10 (pytorch-1.10)
  • v2-alpha (pytorch-1.8.1)

TPU v4:

  • tpu-vm-v4-pt-2.0 (pytorch-2.0)
  • tpu-vm-v4-pt-1.13 (pytorch-1.13)

TPU v5 (v5e und v5p):

  • v2-alpha-tpuv5 (pytorch-2.0)

Wenn Sie eine TPU-VM erstellen, ist die neueste Version von PyTorch auf der TPU-VM vorinstalliert. Die richtige Version von libtpu.so wird bei der Installation von PyTorch automatisch installiert.

Informationen zum Ändern der aktuellen PyTorch-Softwareversion finden Sie unter PyTorch-Version ändern.

JAX

Sie müssen JAX manuell auf Ihrer TPU-VM installieren. Für TPU v2 und v3 gibt es keine JAX-spezifische TPU-Software (Laufzeitversion). Verwenden Sie für aktuelle TPU-Versionen die folgenden Softwareversionen:

  • TPU v4: tpu-vm-v4-base
  • TPU v5e: v2-alpha-tpuv5
  • TPU v5p: v2-alpha-tpuv5

Die richtige Version von libtpu.so wird bei der Installation von JAX automatisch installiert.

Softwareversionen von TPU-Knoten

In diesem Abschnitt werden die TPU-Softwareversionen beschrieben, die Sie für eine TPU mit der TPU-Knotenarchitektur verwenden sollten. Informationen zur Architektur der TPU-VM finden Sie unter TPU-VM-Softwareversionen.

TPU-Softwareversionen sind für TensorFlow-, PyTorch- und JAX-Frameworks verfügbar.

TensorFlow

Verwenden Sie die TPU-Softwareversion, die der Version von TensorFlow entspricht, mit der Ihr Modell geschrieben wurde. Wenn Sie beispielsweise TensorFlow 2.12.0 verwenden, verwenden Sie die TPU-Softwareversion 2.12.0. Die TensorFlow-spezifischen TPU-Softwareversionen sind:

  • 2.12.1
  • 2.12.0
  • 2.11.1
  • 2.11.0
  • 2.10.1
  • 2.10.0
  • 2.9.3
  • 2.9.1
  • 2.8.4
  • 2.8.2
  • 2.7.3

Weitere Informationen zu TensorFlow-Patchversionen finden Sie unter Unterstützte TensorFlow-Patchversionen.

Beim Erstellen eines TPU-Knotens ist die neueste Version von TensorFlow auf dem TPU-Knoten vorinstalliert.

PyTorch

Verwenden Sie die TPU-Softwareversion, die der Version von PyTorch entspricht, mit der Ihr Modell geschrieben wurde. Wenn Sie beispielsweise PyTorch 1.9 verwenden, nutzen Sie die Softwareversion pytorch-1.9.

Die PyTorch-spezifischen TPU-Softwareversionen sind:

  • pytorch-2.0
  • pytorch-1.13
  • pytorch-1.12
  • pytorch-1.11
  • pytorch-1.10
  • pytorch-1.9
  • pytorch-1.8
  • pytorch-1.7
  • pytorch-1.6

  • pytorch-nightly

Wenn Sie einen TPU-Knoten erstellen, ist die neueste Version von PyTorch auf dem TPU-Knoten vorinstalliert.

JAX

Sie müssen JAX manuell auf Ihrer TPU-VM installieren, damit keine JAX-spezifische TPU-Softwareversion vorinstalliert ist. Sie können jede der für TensorFlow aufgeführten Softwareversionen verwenden.

Nächste Schritte

  • Weitere Informationen zur TPU-Architektur finden Sie auf der Seite Systemarchitektur.
  • Weitere Informationen zu den für Cloud TPU geeigneten Modellen finden Sie unter Verwendung von TPUs.