Systemarchitektur

In diesem Dokument wird die Architektur der Hardware- und Softwarekomponenten des Cloud TPU-Systems beschrieben.

Tensor Processing Units (TPUs) sind von Google speziell entwickelte anwendungsspezifische integrierte Schaltungen (Application-Specific Integrated Circuits, ASICs), die verwendet werden, um die beim maschinellen Lernen (ML) ausgeführten Arbeitslasten zu beschleunigen. TPUs wurden von Grund auf neu entwickelt und profitieren von der langjährigen Erfahrung und Führungsposition von Google im Bereich des maschinellen Lernens.

Ein einzelnes TPU-Board enthält vier TPU-Chips. Jeder Chip enthält zwei TPU-Kerne. Die auf einem TPU-Kern verfügbaren Ressourcen variieren je nach Version. Jeder TPU-Kern hat Skalar-, Vektor- und Matrixmultiplikationseinheiten (MXUs). Die MXUs liefern den Großteil der Rechenleistung in einem TPU-Chip. Jede MXU kann in jedem Zyklus 16.000 Multiplikations- bzw. Akkumulationsoperationen mit jedem geringeren bfloat16-Genauigkeit ausführen. bfloat16 ist eine 16-Bit-Gleitkommadarstellung, die eine bessere Trainings- und Modellgenauigkeit als die Halbeinstufung von IEEE bietet. Jeder der Kerne auf einem TPU-Board kann Nutzerberechnungen unabhängig ausführen. Durch Verbindungen mit hoher Bandbreite können die Chips direkt miteinander kommunizieren. Detailliertere technische Informationen finden Sie im Artikel A Domain-spezifischer Supercomputer für das Training Deep Neural Networks.

TPUs wurden so entwickelt, dass sie auf einen TPU-Pod skaliert werden. Ein TPU-Pod ist ein Supercomputer mit bis zu 2.048 TPU-Kernen, mit dem Sie die Verarbeitungslast auf mehrere TPU-Boards verteilen können. In einer sogenannten TPU-Pod-Konfiguration werden durch dedizierte Hochgeschwindigkeits-Netzwerkschnittstellen mehrere TPU-Geräte miteinander verbunden, um für eine größere Anzahl von TPU-Kernen und einen größeren TPU-Speicherpool für Ihre beim maschinellen Lernen.

Jedes TPU-Board ist mit einer leistungsstarken CPU-basierten Hostmaschine verbunden, beispielsweise zum Laden und Vorverarbeiten von Daten, um die TPUs zu leiten.

Cloud TPU

Cloud TPU ist ein Dienst, der Ihnen Zugriff auf TPUs über die Google Cloud Platform (GCP) gewährt. Sie können Cloud TPU verwenden, um ML-Arbeitslasten auf der TPU-Beschleunigerhardware von Google auszuführen. Cloud TPU wurde für maximale Leistung und Flexibilität entwickelt, um Forscher, Entwickler und Unternehmen bei der Schulung von ML-Arbeitslasten zu unterstützen.

Mit der Cloud TPU API können Sie die TPU-Verwaltung für Ihre TPUs automatisieren. Infolgedessen kann leicht auf große Computing-Cluster hochskaliert, Arbeitslasten ausgeführt und diese Cluster nach Abschluss der Arbeitslasten wieder herunterskaliert werden. Der in die Chips integrierte Hardwaresupport führt zu einer praktisch linearen Leistungsskalierung für eine große Bandbreite an Deep-Learning-Arbeitslasten.

TPU-Konfigurationen

Cloud TPU bietet Zugriff auf verschiedene TPU-Konfigurationen:

  • Einen TPU-Pod
  • TPU-Slice
  • TPU-Board

TPU-Pods

In einem TPU-Pod sind alle TPU-Chips in einem TPU-Pod über eine Hochgeschwindigkeitsverbindung direkt miteinander verbunden, wodurch die Kommunikationsverzögerungen über die CPU-Hosts übersprungen werden. Die Chips sind in einem 2-D-Bohr verbunden, wobei jeder Kontakt direkt mit vier Nachbarn kommuniziert. Diese Architektur führt zu besonders hoher Leistung bei gängigen Kommunikationsmustern in ML-Arbeitslasten wie All-Reduce. Die Architekturdetails und die Leistungsmerkmale von TPU v2 und v3 sind in der folgenden Tabelle aufgeführt. Weitere Informationen finden Sie unter A Domain Special Supercomputer for Training Deep Neural Networks (A [Domain-spezifischer Supercomputer für das Training Deep Neural Networks).

Feature TPU v2 TPU v3
Netzwerk-Links x Gbit/s/Chip 4 x 496 4 x 656
Geteilte Bandbreite Terabits/Vollem Pod 15.9 42

TPU-Slices

Ein TPU-Slice ist ein Teil eines TPU-Pods. Wenn Sie die Ressourcen eines ganzen Pods nicht benötigen, können Sie auch einen Teil eines Pods verwenden. Es gibt eine Reihe von verschiedenen Slice-Konfigurationen. Weitere Informationen finden Sie im Abschnitt "Cloud TPU-Preise" in Cloud TPU.

Einzel-TPU-Board

Eine Einzelkern-TPU-Konfiguration ist ein eigenständiges Board mit vier TPU-Chips (8 TPU-Kernen), ohne Netzwerkverbindungen zu anderen TPU-Boards. Einzelboard-TPUs sind nicht Teil einer TPU-Pod-Konfiguration und nehmen keine Teilbereiche von TPU-Pods für sich in Anspruch. Auf der Seite "TPU-Typen" sehen Sie, welche Single-Board-TPU-Konfigurationen verfügbar sind.

TPU-Versionen

Mit der TPU-Version werden die Architektur für jeden TPU-Kern, die Menge des HBM (High Bandwidth Memory, Speicher mit hoher Bandbreite) für jeden TPU-Kern, die Verbindungen zwischen den Kernen auf jedem TPU-Board und die für {101 verfügbaren Netzwerkschnittstellen definiert. }Geräteübergreifende Kommunikation. Die verfügbaren TPU-Versionen sind v1 und v2.

TPU v2

Ein TPU v2-Board enthält vier TPU-Chips mit jeweils zwei Kernen. Es gibt 8 GiB HBM für jeden TPU-Kern und eine MXU pro Kern. Ein TPU v2 Pod hat bis zu 512 TPU-Kerne und 4 TiB Arbeitsspeicher.

Bild

TPU v3

Ein TPU v3-Board enthält vier TPU-Chips mit jeweils zwei Kernen. Es gibt 16 GiB HBM für jeden TPU-Kern und zwei MXUs für jeden Kern. Ein TPU v3-Pod hat bis zu 2.048 TPU-Kerne und 32 TiB Arbeitsspeicher.

Bild

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, werden unter Umständen auch auf Cloud TPU v3-Hardware eingabegebunden arbeiten. Mit dem Leitfaden zur Leistung von Pipelines können Sie Einspeisungsprobleme beheben.

Cloud TPU-VM-Architektur

Jedes TPU-Board ist physisch mit einer Hostmaschine (TPU-Host) verbunden.

Bild

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

Bild

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

TPU-Knoten

TPU-Knoten sind das ursprüngliche TPU-Erlebnis. Sie benötigen eine zusätzliche Nutzer-VM, die über gRPC mit dem TPU-Host kommuniziert. Es gibt keinen direkten Zugriff auf den TPU-Host.

Bild

TPU-VMs

Wenn Sie TPU-VMs verwenden, stellen Sie eine SSH-Verbindung zu einer Google Compute Engine-VM her, die auf dem TPU-Host ausgeführt wird. Sie erhalten Root-Zugriff auf die Maschine und können beliebigen Code ausführen. Sie können direkt über den TPU-Compiler und die Laufzeit auf Debug-Logs und Fehlermeldungen zugreifen. TPU-VMs unterstützen neue Anwendungsfälle, die mit TPU-Knoten nicht möglich sind. Sie können beispielsweise benutzerdefinierte Operationen in der Eingabepipeline ausführen und lokalen Speicher verwenden.

Bild

Da keine Nutzer-VM vorhanden ist, benötigen Sie kein Netzwerk, eine Virtual Private Cloud oder eine Firewall zwischen Ihrem Code und der TPU-VM, wodurch die Leistung Ihrer Eingabepipeline verbessert wird. Darüber hinaus sind TPU-VMs günstiger, weil Sie nicht für Nutzer-VMs bezahlen müssen.

Unterstützte Frameworks

Frameworks wie JAX, PyTorch und TensorFlow greifen über eine gemeinsam genutzte Bibliothek mit dem Namen libtpu auf jede TPU-VM zu. Diese Bibliothek enthält das XLA-Compiler, das zum Kompilieren von TPU-Programmen verwendet wird, die TPU-Laufzeit, die zum Ausführen von kompilierten Programmen verwendet wird, und den TPU-Treiber, der von der Laufzeit für den niedrigen Zugriff auf die TPU verwendet wird.

Bild

TensorFlow

TPU-VMs

Mit TPU-VMs kann Ihr Python-Code anstelle Ihres Python-Codes, der auf einer Nutzer-VM ausgeführt wird, direkt auf dem TPU-Host ausgeführt werden.

Bild

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 und das verteilte Programmiermodell erstellt. Die TPU-Hosts sind für den Nutzer nicht zugänglich und führen nur eine monitorlose Kopie eines TensorFlow-Servers aus. Sie führen Python oder Nutzercode nicht aus, der als TensorFlow-Grafik dargestellt wird. Nutzercode wird in einer separaten Remote-VM ausgeführt, die mit den TPU-Hosts über das Netzwerk kommuniziert.

Bild

PyTorch

TPU-VMs

Mit TPU-VMs wird Ihr 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 mithilfe der Bibliothek 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.

Bild

JAX

TPU-VMs

Mit TPU-VMs sind keine Nutzer-VMs erforderlich, da Sie Ihren Code direkt auf den TPU-Hosts ausführen können.

Bild

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

TPU-Knoten

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

Bild

Nächste Schritte