Suchen

Definition Was ist GPipe?

| Autor / Redakteur: Dipl.-Ing. (FH) Stefan Luber / Nico Litzel

GPipe ist eine quelloffene Open-Source-Bibliothek, mit der sich große neuronale Netzwerkmodelle effizient und mit hoher Leistung trainieren lassen. Die Bibliothek ist von Google für GPUs und TPUs entwickelt und nutzt das Prinzip der sogenannten Pipeline-Parallelisierung, um die Trainingsleistung zu verbessern.

Firmen zum Thema

(Bild: © aga7ta - stock.adobe.com)

Bei GPipe handelt es sich um eine von Google entwickelte Bibliothek, mit der sich große neuronale Netzwerkmodelle (Deep Neural Networks – DNNs) effizient trainieren lassen. Die Bibliothek ist als Teil des TensorFlow-Frameworks Lingvo unter Apache Lizenz 2.0 quelloffen verfügbar. GPipe verwendete TPUs (Tensor Processing Units) oder GPUs (Graphics Processing Units) zur Durchführung der Berechnungen. Zum Einsatz kommen synchrone SGD-Algorithmen (Stochastic Gradient Descent) und das Prinzip der sogenannten Pipeline-Parallelisierung.

Nutzbar ist die Bibliothek für alle Deep Neural Networks, die aus mehreren sequenziellen Layern bestehen. Für das Training großer Modelle lassen sich dank GPipe mehr Beschleuniger einsetzen, ohne Hyperparameter anpassen zu müssen. Verfügbar ist GPipe über GitHub.

Motivation für die Entwicklung von GPipe

Um in Anwendungen der Künstlichen Intelligenz (KI) immer bessere Ergebnisse beispielsweise bei der Bilderkennung zu erzielen, haben sich neuronale Netzwerkmodelle und die Menge an Trainingsdaten kontinuierlich vergrößert. Zwar hat sich auch die Leistung der GPUs und TPUs verbessert, doch kann der Fortschritt bei der Hardwareleistung kaum mit dem Wachstum der Größe der Modelle und der Daten mithalten. Aus diesem Grund werden Rechenprozesse für das Training der Modelle parallelisiert und auf mehrere Prozessoren verteilt.

Während sich kleinere Modelle oft problemlos auf mehrere Prozessoren parallelisiert trainieren lassen, sinkt die Effizienz bei der Parallelisierung großer neuronaler Netzwerkmodelle deutlich. Die Berechnungen und Ergebnisse sind bei Modellen mit vielen Layern ständig zu synchronisieren und die Wartezeiten der eingesetzten Prozessoren steigen. Einen Ausweg aus diesem Dilemma bietet das sogenannte Prinzip der Pipeline-Parallelisierung von GPipe. Es ermöglicht eine effiziente Skalierung der Trainingsleistung großer DNNs mit vielen sequenziellen Layern.

Die Arbeitsweise der GPipe-Bibliothek

Die GPipe-Bibliothek analysiert die Struktur des TensorFlow-Netzwerkmodells und verteilt das Modell und die Trainingsdaten in kleineren Partitionen und Arbeitspaketen auf mehrere Hardwaregeräte und Prozessoren. Für die Modell- und Daten-Parallelisierung nutzt die Software das Prinzip der Pipeline-Parallelisierung sowie synchrone SGD-Algorithmen (Stochastic Gradient Descent). Zum Einsatz kommen im Wesentlichen eine intelligente Speicheroptimierung (Memory Optimization) und eine automatische Parallelisierung (Automatic Parallelism).

Bei der automatischen Parallelisierung erhält die Software als Input die Architektur des neuronalen Netzwerkmodells und die Anzahl an zu Verfügung stehenden Prozessoren. Anschließend werden das Modell und die Berechnungsaufgaben nach vorgegebenen Algorithmen aufgeteilt und an die Prozessoren übertragen. Es entstehen kleine Micro-Batches, die sich von den TPUs und GPUs parallel abarbeiten lassen. Durch ein intelligentes Verfahren zur Speicherung der Forward-Pass-Aktivierungen und Backward-Pass-Aktivierungen lässt sich der zur Verfügung stehende Arbeitsspeicher sehr effizient nutzen.

(ID:46035115)

Über den Autor