Definition Was ist der Zero Redundancy Optimizer (ZeRO)?

Der Zero Redundancy Optimizer (ZeRO) ist zusammen mit der DeepSpeed-Library einsetzbar und optimiert den Speicherbedarf für das Training von großen Deep-Learning-Modellen mit vielen Milliarden Parametern. ZeRO wurde von Microsoft entwickelt und ist unter Open-Source-Lizenz frei verfügbar. Verwendet wurde der Zero Redundancy Optimizer beispielsweise für das Training der Sprachmodelle GPT-2 und Turing-NLG 17B.

Anbieter zum Thema

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

Zero Redundancy Optimizer ist der Name eines von Microsoft entwickelten Sets von Optimierungstechniken für das Training von sehr großen Deep-Learning-Modellen. Der Optimizer ist Bestandteil der Python-Library DeepSpeed und unter Open-Source-Lizenz frei verfügbar. ZeRO sorgt für die Optimierung des Speicherbedarfs bei der Daten- und Modellparallelisierung und erlaubt es, sehr große Modelle in einer verteilten Computing-Umgebung im Arbeitsspeicher der einzelnen GPUs effizient zu trainieren. Die Modelle können mehrere hundert Milliarden Parameter besitzen.

Zum Einsatz gekommen ist der Zero Redundancy Optimizer beispielsweise für das Training der Sprachmodelle GPT-2 und Turing-NLG 17B. Um den Optimizer anzuwenden, sind keine Codeanpassungen des Modells notwendig. Laut Aussage der Entwickler skaliert der Zero Redundancy Optimizer für Deep-Learning-Modelle mit über einer Billion Parametern.

Motivation für die Entwicklung von DeepSpeed und ZeRO

Große Deep-Learning-Modelle erzielen genaue Ergebnisse, stellen für das Training aber hohe Anforderungen an die Rechenleistung und den Arbeitsspeicher der eingesetzten Computer und GPUs. Viele aktuelle Modelle wie Sprachmodelle besitzen eine riesige Anzahl an Parametern. Oft handelt es sich um viele Milliarden Parameter. Die Größe der Modelle macht es teils unmöglich, sie in den Speicher einer einzelnen GPU zu laden. Daher kommen verteilte Architekturen mit vielen GPUs und Techniken wie die Daten- und Modellparallelisierung zum Einsatz. Doch auch die klassische Daten- und Modellparallelisierung zeigt viele Limitierungen. Für ein effizientes Training sind Lösungen gefragt, die die Redundanzen bei der Daten- und Modellparallelisierung reduzieren und eine Skalierung über viele Computing-Ressourcen hinweg erlauben. DeepSpeed und der Zero Redundancy Optimizer bieten Lösungen für diese Herausforderungen. ZeRO skaliert für große Modelle mit bis zu über einer Billion Parametern.

DeepSpeed

Der Zero Redundancy Optimizer kommt zusammen mit DeepSpeed zum Einsatz. Bei DeepSpeed handelt es sich um eine Bibliothek für das auf Machine Learning ausgerichtete Open-Source-Framework PyTorch. Sie wurde von Microsoft entwickelt und 2020 veröffentlicht. Die Library steht unter MIT-Open-Source-Lizenz und ist über GitHub frei verfügbar. Mithilfe von DeepSpeed lassen sich große Deep-Learning-Modelle auf Einzelrechnern und in verteilten Computing-Umgebungen effizient und performant trainieren.

Ein Hauptanwendungsbereich von DeepSpeed ist das Training großer Sprachmodelle mit vielen Parametern. DeepSpeed arbeitet mit Parallelisierungstechniken und verwendet den Zero Redundancy Optimizer, um große Modelle mit Milliarden von Parametern verteilt über viele GPUs in deren Arbeitsspeicher zu trainieren.

Grundsätzliche Funktionsweise des Zero Redundancy Optimizers

Ziel des Zero Redundancy Optimizers ist es, den Speicherbedarf großer Modelle so zu optimieren, dass ein effizientes, verteiltes Training möglich ist. Die Techniken des Optimizers stützen sich auf existierende Lösungen wie Datenparallelisierung (DP) und Modellparallelisierung (MP) und sorgen für deren Optimierung. Dementsprechend ist der Zero Redundancy Optimizer mit einem ZeRO-DP- und einem ZeRO-MP-Optimizer ausgestattet.

Grundsätzlich findet Datenparallelisierung für Modelle Anwendung, die noch in den Speicher einer einzelnen GPU passen. Die Modelle werden quasi repliziert und in verteilten Datenprozessen trainiert. Modellparallelisierung wird verwendet, wenn die Modelle nicht mehr in den Speicher einer einzelnen GPU passen. Klassische Modellparallelisierung hat aber den Nachteil, dass die Effizienz der Inter-GPU-Kommunikation mit zunehmender Zahl beteiligter GPUs auf mehreren Rechenknoten stark abnimmt. Ein begrenzender Faktor ist beispielsweise die Netzwerkbandbreite. Der Zero Redundancy Optimizer hebt verschiedene Limitierungen der Daten- und Modellparallelisierung auf, indem er Redundanzen und dadurch verursachte Speicherengpässe beseitigt. Er partitioniert, vereinfacht ausgedrückt, die Modelle und deren Modellstatus für die in der verteilten Architektur auf den Rechenknoten zur Verfügung stehenden GPUs, anstatt sie wie bei klassischen DP- und MP-Mechanismen nur zu replizieren. Jede GPU nimmt eine Partition des Modells auf und wird mit einem Teil der Daten trainiert. Redundanzen werden beseitigt. Die Speicher- und Rechenanforderungen an die einzelnen GPUs sinken und das Training wird effizienter.

Die Größe der Deep-Learning-Modelle lässt sich mithilfe des Zero Redundancy Optimizers proportional mit der Anzahl der verfügbaren Recheneinheiten skalieren. Auf aktuell verfügbarer Hardware werden Modelle mit über einer Billion Parametern trainierbar. In verschiedenen Implementierungen hat der Zero Redundancy Optimizer bereits seine Leistungsfähigkeit bewiesen. Große Modelle mit über 100 Milliarden Parametern konnten beispielsweise verteilt auf 400 GPUs mit einem Durchsatz von 15 Petaflops trainiert werden.

(ID:48177241)