High-End Technologien für anspruchsvolle Lösungen

Mit KI, Cloud Computing und Big Data lösen wir heute Probleme, die zuvor als unlösbar galten. Erfahren Sie hier, wie Sie mit hochentwickelten IT-Produkten und -Services Innovationen schneller realisieren und Ihr Unternehmenswachstum steigern.

Computer Sprachmodelle

So trainiert Inspur sein Sprachmodell Yuan 1.0

04.03.2022
Das Training von Sprachmodellen ist enorm rechenintensiv. Das Inspur AI Research Institute hat deshalb ein ausgeklügeltes Trainings-Setup entwickelt.
Sprachmodelle verzeichnen schon jetzt ein exponentielles Wachstum.
Sprachmodelle verzeichnen schon jetzt ein exponentielles Wachstum.
Foto: Omelchenko-shutterstock.com

Sprachmodelle haben in den vergangenen Jahren ein exponentielles Wachstum an den Tag gelegt. So nutzte das Modell BERT bei seiner Einführung im Jahr 2018 noch 340 Millionen Parameter, um Sätze und Wortgruppen zu bilden. Bereits zwei Jahre später, im Jahr 2020, kam GPT-3 mit 175 Milliarden Parametern auf den Markt.

Mit der Vorstellung von Yuan 1.0 durch das Inspur Artificial Intelligence Research Institute (Inspur AI Research) im September 2021 erhöhte sich die Zahl der Parameter erneut sprunghaft. Es handelte sich um nicht weniger als das leistungsstärkste chinesischsprachige KI-Modell der Welt mit 245,7 Milliarden Parametern und 5 TB Datensätzen.

Yuan 1.0 zeigte eine bemerkenswerte Leistung bei der Sprachverarbeitung und führt sowohl in den ZeroCLUE als auch in den FewCLUE für den Chinese Language Understanding Benchmark (CLUE) das Ranking an. Besonders beeindruckend: Yuan 1.0 ist in der Lage, schriftliche Inhalte zu generieren, die Testpersonen in nur weniger als 50 Prozent der Fälle von menschlich erstellten Inhalten unterscheiden können.

Auf der Suche nach dem optimalen Trainings-Setup

Die hoch entwickelten Sprachfähigkeiten von Yuan 1.0 erfordern eine hohe Zahl an Parametern, was viele Herausforderungen beim Modelltraining und -einsatz mit sich bringt. Das erste Problem, das sich beim Training von "Yuan 1.0" stellte, waren die riesige Datenmenge und die damit verbundene erforderliche Rechenleistung für das Training des Modells.

Eine ausreichende Datenmenge für das Training des Modells ist eine Voraussetzung dafür, dass das Modell eine zufriedenstellende Leistung erbringt. Deshalb kam ein chinesischer Korpus mit 5 TB qualitativ hochwertigem Text zum Einsatz, um das Yuan 245B-Modell zu trainieren, ohne dass der Datensatz zweimal abgefragt werden musste.

Das Trainieren eines Modells mit mehr als 100 Milliarden Parametern erfordert eine enorme Menge an Rechenressourcen. Um den Trainingsprozess von Yuan 1.0 zu beschleunigen und somit die Energiekosten und den CO2-Ausstoß zu reduzieren, entwarf Inspur eine gemeinsame Modellarchitektur und plante ein verteiltes Training in großem Maßstab.

Verschiedenen Parallelitätsstrategien für ein effizientes Training

Um das Problem des GPU-Speichers zu lösen, wurden Strategien zur Tensor-, Pipeline- und Datenparallelität kombiniert und Yuan 1.0 wurde auf 2128 GPUs mit 180 Milliarden Token trainiert.

Tensor-Parallelität

Bei dieser Lösungsstrategie werden die GPUs zu Gruppen zusammengefasst. Eine Gruppe kann zum Beispiel aus 8 GPUs in einem Server bestehen. Die Tensor-Parallelität wird verwendet, um das Modell innerhalb jeder Gruppe aufzuteilen. Eine Transformatorschicht besteht aus einem so genannten "selbst referenziellen" Block, gefolgt von einem zweischichtigen, mehrschichtigen Perzeptron (MLP). Die Strategie teilt beide GEMMs im MLP-Block auf GPUs auf und erfordert nur einen einzigen All-Reduce-Vorgang im Vorwärtsdurchlauf und einen einzigen All-Reduce-Vorgang im Rückwärtsdurchlauf. Dies ermöglicht es uns, alle GEMMs in einer einfachen Transformatorschicht mit nur zwei All-Reduces im Vorwärtspfad und zwei im Rückwärtspfad durchzuführen.

Pipeline-Parallelität

Bei Sprachmodellen mit Parametern im Milliardenbereich können die Parameter kaum in einem einzigen Knoten gespeichert werden. Um dieses Problem zu lösen, kommt Pipeline-Parallelität zur Anwendung, bei der die LM-Schichten auf mehrere Knoten aufgeteilt werden. Jeder Knoten ist eine Stufe in der Pipeline, die die Ausgaben der vorherigen Stufe empfängt und die Ergebnisse an die nächste Stufe weiterleitet. Ein Knoten befindet sich im Leerlauf, wenn die von seinem vorherigen Nachbarn empfangenen Eingaben noch nicht bereit sind. Die Leerlaufzeit für eine Pipeline wird als Pipeline-Bubble bezeichnet.

Die Dauer einer Pipeline-Bubble steigt mit der Anzahl der Schichten L und sinkt mit der Mikro-Batchgröße m. Um dieses Problem zu lösen, haben wir festgesetzt: m » L / l.

Daten-Parallelität

Die globale Batchgröße wird durch Datenparallelität auf die Pipeline-Gruppen aufgeteilt. Jede Pipeline-Gruppe mit einer Kopie des Modells wird durch lokale Batches gespeist. Die Recheneffizienz verbessert sich mit der Erhöhung der globalen Batchgröße und der Sequenzlänge. Da der Speicherbedarf quadratisch zur Sequenzlänge ist, scheint die Erhöhung der globalen Batchgröße eine effektivere Methode zu sein.

Auf der Grundlage der obigen Analyse wurden die folgenden Regeln für das verteilte Training von Yuan 1.0 angewendet:

Erhöhung der Sequenzlänge so weit wie möglich, da dies der Tensor-Parallelität, der Pipeline-Parallelität und der Datenparallelität zugutekommt. Die Neuberechnung von Aktivierungen in der Rückwärtspropagation spart Speicherplatz.

Wir haben die Anzahl der Schichten im Sprachmodell reduziert, um die Zeitkosten der Pipeline-Bubble zu senken.

Eine Erhöhung der versteckten Größe verbessert die Recheneffizienz.

Eine Erhöhung der Anzahl von Mikrobatches in einem Knoten verbessert die Leistung der Pipeline-Parallelität.

Auf der Grundlage der oben genannten Designprinzipien ergaben sich für Yuan 1.0 die folgenden Architekturen und verteilten Trainingskonfigurationen:

Schichten

Versteckte Größe

Globale Batchgröße

Mikro-Batchgröße

SequenzLänge

t

p

d

GPUs

76

16.384

3360

1

2048

8

38

7

2128