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_NUMBER
p-$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.
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.
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.
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.
Durch das Verdrehen dieser Topologie erhalten wir eine vollständig symmetrische 4 × 2-Twisted-Torus-Topologie:
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.