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 bei der Beschleunigung von ML-Arbeitslasten verwendet werden. TPUs wurden von Grund auf mit dem Vorteil der langjährigen Erfahrung und der führenden Rolle beim maschinellen Lernen von Google entwickelt.

Eine einzelne TPU-Karte 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 stellen den Großteil der Rechenleistung in einem TPU-Chip bereit. Jede MXU kann in jedem Zyklus 16.000-Vorgänge mit Multiplikation akkumulieren und dabei die Genauigkeit von bfloat16 reduzieren. bfloat16 ist eine 16-Bit-Gleitkommadarstellung, die eine bessere Trainings- und Modellgenauigkeit als die IEEE-Darstellung mit halber Genauigkeit bietet. Jeder der Kerne auf einer TPU-Platine kann Nutzerberechnungen unabhängig ausführen. Interconnect-Verbindungen mit hoher Bandbreite ermöglichen die direkte Kommunikation der Chips. Detailliertere technische Informationen finden Sie unter Ein domainspezifischer Supercomputer zum Trainieren von neuronalen Trainingsnetzwerken.

TPUs wurden für die Hochskalierung auf einen TPU-Pod entwickelt. Ein TPU-Pod ist ein Supercomputer mit bis zu 2.048 TPU-Kernen, sodass Sie die Verarbeitungslast auf mehrere TPU-Boards verteilen können. In einer TPU-Pod-Konfiguration verbinden dedizierte Hochgeschwindigkeits-Netzwerkschnittstellen mehrere TPU-Geräte miteinander, um eine größere Anzahl von TPU-Kernen und einen größeren TPU-Speicherpool für Ihre ML-Arbeitslasten

Jedes TPU-Board ist mit einer leistungsstarken CPU-basierten Hostmaschine für Dinge wie das Laden und Vorverarbeiten von Daten für die TPUs verbunden.

Cloud TPU

Cloud TPU ist ein Dienst, der Ihnen Zugriff auf TPUs über die Google Cloud Platform (GCP) bietet. Sie können Cloud TPU verwenden, um Arbeitslasten für maschinelles Lernen auf der TPU-Beschleunigerhardware von Google auszuführen. Cloud TPU wurde für maximale Leistung und Flexibilität entwickelt, damit Forscher, Entwickler und Unternehmen ML-Arbeitslasten trainieren können.

Mit der Cloud TPU API können Sie die TPU-Verwaltung für Ihre TPUs automatisieren. Daher ist es einfach, hoch skalierbare Cluster zu erstellen, Arbeitslasten auszuführen und sie wieder herunterzuskalieren, wenn Ihre Arbeitslasten abgeschlossen sind. Die in die Chips integrierte Hardwareunterstützung ermöglicht eine effektive lineare Leistungsskalierung für eine Vielzahl von Deep-Learning-Arbeitslasten.

TPU-Konfigurationen

Cloud TPU bietet Zugriff auf verschiedene TPU-Konfigurationen:

  • TPU-Pod
  • Eine TPU-Slice
  • TPU-Board

TPU-Pods

In einem TPU-Pod sind alle TPU-Chips in einem TPU-Pod über eine Hochgeschwindigkeitsverbindung direkt miteinander verbunden, die die Kommunikationsverzögerungen durch die CPU-Hosts überspringt. Die Chips sind in einem 2D-Torus miteinander verbunden, wobei jeder Chip direkt mit vier Nachbarn kommuniziert. Diese Architektur führt zu einer insbesondere hohen Leistung bei gängigen Kommunikationsmustern in ML-Arbeitslasten wie Reduce. Architekturdetails und Leistungsmerkmale von TPU v2 und v3 sind in der folgenden Tabelle aufgeführt. Weitere Informationen finden Sie unter A Domain Specific Supercomputer for 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 gesamten Pods nicht benötigen, können Sie einen Teil eines Pods verwenden. Es gibt eine Reihe von verschiedenen Slice-Konfigurationen, die Sie im Abschnitt zu Cloud TPU-Preisen in der Cloud TPU finden.

Einzelnes TPU-Board

Eine Einzelboard-TPU-Konfiguration ist ein eigenständiges Board mit 4 TPU-Chips (8 TPU-Kernen) ohne Netzwerkverbindungen zu anderen TPU-Boards. TPUs mit einem Board sind nicht Teil einer TPU-Pod-Konfiguration und belegen keinen Teil eines TPU-Pods. Auf der Seite zu den TPU-Typen erfahren Sie, welche TPU-Konfigurationen für einzelne Boards verfügbar sind.

TPU-Versionen

Die TPU-Version definiert die Architektur für jeden TPU-Kern, den Umfang des High-Bandwidth-Arbeitsspeichers (HBM) für jeden TPU-Kern, die Interconnect-Verbindungen zwischen den Kernen auf den einzelnen TPU-Boards und die für {101 verfügbaren Netzwerkschnittstellen }zwischen den einzelnen Geräten kommunizieren. Die verfügbaren TPU-Versionen sind v2 und v3.

TPU v2

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

Image

TPU v3

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

Image

Leistungsvorteile von TPU v3 im Vergleich zu Version 2

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. Bei speichergebundenen Modellen in TPU v2-Konfigurationen kann diese Leistungssteigerung möglicherweise nicht erreicht werden, wenn sie auch in TPU v3-Konfigurationen speichergebunden sind.

  • In Fällen, in denen Daten in TPU v2-Konfigurationen nicht in den Speicher passen, kann TPU v3 die Leistung verbessern und Zwischenwerte neu berechnen (Re-Materialisierung).

  • Mit TPU v3-Konfigurationen können neue Modelle mit Stapelgrößen ausgeführt werden, für die TPU v2-Konfigurationen nicht ausgereicht haben. TPU v3 kann beispielsweise tiefere ResNets und größere Bilder mit RetinaNet zulassen.

Modelle, die auf TPU v2 fast eingabegebunden sind ("Infeed"), da Trainingsschritte auf Eingaben warten müssen, können auch mit Cloud TPU v3 eingabegebunden sein. Mit dem Pipeline-Leistungsleitfaden können Sie Einspeisungsprobleme beheben.

Cloud TPU-VM-Architekturen

Jedes TPU-Board ist physisch mit einem Hostcomputer (TPU-Host) verbunden.

Image

In einem TPU-Pod gibt es für jede TPU-Platine einen TPU-Host.

Image

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

TPU-Knoten

TPU-Knoten sind die ursprüngliche TPU-Oberfläche. 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.

Image

TPU-VMs

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

Image

Da keine Nutzer-VM vorhanden ist, sind kein Netzwerk, keine Virtual Private Cloud und keine Firewall zwischen Ihrem Code und der TPU-VM erforderlich, um die Leistung Ihrer Eingabepipeline zu verbessern. TPU-VMs sind außerdem günstiger, da Sie nicht für Nutzer-VMs bezahlen müssen.

Unterstützte Frameworks

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

Image

TensorFlow

TPU-VMs

Mit TPU-VMs kann anstelle des Python-Codes, der auf einer Nutzer-VM ausgeführt wird, 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 Systemarchitektur des Cloud TPU-Knotens wurde ursprünglich für TensorFlow und dessen verteiltes Programmiermodell entwickelt. 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 weder Python noch Nutzercode aus, der nicht als TensorFlow-Grafik dargestellt ist. Nutzercode wird auf einer separaten Remote-VM ausgeführt, die über das Netzwerk mit den TPU-Hosts kommuniziert.

Image

PyTorch

TPU-VMs

Bei 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 auf Cloud TPU ausführen.

TPU-Knoten

PyTorch wird in der Cloud TPU-Knotenarchitektur mit einer Bibliothek namens XRT ausgeführt, die XLA-Diagramme und Laufzeitanweisungen über TensorFlow-gRPC-Verbindungen sendet und auf den TensorFlow-Servern ausführt. Für jeden TPU-Host ist eine Nutzer-VM erforderlich.

Image

Jax

TPU-VMs

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

Image

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

TPU-Knoten

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

Image

Nächste Schritte