YaLM 100B ist ein GPT-ähnliches neuronales Netzwerk zur Generierung und Verarbeitung von Text. Es kann von Entwicklern und Forschern auf der ganzen Welt frei genutzt werden.
Das Modell nutzt 100 Milliarden Parameter. Es dauerte 65 Tage, das Modell auf einem Cluster aus 800 A100-Grafikkarten und 1,7 TB Online-Texten, Büchern und unzähligen anderen Quellen in Englisch und Russisch zu trainieren.
Trainingsdetails und Best Practices zu Beschleunigung und Stabilisierung finden Sie in den Artikeln Medium (Englisch) und Habr (Russisch).
Wir haben DeepSpeed zum Trainieren des Modells verwendet und uns vom Megatron-LM-Beispiel inspirieren lassen. Der Code in diesem Repo ist jedoch nicht derselbe Code, der zum Trainieren des Modells verwendet wurde. Vielmehr handelt es sich um ein Standardbeispiel aus dem DeepSpeed-Repo mit minimalen Änderungen, die erforderlich sind, um auf unser Modell zu schließen.
Stellen Sie sicher, dass Sie über 200 GB freien Speicherplatz verfügen, bevor Sie Gewichte herunterladen. Das Modell (Code basiert auf microsoft/DeepSpeedExamples/Megatron-LM-v1.1.5-ZeRO3) soll auf mehreren GPUs mit Tensorparallelität laufen. Es wurde auf 4 (A100 80g) und 8 (V100 32g) GPUs getestet, kann aber mit verschiedenen Konfigurationen mit insgesamt ≈200 GB GPU-Speicher arbeiten, die die Gewichtsabmessungen korrekt aufteilen (z. B. 16, 64, 128).
bash download/download.sh
aus, um Modellgewichte und Vokabeln herunterzuladen../yalm100b_checkpoint/weights/
und Vokabeln nach ./yalm100b_checkpoint/vocab/
heruntergeladen.docker/pull.sh
gezogen werden. Es ist kompatibel mit A100 und V100.docker/build.sh
erstellen (wodurch lediglich ein Docker-Image aus docker/Dockerfile
erstellt wird).docker/run.sh
(Volumes, Name und andere Parameter können geändert werden) . Sie können mit den folgenden Skripten beginnen:
examples/generate_interactive.sh
: interaktive Generierung über die Befehlszeile, die einfachste Möglichkeit, das Modell auszuprobieren.examples/generate_conditional_sampling.sh
: bedingte Generierung mit Sampling-Strategie. Standardmäßig wird Top-P verwendet. Sie können die Temperatur jederzeit ändern oder Top-K verwenden. Die Eingabe ist jsonlines (Beispiel: examples/example_cond_input.json
), die Ausgabe ist dieselbe jsonlines, wobei in jeder Zeile ein generiertes Textfeld hinzugefügt wird.examples/generate_conditional_greedy.sh
: wie zuvor, aber die Generierung ist gierig. Geeignet zur Lösung von Problemen mit wenigen Schüssen.examples/generate_unconditional.sh
: bedingungslose Generierung. Es wird keine Eingabe verwendet, die Ausgabe erfolgt in jsonlines. Das Modell wird unter der Apache 2.0-Lizenz veröffentlicht, die sowohl Forschung als auch kommerzielle Nutzung erlaubt, Megatron-LM ist unter der Megatron-LM-Lizenz lizenziert.
Der für das Training von YaLM-100B verwendete Datensatz besteht aus den folgenden Teilen (grobe Prozentsätze werden in vom Modell gesehenen Token gemessen):
25 % The Pile – offener englischer Datensatz des Eleuther AI-Teams
75 % der von unserem Team gesammelten Texte auf Russisch (Prozentsätze des gesamten Datensatzes sind angegeben)
49 % russische Webseiten aus dem Yandex-Suchindex wurden durch die folgenden Heuristiken von ~100 TB bis ~1 TB gefiltert:
12 % Nachrichten aus verschiedenen Quellen aus dem Yandex-Suchindex
10 % Bücher aus dem im Russian Distributional Thesarus verwendeten Datensatz
3 % Sonstige Texte aus dem Taiga-Datensatz
1,5 % Dialoge aus sozialen Medien, ähnlich vorverarbeitet wie Reddit in The Pile
0,5 % russischer Anteil von Wikipedia
Einige Teilmengen wurden während des Trainings bis zu dreimal durchlaufen.
Das Modell wurde etwa 65 Tage lang auf einem Cluster von 800 A100 trainiert. In dieser Zeit wurden 300 Milliarden Token verbraucht. Auf der HF-Seite können Sie TensorBoard mit LR und Ramp-Up-Zeitplan, Trainingsmetriken und unsere „Thermometer“ sehen.