Systemarchitektur

Tensor Processing Units (TPUs) sind von Google entwickelte ML-Beschleuniger. Cloud TPU stellt TPUs als skalierbare GCP-Cloud-Ressource zur Verfügung. Sie können Arbeitslasten für maschinelles Lernen auf Cloud TPUs mit ML-Frameworks wie TensorFlow, Pytorch und JAX ausführen.

Die Matrix-Multiply-Einheit (MXU) besteht aus 128 x 128 Multiplikatoren/Akkumulatoren in einem systolischen Array. Die MXUs stellen den Großteil der Rechenleistung in einem TensorCore (TPU-Kern) bereit. Eine MXU kann in jedem Zyklus 16.000 Multiplikations- bzw. Akkumulationsvorgänge im Zahlenformat bfloat16 ausführen.

Der VPU wird für allgemeine Berechnungen wie Aktivierungen, Softmax usw. verwendet. Die Skalareinheit wird für die Ablaufsteuerung, die Berechnung der Speicheradresse und andere Wartungsvorgänge genutzt.

TPU-Versionen

Das genaue Layout einer TPU hängt von der TPU-Version ab, die Sie verwenden. Architekturdetails und Leistungsmerkmale von TPU v2 und v3 sind unter Domainspezifische Supercomputer für das Training von neuronalen Deep-Learning-Netzwerken verfügbar.

TPU v4

Die kleinste TPU v4-Konfiguration enthält vier TPU-Chips und 32 GiB HBM sowie 128 MiB gemeinsamen Speicher. Jeder TPU-Chip enthält zwei TensorCores. Jeder TensorCore hat vier MXUs, eine Vektoreinheit und eine Skalareinheit. Das folgende Diagramm zeigt einen TPU v4-Chip.

Image

TPU v3

Die kleinste TPU v3-Konfiguration enthält vier TPU-Chips und 32 GiB HBM. Jeder TPU-Chip enthält zwei TensorCores. Jeder TensorCore hat zwei MXUs, eine Vektoreinheit und eine Skalaeinheit. Das folgende Diagramm zeigt einen TPU v3-Chip.

Image

TPU v2

Die kleinste TPU v2-Konfiguration enthält vier TPU-Chips und 16 GiB HBM. Jeder TPU-Chip enthält zwei TensorCores. Jeder TensorCore hat eine MXU, eine Vektoreinheit und eine Skalaeinheit. Das folgende Diagramm zeigt einen TPU v2-Chip.

Image

Cloud TPU bietet die folgenden TPU-Konfigurationen:

  • Single-Board-TPU
  • TPU-Pod – eine Gruppe von TPU-Geräten, die über Hochgeschwindigkeitsverbindungen verbunden sind
  • TPU-Slice – eine Unterteilung eines TPU-Pods

Leistungsvorteile von TPU v4 gegenüber v3

Speichersystem:

  • v4 TPU-Chips haben einen einheitlichen HBM-Speicherbereich von 32 GiB über den gesamten Chip, was eine bessere Koordination der beiden On-Chip-TensorCores ermöglicht.
  • Verbesserte HBM-Leistung mit den neuesten Arbeitsspeicherstandards und Geschwindigkeiten.
  • Das DMA-Leistungsprofil mit nativer Unterstützung für leistungsstarkes Arbeiten mit 512 Milliarden Details wurde verbessert.

TensorCores:

  • Doppelt so viele MXUs und eine höhere Taktfrequenz mit 275 max. TFLOPS.
  • 2-fache Transpositions- und Per Perspektive-Bandbreite.
  • Zugriffsmodell für Speicherspeicher für Common Memory (Cmem).
  • Schnellere Latenz beim Laden der MXU und Unterstützung des 8-Bit-Modus für niedrigere Batchgrößen und verbesserte Inferenzlatenz

Inter-Chip-Interconnect:

6 Interconnect-Links pro Chip, um Netzwerktopologien mit kleineren Netzwerkdurchmessern zu ermöglichen.

Sonstiger:

  • x16 PCIE (gen3) Schnittstelle zum Hosten (direkte Verbindung)
  • Verbessertes Sicherheitsmodell.
  • Verbesserte Energieeffizienz

Leistungsvorteile von TPU v3 im Vergleich zu v2

Die größere Anzahl von FLOPS pro Kern und größere Speicherkapazität bei TPU v3-Konfigurationen können die Leistung von Modellen auf folgende Weise verbessern:

  • TPU v3-Konfigurationen bieten für rechengebundene Modelle erhebliche Leistungsvorteile pro Kern. Für speichergebundene Modelle kann im Vergleich zu TPU v2-Konfigurationen möglicherweise nicht dieselbe Leistungsverbesserung erzielt werden, wenn sie auch bei TPU v3-Konfigurationen speichergebunden sind.

  • Wenn Daten in TPU v2-Konfigurationen den Speicherplatz überschreiten, ist mit TPU v3 eine bessere Leistung möglich und es müssen weniger Zwischenwerte neu berechnet werden (Neuberechnen von Schreibergebnissen).

  • Mit TPU v3-Konfigurationen können neue Modelle mit Stapelgrößen ausgeführt werden, für die TPU v2-Konfigurationen nicht ausgereicht haben. Zum Beispiel lässt TPU v3 tiefere ResNets und größere Bilder mit RetinaNet zu.

Modelle, die auf TPU v2-Hardware nahezu eingabegebunden arbeiten ("Infeed"), da Trainingsschritte auf Eingaben warten müssen, arbeiten unter Umständen auch auf Cloud TPU v3-Hardware eingabegebunden. Mit dem Leitfaden zur Leistung von Pipelines können Sie Einspeisungsprobleme beheben.

TPU v4-Konfigurationen

Ein TPU v4 Pod besteht aus 4.096 Chips, die über konfigurierbare Hochgeschwindigkeitsverbindungen verbunden sind. Durch die flexible Netzwerkfunktion von TPU v4 können Sie die Chips auf mehrere Arten in einem unterschiedlich großen Bereich verbinden. Sie konfigurieren v4-TPUs mit AcceleratorConfig. Mit AcceleratorConfig können Sie über das Topologiefeld die Segmentgröße in Bezug auf Chips angeben.

Die TPU-v4-Topologie wird mit einem 3-Semikolon angegeben, das die Anzahl, die Form und die Verbindungen zwischen TPU-Chips beschreibt. Die folgenden Abbildungen zeigen einige gängige TPU v4-Topologien.

Image

Größere Segmente können aus einem oder mehreren 4 x 4 × großen Würfeln erstellt werden.

TPU-Slices einer bestimmten Anzahl von Chips können auf verschiedene Arten konfiguriert werden. Ein TPU-Slice mit dem AcceleratorType von v4-1024 kann jetzt beispielsweise so konfiguriert werden: 4x4x32, 4x8x16, 8x8x8. Eine TPU von v4-4096 bietet noch mehr Flexibilität: 4x4x128, 4x8x64, 4x16x32, 8x16x16, 8x16x16_twisted. Weitere Informationen finden Sie unter TPU-Typen und Topologien.

Konfigurationen für TPU v2 und v3

TPUs sind in folgenden Konfigurationen verfügbar:

  1. Einzelnes TPU-Board
  2. TPU-Pod
  3. TPU-Pod-Slice

Single-Board-TPU

Eine Single-Board-TPU-Konfiguration ist ein eigenständiges Board mit vier TPU-Chips (8 TensorCores), das keine Netzwerkverbindungen zu anderen TPU-Boards hat. Single-Board-TPUs sind nicht Teil einer TPU-Pod-Konfiguration und nehmen keinen Teil eines TPU-Pods für sich in Anspruch.

TPU-Pods und -Slices

In einem TPU-Pod- oder TPU-Pod-Slice sind TPU-Chips über eine Hochgeschwindigkeitsverbindung verbunden. Jeder TPU-Chip kommuniziert direkt mit den anderen Chips auf dem TPU-Gerät. Die TPU-Software verwaltet automatisch die Verteilung der Daten an jeden TPU-Kern in einem Pod oder Segment. Pod-Slices sind mit 32, 128, 512, 1.024 oder 2.048 Kernen verfügbar.

Cloud TPU-VM-Architekturen

TPUs können nur Matrixvorgänge ausführen. Daher ist jedes TPU-Board mit einem CPU-basierten Hostcomputer verbunden, um Vorgänge auszuführen, die auf der TPU nicht möglich sind. Die Hostcomputer sind für das Laden von Daten aus Cloud Storage, das Vorverarbeiten von Daten und das Senden von Daten an die TPU zuständig.

Image

In einem TPU-Pod gibt es für jedes TPU-Board einen TPU-Host.

Image

Die Art der Interaktion mit dem TPU-Host (und der TPU-Board) hängt von der verwendeten TPU-VM-Architektur ab: TPU-Knoten oder TPU-VMs.

TPU-Knoten

Die TPU-Knotenarchitektur besteht aus einer Nutzer-VM, die mit dem TPU-Host über gRPC kommuniziert. Bei Verwendung dieser Architektur können Sie nicht direkt auf den TPU-Host zugreifen. Dies kann die Fehlerbehebung für das Training und TPU-Fehler erschweren.

Image

TPU-VMs

Die TPU-VM-Architektur macht die Nutzer-VM weg und Sie können eine SSH-Verbindung direkt zu der VM herstellen, die mit dem TPU-Gerät verbunden ist. Sie haben Rootzugriff auf die VM, sodass Sie beliebigen Code ausführen können. Sie können auf Compiler- und Laufzeit-Fehlerbehebungslogs und Fehlermeldungen zugreifen.

Image

Unterstützte Frameworks

Frameworks wie JAX, PyTorch und TensorFlow greifen auf TPUs über eine gemeinsam genutzte Bibliothek namens libtpu zu, die auf jeder TPU-VM vorhanden ist. Diese Bibliothek enthält den XLA-Compiler, der zum Kompilieren von TPU-Programmen verwendet wird, die TPU-Software, die zum Ausführen kompilierter Programme verwendet wird, und den TPU-Treiber, der von der Laufzeit für den Zugriff auf die niedrige TPU verwendet wird.

Image

TensorFlow

TPU-VMs

Mit TPU-VMs kann Ihr Python-Code statt auf einer Nutzer-VM direkt auf dem TPU-Host ausgeführt werden.

Image

Weitere Informationen zu TensorFlow und Cloud TPU finden Sie unter TensorFlow-Modelle in Cloud TPU ausführen.

TPU-Knoten

Die Cloud TPU-Knotensystemarchitektur wurde ursprünglich für TensorFlow entwickelt. Auf die TPU-Hosts kann der Nutzer nicht zugreifen und keine monitorlose Kopie des TensorFlow-Servers ausführen. Die Hosts führen weder Python noch Nutzercode aus, der nicht als TensorFlow-Diagramm dargestellt wird. Nutzercode wird in einer separaten Nutzer-VM ausgeführt, die mit den TPU-Hosts über das gRPC-Netzwerk kommuniziert.

Image

PyTorch

TPU-VMs

Bei TPU-VMs wird der PyTorch-Code direkt auf den TPU-Hosts ausgeführt.

images

Weitere Informationen zu PyTorch und Cloud TPU finden Sie unter PyTorch-Modelle in Cloud TPU ausführen.

TPU-Knoten

PyTorch wird in der Cloud TPU-Knotenarchitektur mit einer Bibliothek namens XRT ausgeführt. Damit können XLA-Diagramme und Laufzeitanweisungen über TensorFlow-gRPC-Verbindungen gesendet und auf den TensorFlow-Servern ausgeführt werden. Für jeden TPU-Host ist eine Nutzer-VM erforderlich.

Image

JAX

TPU-VMs

Bei Verwendung von TPU-VMs werden keine Nutzer-VMs benötigt, da Sie damit Ihren Code direkt auf den TPU-Hosts ausführen können.

Image

Weitere Informationen zum Ausführen von JAX auf Cloud TPU finden Sie unter JAX-Kurzanleitung.

TPU-Knoten

JAX auf Cloud TPU-Knoten wird wie mit PyTorch ausgeführt, da für jede Host-VM eine separate Nutzer-VM erforderlich ist.

Image

Weitere Informationen