TPU-Architektur

Tensor Processing Units (TPUs) sind anwendungsspezifische integrierte Schaltungen (Application-Specific Integrated Circuits, ASICs), die von Google entwickelt wurden, um die beim maschinellen Lernen entstehenden Arbeitslasten zu beschleunigen. Cloud TPU ist ein Google Cloud Dienst, mit dem TPUs als skalierbare Ressource zur Verfügung gestellt werden.

TPUs sind für die schnelle Ausführung von Matrixoperationen ausgelegt und eignen sich daher ideal für Arbeitslasten für maschinelles Lernen. Sie können Arbeitslasten für maschinelles Lernen auf TPUs mit Frameworks wie PyTorch und JAX ausführen.

Wie funktionieren TPUs?

Damit Sie verstehen, wie TPUs funktionieren, sollten Sie wissen, wie andere Beschleuniger die Rechenaufgaben beim Trainieren von ML-Modellen bewältigen.

Funktionsweise einer CPU

Eine CPU ist ein Universalprozessor, der auf der Von-Neumann-Architektur basiert. Das bedeutet, dass eine CPU mit Software und Speicher arbeitet, wie hier gezeigt:

Abbildung zur Funktionsweise einer CPU

Der größte Vorteil von CPUs ist ihre Flexibilität. Sie können jede Art von Software auf einer CPU für viele verschiedene Arten von Anwendungen laden. Sie können beispielsweise eine CPU auf einem PC für die Textverarbeitung verwenden, Raketentriebwerke steuern, Banktransaktionen tätigen oder Bilder mit einem neuronalen Netzwerk klassifizieren.

Eine CPU lädt Werte aus dem Arbeitsspeicher, führt eine Berechnung der Werte durch und speichert das Ergebnis jeder Berechnung wieder im Arbeitsspeicher. Der Arbeitsspeicherzugriff ist im Vergleich zur Berechnungsgeschwindigkeit langsam und kann den Gesamtdurchsatz von CPUs beeinträchtigen. Dies wird oft als Von-Neumann-Engpass bezeichnet.

Funktionsweise einer GPU

GPUs bieten Tausende arithmetisch-logische Einheiten (Arithmetic Logic Units, ALUs) in einem einzigen Prozessor, um einen höheren Durchsatz zu erzielen. Eine moderne GPU enthält in der Regel zwischen 2.500 und 5.000 ALUs. Die große Anzahl von Prozessoren bedeutet, dass sie Tausende von Multiplikationen und Additionen gleichzeitig ausführen kann.

Abbildung zur Funktionsweise einer GPU

Eine GPU-Architektur eignet sich gut für Anwendungen mit massiver Parallelität, z. B. Matrixvorgänge in einem neuronalen Netz. Im Vergleich zu einer CPU liefert eine GPU für eine typische Deep-Learning-Trainingsarbeitslast einen um Größenordnungen höheren Durchsatz.

Die GPU ist jedoch immer noch ein Universalprozessor, der viele verschiedene Anwendungen und unterschiedliche Software unterstützen muss. Daher haben GPUs das gleiche Problem wie CPUs. Für jede Berechnung in den Tausenden von ALUs muss eine GPU auf Register oder gemeinsam genutzten Arbeitsspeicher zugreifen, um Operanden zu lesen und Zwischenergebnisse von Berechnungen zu speichern.

Funktionsweise einer TPU

Google hat Cloud TPUs als Matrixprozessoren konzipiert, die auf Arbeitslasten für neuronale Netze spezialisiert sind. TPUs können keine Textverarbeitungsprogramme ausführen, keine Raketentriebwerke steuern und keine Banktransaktionen tätigen. Sie können jedoch mit hoher Geschwindigkeit umfangreiche Matrixvorgänge verarbeiten, die in neuronalen Netzwerken verwendet werden.

Die Hauptaufgabe für TPUs ist die Matrixverarbeitung, bei der es sich um eine Kombination von Multiplikations- und Akkumulationsvorgängen handelt. TPUs enthalten Tausende von Multiplikationsakkumulatoren, die direkt miteinander verbunden sind, um eine große physische Matrix zu bilden. Dies wird als systolische Arrayarchitektur bezeichnet. Cloud TPU v3 enthält zwei systolische Arrays von 128 x 128 ALUs auf einem einzelnen Prozessor.

Der TPU-Host streamt Daten in eine Einspeisewarteschlange. Die TPU lädt Daten aus der Einspeisewarteschlange und speichert sie im HBM-Arbeitsspeicher. Wenn die Berechnung abgeschlossen ist, lädt die TPU die Ergebnisse in die Ausspeisewarteschlange. Der TPU-Host liest dann die Ergebnisse aus der Ausspeisewarteschlange und speichert sie im Arbeitsspeicher des Hosts.

Zur Ausführung der Matrixvorgänge lädt die TPU die Parameter aus dem HBM-Arbeitsspeicher in die Matrixmultiplikationseinheit (MXU).

Abbildung dazu, wie eine TPU Parameter aus dem Speicher lädt

Dann lädt die TPU die Daten aus dem HBM-Speicher. Wenn eine Multiplikation ausgeführt wird, wird das Ergebnis an den nächsten Multiplikations-Akkumulator weitergeleitet. Die Ausgabe ist die Summe aller Multiplikationsergebnisse zwischen den Daten und Parametern. Während des Prozesses der Matrixmultiplikation ist kein Speicherzugriff erforderlich.

Abbildung dazu, wie eine TPU Daten aus dem Speicher lädt

Infolgedessen können TPUs bei Berechnungen in neuronalen Netzen einen hohen rechnerischen Durchsatz erzielen.

TPU-Systemarchitektur

In den folgenden Abschnitten werden die wichtigsten Konzepte eines TPU-Systems beschrieben. Weitere Informationen zu gängigen Begriffen aus dem Bereich maschinelles Lernen finden Sie im Glossar zu maschinellem Lernen.

Wenn Sie Cloud TPU noch nicht kennen, lesen Sie den Einstiegsleitfaden für TPUs.

TPU-Chip

Ein TPU-Chip enthält einen oder mehrere TensorCores. Die Anzahl der TensorCores hängt von der Version des TPU-Chips ab. Jeder TensorCore besteht aus einer oder mehreren Matrixmultiplikationseinheiten (MXUs), einer Vektoreinheit und einer Skalareinheit. Weitere Informationen zu TensorCores finden Sie unter A Domain-Specific Supercomputer for Training Deep Neural Networks.

Eine MXU besteht aus 256 x 256 (TPU v6e) oder 128 x 128 (TPU-Versionen vor v6e) Multiplikatoren/Akkumulatoren in einem systolischen Array. MXUs stellen den Großteil der Rechenleistung in einem TensorCore bereit. Jede MXU kann in jedem Zyklus 16.000 Multiplikations- bzw. Akkumulationsoperationen ausführen. Alle Multiplikationen nehmen bfloat16-Eingabewerte an, aber alle Akkumulationen werden im FP32-Zahlenformat ausgeführt.

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

TPU-Pod

Ein TPU-Pod ist eine zusammenhängende Gruppe von TPUs, die über ein spezielles Netzwerk gruppiert sind. Die Anzahl der TPU-Chips in einem TPU-Pod hängt von der TPU-Version ab.

Slice

Ein Slice besteht aus einer Sammlung von Chips, die sich alle im selben TPU-Pod befinden und über Hochgeschwindigkeits-Inter-Chip-Interconnects (ICI) verbunden sind. Slices werden je nach TPU-Version in Chips oder TensorCores angegeben.

Die Chipform und die Chiptopologie beziehen sich ebenfalls auf die Form der Slices.

Mehrere Slices im Vergleich zu einzelnen Slices

Multislice ist eine Gruppe von Slices, die die TPU-Konnektivität über die Inter-Chip-Interconnect-Verbindungen (ICI) hinaus erweitert und das Rechenzentrumsnetzwerk (DCN) für die Übertragung von Daten über ein Slice hinaus nutzt. Die Daten innerhalb der einzelnen Zeitabschnitte werden weiterhin von ICI übertragen. Mit dieser hybriden Verbindung ermöglicht Multislice Parallelität über Slices hinweg und Sie können für einen einzelnen Job mehr TPU-Kerne verwenden, als in einem einzelnen Slice untergebracht werden können.

Mit TPUs können Jobs entweder auf einem einzelnen oder auf mehreren Slices ausgeführt werden. Weitere Informationen finden Sie unter Multislice-Einführung.

TPU-Kubus

Eine 4x4x4-Topologie miteinander verbundener TPU-Chips. Dies gilt nur für 3D-Topologien (ab TPU v4).

SparseCore

SparseCores sind Dataflow-Prozessoren, die Modelle beschleunigen, die auf Einbettungen in Empfehlungsmodellen basieren. V5p enthält vier SparseCores pro Chip und V6e zwei SparseCores pro Chip.

Cloud TPU-Resilienz bei ICI

Die ICI-Resilienz trägt dazu bei, die Ausfallsicherheit optischer Verbindungen und optischer Schalter (Optical Circuit Switches, OCS) zu verbessern, die TPUs zwischen Kubussen verbinden. ICI-Verbindungen innerhalb eines Cubes verwenden Kupferverbindungen, die nicht betroffen sind. Durch die ICI-Ausfallsicherheit können ICI-Verbindungen um OCS- und optische ICI-Fehler herumgeleitet werden. Dadurch wird die Planungsverfügbarkeit von TPU-Scheiben verbessert, was jedoch zu einer vorübergehenden Beeinträchtigung der ICI-Leistung führt.

Bei Cloud TPU v4 und v5p ist die ICI-Resilienz standardmäßig für Segmente mit einer Größe von einem Würfel oder mehr aktiviert, z. B.:

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

TPU-Versionen

Die genaue Architektur eines TPU-Chips hängt von der verwendeten TPU-Version ab. Jede TPU-Version unterstützt außerdem unterschiedliche Slab-Größen und -Konfigurationen. Weitere Informationen zur Systemarchitektur und zu unterstützten Konfigurationen finden Sie auf den folgenden Seiten:

TPU-Cloud-Architektur

Google Cloud stellt TPUs als Rechenressourcen über TPU-VMs zur Verfügung. Sie können TPU-VMs direkt für Ihre Arbeitslasten oder über die Google Kubernetes Engine oder Vertex AI verwenden. In den folgenden Abschnitten werden die wichtigsten Komponenten der TPU-Cloud-Architektur beschrieben.

TPU-VM-Architektur

Mit der TPU-VM-Architektur können Sie über SSH direkt eine Verbindung zur VM herstellen, die physisch mit dem TPU-Gerät verbunden ist. Eine TPU-VM, auch als Worker bezeichnet, ist eine virtuelle Maschine mit Linux, die Zugriff auf die zugrunde liegenden TPUs hat. Sie haben Root-Zugriff auf die VM und können so beliebigen Code ausführen. Sie haben die Möglichkeit, auf Compiler- und Laufzeit-Debug-Logs sowie auf Fehlermeldungen zuzugreifen.

TPU-VM-Architektur

Einzelner Host, mehrere Hosts und untergeordneter Host

Ein TPU-Host ist eine VM, die auf einem physischen Computer ausgeführt wird, der mit TPU-Hardware verbunden ist. TPU-Arbeitslasten können einen oder mehrere Hosts verwenden.

Eine Arbeitslast mit einem einzelnen Host ist auf eine TPU-VM beschränkt. Bei einer Arbeitslast mit mehreren Hosts wird das Training auf mehrere TPU-VMs verteilt. Eine Subhost-Arbeitslast nutzt nicht alle Chips auf einer TPU-VM.

TPU-Knotenarchitektur (eingestellt)

Die TPU-Knotenarchitektur besteht aus einer Nutzer-VM, die über gRPC mit dem TPU-Host kommuniziert. Bei dieser Architektur können Sie nicht direkt auf den TPU-Host zugreifen, was das Debuggen von Trainings- und TPU-Fehlern erschwert.

TPU-Knotenarchitektur

Von der TPU-Knoten- zur TPU-VM-Architektur wechseln

Wenn Sie TPUs mit der TPU-Knotenarchitektur verwenden, können Sie sie mit den folgenden Schritten ermitteln, löschen und als TPU-VMs neu bereitstellen.

  1. Rufen Sie die Seite „TPUs“ auf:

    TPUs aufrufen

    Suchen Sie unter der Überschrift Architektur nach Ihrer TPU und ihrer Architektur. Wenn die Architektur „TPU-VM“ lautet, müssen Sie nichts weiter unternehmen. Wenn die Architektur „TPU-Knoten“ lautet, müssen Sie die TPU löschen und neu bereitstellen.

  2. Löschen Sie die TPU und stellen Sie sie neu bereit.

    Eine Anleitung zum Löschen und Neubereitstellen von TPUs finden Sie unter TPUs verwalten.

Nächste Schritte