Cloud Tensor Processing Units (TPUs)

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 entstehenden 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.

Mit Cloud TPU können Sie Ihre ML-Arbeitslasten auf der TPU-Beschleunigerhardware von Google mit TensorFlow ausführen. Cloud TPU wurde für maximale Leistung und Flexibilität entwickelt, um Forscher, Entwickler und Unternehmen bei der Erstellung von TensorFlow-Computerclustern zu unterstützen, die CPUs, GPUs und TPUs nutzen können. Mithilfe von übergeordneten Tensorflow APIs können Sie Modelle auf der Cloud TPU-Hardware ausführen.

Vorteile von TPUs

Cloud TPU-Ressourcen beschleunigen die Leistung der linearen Algebraberechnung, die in Machine Learning-Anwendungen stark genutzt wird. TPUs minimieren die Zeit bis zur Genauigkeit, wenn Sie große, komplexe neuronale Netzwerkmodelle trainieren. Modelle, deren Training auf anderen Hardwareplattformen bisher Wochen in Anspruch nahm, können auf TPUs in Stunden konvergieren.

Verfügbarkeit

Cloud TPUs sind in den folgenden Zonen verfügbar:

USA

TPU-Typ (v2) TPU v2-Kerne Gesamter TPU-Arbeitsspeicher Region/Zone
v2–8 8 64 GiB us-central1-b
us-central1-c
us-central1-f
v2–32 32 256 GiB us-central1-a
v2-128 128 1 TiB us-central1-a
v2-256 256 2 TiB us-central1-a
v2-512 512 4 TiB us-central1-a
TPU-Typ (v3) TPU v3-Kerne Gesamter TPU-Arbeitsspeicher Verfügbare Zonen
v3–8 8 128 GiB us-central1-a
us-central1-b
us-central1-f

Europa

TPU-Typ (v2) TPU v2-Kerne Gesamter TPU-Arbeitsspeicher Region/Zone
v2–8 8 64 GiB europe-west4-a
v2–32 32 256 GiB europe-west4-a
v2-128 128 1 TiB europe-west4-a
v2-256 256 2 TiB europe-west4-a
v2-512 512 4 TiB europe-west4-a
TPU-Typ (v3) TPU v3-Kerne Gesamter TPU-Arbeitsspeicher Verfügbare Zonen
v3–8 8 128 GiB europe-west4-a
v3-32 32 512 GiB europe-west4-a
v3–64 64 1 TiB europe-west4-a
v3–128 128 2 TiB europe-west4-a
v3–256 256 4 TiB europe-west4-a
v3–512 512 8 TiB europe-west4-a
v3–1024 1.024 16 TiB europe-west4-a
v3–2048 2.048 32 TiB europe-west4-a

Asiatisch-pazifischer Raum

TPU-Typ (v2) TPU v2-Kerne Gesamter TPU-Arbeitsspeicher Region/Zone
v2–8 8 64 GiB asia-east1-c

Cloud TPU-Programmiermodell

Cloud TPUs sind sehr schnell bei der Durchführung von umfassenden Vektor- und Matrixberechnungen. Die Datenübertragung zwischen Cloud TPU und Hostspeicher ist im Vergleich zur Rechengeschwindigkeit langsam – die Geschwindigkeit des PCIe-Busses ist viel langsamer als die der Cloud TPU-Verbindung und des On-Chip-Speichers mit hoher Bandbreite (HBM). Dies bedeutet, dass die teilweise Kompilierung eines Modells, bei dem die Ausführung nach dem „Ping-Pong“-Prinzip zwischen Host und Gerät erfolgt, das Gerät sehr ineffizient nutzt, da es die meiste Zeit im Leerlauf ist und darauf wartet, dass Daten über den PCIe-Bus ankommen. Um dieses Problem zu beheben, wurde das Programmiermodell für Cloud TPU entwickelt, um einen Großteil des Trainings auf der TPU auszuführen – idealerweise die gesamte Trainingsschleife.

Im Folgenden sind einige herausragende Merkmale des von TPUEstimator implementierten Programmiermodells aufgeführt:

  • Alle Modellparameter werden in einem On-Chip-Speicher mit hoher Bandbreite gespeichert.
  • Die Kosten für das Starten von Berechnungen auf Cloud TPU werden durch Ausführen vieler Trainingsschritte in einer Schleife amortisiert.
  • Eingabetrainingsdaten werden in eine "Einspeisungswarteschlange" auf der Cloud TPU gestreamt. Ein Programm, das auf Cloud TPU ausgeführt wird, ruft während jedes Trainingsschritts Batches aus diesen Warteschlangen ab.
  • Der TensorFlow-Server, der auf dem Hostcomputer (der an das Cloud TPU-Gerät angeschlossenen CPU) ausgeführt wird, ruft Daten ab und verarbeitet sie vor dem "Einspeisen" in die Cloud TPU-Hardware.
  • Datenparallelität: Kerne auf einer Cloud TPU führen ein identisches Programm, das sich in ihrem jeweiligen HBM befindet, synchron aus. Am Ende jedes neuronalen Netzwerkschritts wird für alle Kerne eine Reduktionsoperation durchgeführt.

Verwendung von TPUs

Cloud TPUs sind für bestimmte Arbeitslasten optimiert. In einigen Situationen möchten Sie möglicherweise GPUs oder CPUs auf Compute Engine-Instanzen verwenden, um Ihre Arbeitslasten für maschinelles Lernen auszuführen. Im Allgemeinen können Sie basierend auf den folgenden Richtlinien entscheiden, welche Hardware für Ihre Arbeitslast am besten geeignet ist:

  • CPUs

  • GPUs

    • Modelle, für keine Quelle vorhanden oder deren Änderung zu aufwendig ist
    • Modelle mit einer erheblichen Anzahl von benutzerdefinierten TensorFlow-Operationen, die mindestens teilweise auf CPUs ausgeführt werden müssen
    • Modelle mit TensorFlow-Operationen, die nicht auf Cloud TPU verfügbar sind (siehe die Liste der verfügbaren TensorFlow-Operationen)
    • Mittlere bis große Modelle mit größeren effektiven Batchgrößen
  • TPUs

    • Modelle, die von Matrixberechnungen dominiert werden
    • Modelle ohne benutzerdefinierte TensorFlow-Operationen innerhalb der Haupttrainingsschleife
    • Modelle, die Wochen oder Monate lang trainiert werden
    • Größere und sehr große Modelle mit sehr großen effektiven Batchgrößen

Cloud TPUs sind für folgende Arbeitslasten nicht geeignet:

  • Lineare Algebraprogramme, die häufige Verzweigungen erfordern oder von Algebra elementweise dominiert werden. TPUs sind für eine schnelle, sperrige Matrixmultiplikation optimiert, sodass eine Arbeitslast, die nicht von einer Matrixmultiplikation dominiert wird, auf TPUs im Vergleich zu anderen Plattformen wahrscheinlich keine gute Leistung erzielt.
  • Arbeitslasten, die spärlich auf Arbeitsspeicher zugreifen, sind möglicherweise auf TPUs nicht verfügbar.
  • Arbeitslasten, die eine hochpräzise Arithmetik erfordern. Arithmetik mit doppelter Genauigkeit ist beispielsweise nicht für TPUs geeignet.
  • Neuronale Netzwerkarbeitslasten, die in C++ geschriebene benutzerdefinierte TensorFlow-Vorgänge enthalten. Insbesondere sind benutzerdefinierte Operationen im Text der Haupttrainingsschleife nicht für TPUs geeignet.

Arbeitslasten neuronaler Netzwerke müssen in der Lage sein, mehrere Iterationen der gesamten Trainingsschleife auf dem TPU auszuführen. Obwohl dies keine grundsätzliche Anforderung von TPUs selbst ist, ist dies eine der aktuellen Einschränkungen der TPU-Softwareumgebung, die für die Effizienz erforderlich ist.

Unterschiede zum herkömmlichen Training

Ein typischer TensorFlow-Trainingsgraph besteht aus mehreren überlappenden Teilgraphen, die eine Vielzahl von Funktionen bieten, darunter:

  • E/A-Operationen zum Lesen von Trainingsdaten
  • Eingabe-Vorverarbeitungsphasen, oft über Warteschlangen verbunden
  • Modellvariablen
  • Initialisierungscode für diese Variablen
  • Das Modell selbst
  • Verlustfunktionen
  • Gradient-Code (normalerweise automatisch generiert)
  • Zusammenfassungsoperationen für die Überwachung des Trainings
  • Speichern/Wiederherstellen von Operationen für die Prüfpunktausführung

In Cloud TPU werden TensorFlow-Programme vom XLA-Just-in-Time-Compiler kompiliert. Beim Trainieren in Cloud TPU kann nur der Code auf der Hardware kompiliert und ausgeführt werden, der den dichten Teilen der Modell-, Verlust- und Gradienten-Teilgraphen entspricht. Alle anderen Teile des TensorFlow-Programms werden auf den Hostcomputern (Cloud TPU-Server) im Rahmen einer regulären verteilten TensorFlow-Sitzung ausgeführt. Dies besteht in der Regel aus den E/A-Operationen, die Trainingsdaten, Vorverarbeitungscode (Beispiel: Decodieren von komprimierten Bildern, zufällige Stichprobenerfassung/Zuschneiden, Zusammenstellen von Trainings-Minibatches) und alle Wartungsteile des Diagramms wie das Speichern/Wiederherstellen von Prüfpunkten umfassen.

Best Practices für die Modellentwicklung

Ein einzelner Cloud TPU-Chip enthält zwei Kerne mit jeweils mehreren Matrixeinheiten (Matrix Units, MXUs), die Programme beschleunigen sollen, die von dichten Matrixmultiplikationen und -faltungen dominiert werden (siehe Hardwarearchitektur). Programme, bei denen ein wesentlicher Teil der Ausführungszeit mit der Durchführung von Matrixmultiplikationen verbracht wird, sind normalerweise gut für Cloud TPU geeignet. Ein Programm, dessen Berechnung von Nicht-Matrixoperationen wie Hinzufügen, Umformen oder Verketten dominiert wird, erreicht wahrscheinlich keine hohe MXU-Auslastung. Nachfolgend finden Sie einige Richtlinien zur Auswahl und zum Erstellen von Modellen, die für Cloud TPU geeignet sind.

Replikate

Ein einzelnes Cloud TPU-Gerät besteht aus vier Chips mit jeweils zwei TPU-Kernen. Daher sollte ein Programm zur effizienten Nutzung von Cloud TPU jeden der acht Kerne nutzen. TPUEstimator bietet einen Operator für Graphen zum Erstellen und Ausführen einer replizierten Berechnung. Jedes Replikat ist im Wesentlichen eine Kopie des Trainingsgraphs, der auf jedem Kern ausgeführt wird, und trainiert einen Minibatch, der 1/8 der gesamten Batchgröße enthält.

Layout

Der XLA-Compiler führt Codetransformationen durch, einschließlich einer Matrixmultiplikation in kleinere Blöcke, um Berechnungen auf der Matrixeinheit (MXU) effizient auszuführen. Die Struktur der MXU-Hardware, ein systolisches Array der Größe 128 x 128, und das Design des TPU-Speichersubsystems, das Dimensionen bevorzugt, die ein Vielfaches von 8 sind, werden vom XLA-Compiler für die Kacheleffizienz verwendet. Folglich sind bestimmte Layouts besser für das Kacheln geeignet, während andere eine Umformung erfordern, bevor sie gekachelt werden können. Umformungsoperationen sind auf der Cloud TPU häufig speichergebunden.

Formen

Der XLA-Compiler kompiliert zur genau richtigen Zeit einen TensorFlow-Graph für den ersten Batch. Wenn nachfolgende Stapel unterschiedliche Formen haben, funktioniert das Modell nicht. (Wenn der Graph bei jeder Änderung der Form neu kompiliert wird, ist dies zu langsam.) Daher ist jedes Modell, das Tensoren mit dynamischen Formen aufweist, die sich zur Laufzeit ändern, nicht gut für TPUs geeignet.

Padding

Ein Cloud TPU-Programm ist leistungsstark, wenn die Dichteberechnung einfach in Blöcke von 128 x 128 gekachelt werden kann. Wenn eine Matrixberechnung keine vollständige MXU belegen kann, füllt der Compiler Tensoren mit Nullen auf. Padding hat zwei Nachteile:

  • Tensoren, die mit Nullen aufgefüllt sind, lasten den TPU-Kern nicht voll aus.
  • Das Padding erhöht den für einen Tensor erforderlichen On-Chip-Arbeitsspeicher und kann im Extremfall zu einem Fehler aufgrund fehlenden Arbeitsspeichers führen.

Während das Padding bei Bedarf automatisch vom XLA-Compiler durchgeführt wird, kann der Umfang des Paddings mit dem Werkzeug op_profile ermittelt werden. Padding kann durch Auswahl von Tensordimensionen vermieden werden, die für TPUs gut geeignet sind.

Dimensionen

Die Wahl geeigneter Tensordimensionen hilft bei der Maximierung der Leistung der TPU-Hardware, insbesondere der MXU. Der XLA-Compiler versucht entweder die Batchgröße oder die Feature-Dimension zu verwenden, um die MXU maximal zu nutzen. Daher muss eine von diesen ein Vielfaches von 128 sein. Andernfalls füllt der Compiler eine von ihnen auf 128 auf. Idealerweise sollten sowohl die Batchgröße als auch die Feature-Dimensionen ein Vielfaches von 8 sein, wodurch eine hohe Leistung aus dem Speichersubsystem extrahiert werden kann.

Vorgänge

Siehe die Liste der verfügbaren TensorFlow-Operationen.

VPC Service controls-Integration

Mit Cloud TPU VPC Service Controls können Sie Sicherheitsbereiche für Ihre Cloud TPU-Ressourcen definieren und die Bewegung von Daten über die Perimetergrenze steuern. Weitere Informationen zu VPC Service Controls finden Sie in der Übersicht zu VPC Service Controls. Welche Einschränkungen sich bei Verwendung von Cloud TPU mit VPC Service Controls ergeben, erfahren Sie unter Unterstützte Produkte und Einschränkungen.

Edge TPU

Modelle für das maschinelle Lernen, die in der Cloud trainiert werden, müssen immer öfter Inferencing auf Edge-Geräten ausführen, d. h. auf Geräten, die am Rande des Internets der Dinge ausgeführt werden. Zu diesen Geräten gehören Sensoren und andere Smart-Home-Geräte, die Echtzeitdaten erfassen, intelligente Entscheidungen treffen und dann Maßnahmen ergreifen oder ihre Informationen an andere Geräte oder die Cloud weitergeben.

Da solche Geräte nur mit begrenzter Stromzufuhr betrieben werden können (einschließlich Akkuleistung), hat Google den Edge TPU-Coprozessor entwickelt, um ML-Inferencing auf Geräten mit geringer Leistung zu beschleunigen. Eine einzelne Edge-TPU kann 4 Billionen Vorgänge pro Sekunde ausführen (4 TOPS) und verbraucht nur 2 Watt Strom, Sie erhalten also 2 TOPS pro Watt. Beispielsweise kann die Edge TPU hochauflösende Mobile-Vision-Modelle wie MobileNet V2 mit fast 400 Bildern pro Sekunde und auf energieeffiziente Weise ausführen.

Dieser ML-Beschleuniger mit geringem Stromverbrauch erweitert Cloud TPU und Cloud IoT um eine komplette Infrastruktur (Cloud-to-Edge, Hardware und Software) und ermöglicht somit die Bereitstellung KI-basierter Lösungen.

Die Edge TPU ist für Ihre eigenen Prototyping- und Produktionsgeräte in verschiedenen Formfaktoren verfügbar, darunter ein Single-Board-Computer, ein System-on-Module, eine PCIe/M.2-Karte und ein SMD-Modul. Weitere Informationen zur Edge TPU und zu allen verfügbaren Produkten finden Sie unter coral.ai.

Nächste Schritte

  • TPU-Kurzanleitung lesen, um schnell mit der Verwendung von Cloud TPU zu starten
  • Eine der Cloud TPU-Anleitungen durcharbeiten, um das Ausführen allgemeiner ML-Arbeitslasten auf Cloud TPU-Ressourcen kennenzulernen