Sparsamkeit trifft auf Genauigkeit: Kosteneffizientes Training von GPT NeoX- und Pythia-Modellen mit AWS Trainium | Amazon Web Services

Sparsamkeit trifft auf Genauigkeit: Kosteneffizientes Training von GPT NeoX- und Pythia-Modellen mit AWS Trainium | Amazon Web Services

Große Sprachmodelle (LLMs) sind zu einem Thema täglicher Gespräche geworden. Ihre schnelle Akzeptanz zeigt sich daran, wie viel Zeit benötigt wird, um 100 Millionen Nutzer zu erreichen, die von „4.5 Jahren bei Facebook“ auf ein Allzeittief von nur „2 Monaten bei ChatGPT“ gesunken ist. Ein generativer vorab trainierter Transformator (GPT) verwendet kausale autoregressive Aktualisierungen, um Vorhersagen zu treffen. Diese Modellarchitekturen erbringen nachweislich eine erstaunliche Leistung für eine Vielzahl von Aufgaben wie Spracherkennung, Textgenerierung und Beantwortung von Fragen. Mehrere neuere Modelle wie z NeoX, Falke, Lama Verwenden Sie die GPT-Architektur als Rückgrat. Das Training von LLMs erfordert enorm viel Rechenzeit, was Millionen von Dollar kostet. In diesem Beitrag fassen wir das Trainingsverfahren von GPT zusammen NeoX on AWS-Training, ein speziell entwickelter Beschleuniger für maschinelles Lernen (ML), der für Deep-Learning-Training optimiert ist. Wir erläutern, wie wir solche Modelle kostengünstig (3.2 Mio. Token/$) mit AWS Trainium trainiert haben, ohne dabei an Modellqualität einzubüßen.

Lösungsüberblick

GPT NeoX- und Pythia-Modelle

GPT NeoX und Pythia sind die quelloffenen kausalen Sprachmodelle von Eleuther-AI mit etwa 20 Milliarden Parametern in NeoX und 6.9 Milliarden in Pythia. Bei beiden handelt es sich um Decodermodelle mit einem ähnlichen Architekturdesign wie Chat GPT3. Allerdings verfügen sie auch über mehrere Ergänzungen, die auch in den neueren Modellen wie Llama weit verbreitet sind. Insbesondere verfügen sie über eine rotatorische Positionseinbettung (ROPE) mit teilweiser Rotation über die Kopfabmessungen. Die Originalmodelle (NeoX und Pythia 6.9B) werden auf offen verfügbaren Modellen trainiert Stapeldatensatz mit Deduplizierung und Verwendung des Megatron- und Deepspeed-Backends.

Wir demonstrieren das Vortraining und die Feinabstimmung dieser Modelle auf AWS Trainium-basierten Trn1-Instanzen mithilfe von Neuron NeMo Bibliothek. Um den Proof-of-Concept und eine schnelle Reproduktion zu gewährleisten, verwenden wir eine kleinere Teilmenge des Wikipedia-Datensatzes, die mit dem GPT2 Byte-Pair-Encoding (BPE)-Tokenizer tokenisiert wurde.

Lösungsweg

Laden Sie den vortokenisierten Wikipedia-Datensatz wie gezeigt herunter:

export DATA_DIR=~/examples_datasets/gpt2 mkdir -p ${DATA_DIR} && cd ${DATA_DIR} wget https://s3.amazonaws.com/models.huggingface.co/bert/gpt2-vocab.json
wget https://s3.amazonaws.com/models.huggingface.co/bert/gpt2-merges.txt
aws s3 cp s3://neuron-s3/training_datasets/gpt/wikipedia/my-gpt2_text_document.bin . --no-sign-request
aws s3 cp s3://neuron-s3/training_datasets/gpt/wikipedia/my-gpt2_text_document.idx . --no-sign-request
aws s3 cp s3://neuron-s3/training_datasets/gpt/wikipedia/license.txt . --no-sign-request

Sowohl NeoX 20B als auch Pythia 6.9B verwenden ROPE mit teilweiser Drehung, wobei beispielsweise 25 % der Kopfabmessungen gedreht werden und der Rest ungedreht bleibt. Um die Teilrotation auf dem AWS Trainium-Beschleuniger effizient zu implementieren, fügen wir, anstatt die rotierenden und nicht rotierenden Dimensionen zu verketten, Nullfrequenzen für nicht rotierende Dimensionen hinzu und drehen dann den gesamten Satz von Kopfdimensionen. Dieser einfache Trick hat uns geholfen, den Durchsatz (verarbeitete Sequenzen pro Sekunde) auf AWS Trainium zu verbessern.

Trainingsschritte

Um das Training durchzuführen, verwenden wir die von SLURM verwaltete Amazon Elastic Compute Cloud mit mehreren Knoten (Amazon EC2) Trn1-Cluster, wobei jeder Knoten eine trn1.32xl-Instanz enthält. Jede trn1.32xl verfügt über 16 Beschleuniger mit zwei Arbeitern pro Beschleuniger. Nach dem Herunterladen der neuesten Version Neuron NeMo Paket verwenden Sie das mitgelieferte neox und Pythia Vorabtraining und Feinabstimmung von Skripten mit optimierten Hyperparametern und Ausführen der folgenden Schritte für ein Vier-Knoten-Training.

  1. Kompilieren: Kompilieren Sie das Modell mit drei Zugiterationen vor, um die Diagramme zu generieren und zu speichern:
    sbatch --nodes 4 compile.slurm ./neoX_20B_slurm.sh

  2. Ausführen: Führen Sie das Training aus, indem Sie die zwischengespeicherten Diagramme der ersten Schritte laden
    sbatch --nodes 4 run.slurm ./neoX_20B_slurm.sh

  3. Ergebnisse überwachen
    tensorboard --logdir=nemo_experiments/megatron_neox

Für den Betrieb des Pythia 6.9B-Modells mit Austausch müssen die gleichen Schritte befolgt werden neox_20B_slurm.sh by pythia_6.9B_slurm.sh.

Experimente vor dem Training und zur Feinabstimmung

Wir demonstrieren das Vortraining von GPT-NeoX- und Pythia-Modellen auf AWS Trainium mit Neuron NeMo Bibliothek für 10 Iterationen und zeigt auch die Feinabstimmung dieser Modelle für 1 Schritte. Für das Vortraining verwenden wir den GPT2-BPE-Tokenizer im NeMo und befolgen diesen Config wie im Originalmodell verwendet. Die Feinabstimmung auf AWS Trainium erfordert die Änderung einiger weniger Parameter (z. B Vokabelgrößenteilungsfaktor), die in den Feinabstimmungsskripten bereitgestellt werden, um den Unterschieden zwischen Megatron und NeMo sowie den Änderungen zwischen GPU und AWS Trainium Rechnung zu tragen. Der verteilte Trainingsdurchsatz mit mehreren Knoten und unterschiedlicher Anzahl von Knoten ist in Tabelle 1 dargestellt.

Modell Tensorparallel Pipeline parallel Anzahl der Instanzen Kosten ($/Stunde) Sequenzlänge Globale Batchgröße Durchsatz (seq/s) Kosten-Durchsatz-Verhältnis (Tokens/$)
Pythia 6.9B 8 1 1 7.59 2048 256 10.4 10,102,387
8 1 4 30.36 2048 256 35.8 8,693,881
NeoX 20B 8 4 4 30.36 2048 16384 13.60 3,302,704
8 4 8 60.72 2048 16384 26.80 3,254,134
8 4 16 121.44 2048 16384 54.30 3,296,632
8 4 32 242.88 2048 16384 107.50 3,263,241
8 4 64 485.76 2048 16384 212.00 3,217,708

Tabelle 1. Vergleich des mittleren Durchsatzes von GPT NeoX- und Pythia-Modellen für das Training von bis zu 500 Schritten mit sich ändernder Anzahl von Knoten. Der Preis von trn1.32xl basiert auf dem 3-Jahres-Reservierungssatz pro Stunde.

Als nächstes bewerten wir auch den Verlustverlauf des Modelltrainings auf AWS Trainium und vergleichen ihn mit dem entsprechenden Lauf auf einem P4d-Cluster (Nvidia A100 GPU-Kerne). Neben dem Trainingsverlust vergleichen wir auch nützliche Indikatoren wie die Gradientennorm, bei der es sich um die 2-Norm der Modellgradienten handelt, die bei jeder Trainingsiteration berechnet werden, um den Trainingsfortschritt zu überwachen. Die Trainingsergebnisse sind in Abbildung 1, 2 und die Feinabstimmung von NeoX 20B in Abbildung 3 dargestellt.

Durchschnittlicher Trainingsverlust über alle Arbeiter (links) und Gradientennorm (rechts) bei jedem Trainingsschritt.

Abbildung 1. Durchschnittlicher Trainingsverlust über alle Arbeiter (links) und Gradientennorm (rechts) bei jedem Trainingsschritt. NeoX 20B wird auf 4 Knoten mit kleinem Wiki-Datensatz auf GPU und Trainium mit denselben Trainings-Hyperparametern trainiert (globale Batch-Größe = 256). Die GPU verwendet BF16 und die standardmäßige gemischte Genauigkeit, während AWS Trainium das vollständige BF16 mit stochastischer Rundung verwendet. Die Verlust- und Gradientennormverläufe stimmen für GPU und AWS Trainium überein.

Durchschnittlicher Trainingsverlust über alle Arbeiter (links) und Gradientennorm (rechts) bei jedem Trainingsschritt (Pythia).

Abbildung 2. Durchschnittlicher Trainingsverlust über alle Arbeiter (links) und Gradientennorm (rechts) bei jedem Trainingsschritt. Ähnlich wie GPT NeoX in Abbildung 1 wird Pythia 6.9B auf 4 Knoten mit einem kleinen Wiki-Datensatz auf GPU und Trainium mit denselben Trainingshyperparametern trainiert (globale Batchgröße = 256). Die Verlust- und Gradientennormverläufe stimmen für GPU und Trainium überein.

Feinabstimmung des GPT NeoX 20B-Modells auf GPU und AWS Trainium mit gemitteltem Trainingsverlust über alle Mitarbeiter (links) und Gradientennorm (rechts).

Abbildung 3. Feinabstimmung des GPT NeoX 20B-Modells auf GPU und AWS Trainium mit gemitteltem Trainingsverlust über alle Mitarbeiter (links) und Gradientennorm (rechts). Zur Feinabstimmungsdemonstration wird ein kleiner Wiki-Datensatz verwendet. Die Verlust- und Gradientennormverläufe stimmen für GPU und AWS Trainium überein.

In diesem Beitrag haben wir die kosteneffiziente Schulung von LLMs auf AWS-Deep-Learning-Hardware gezeigt. Wir haben GPT NeoX 20B- und Pythia 6.9B-Modelle auf AWS Trn1 mit der Neuron NeMo-Bibliothek trainiert. Der kostennormalisierte Durchsatz für 20 Milliarden Modelle mit AWS Trainium beträgt etwa 3.2 Millionen Token pro ausgegebenem US-Dollar. Zusammen mit dem kosteneffizienten Training auf AWS Trainium erhalten wir eine ähnliche Modellgenauigkeit, die sich aus dem Trainingsschrittverlust und der Gradientennormtrajektorie ergibt. Wir haben auch die verfügbaren Prüfpunkte für das NeoX 20B-Modell auf AWS Trainium optimiert. Weitere Informationen zum verteilten Training mit NeMo Megatron auf AWS Trainium finden Sie unter AWS Neuron-Referenz für NeMo Megatron. Eine gute Ressource, um mit der Feinabstimmung des Lama-Modells zu beginnen, finden Sie hier: Feinabstimmung von Lama2. Erste Schritte mit verwaltetem AWS Trainium Amazon Sage Maker, Siehe Trainieren Sie Ihre ML-Modelle mit AWS Trainium und Amazon SageMaker.


Über die Autoren

Sparsamkeit trifft auf Genauigkeit: Kosteneffizientes Training von GPT NeoX- und Pythia-Modellen mit AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.Gaurav Gupta ist derzeit angewandter Wissenschaftler in den KI-Laboren von Amazon Web Services (AWS). Dr. Gupta schloss seinen Doktortitel am USC Viterbi ab. Seine Forschungsinteressen umfassen die Bereiche sequentielle Datenmodellierung, Lernen partieller Differentialgleichungen, Informationstheorie für maschinelles Lernen, fraktionierte dynamische Modelle und komplexe Netzwerke. Derzeit arbeitet er an angewandten und mathematischen Problemen zum Trainingsverhalten von LLMs, Sehmodellen mit PDEs und informationstheoretischen Multimodalitätsmodellen. Dr. Gupta hat Veröffentlichungen in führenden Fachzeitschriften/Konferenzen wie Neurips, ICLR, ICML, Nature, IEEE Control Society und ACM Cyber-Physical Society.

Sparsamkeit trifft auf Genauigkeit: Kosteneffizientes Training von GPT NeoX- und Pythia-Modellen mit AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.Ben Snyder ist ein angewandter Wissenschaftler bei AWS Deep Learning. Seine Forschungsinteressen umfassen grundlegende Modelle, Reinforcement Learning und asynchrone Optimierung. Außerhalb der Arbeit fährt er gerne Rad und campt im Hinterland.

Sparsamkeit trifft auf Genauigkeit: Kosteneffizientes Training von GPT NeoX- und Pythia-Modellen mit AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.Amith (R) Mamidala ist Senior Application Engineering für maschinelles Lernen bei AWS Annapurna Labs. Dr. Mamidala promovierte an der Ohio State University in Hochleistungsrechnen und Kommunikation. Während seiner Tätigkeit bei IBM Research trug Dr. Mamidala zur Entwicklung der BlueGene-Computerklasse bei, die häufig die Top 500-Rangliste der leistungsstärksten und energieeffizientesten Supercomputer anführte. Das Projekt wurde 2009 mit der Nationalen Medaille für Technologie und Innovation ausgezeichnet. Nach einer kurzen Tätigkeit als KI-Ingenieurin bei einem Finanz-Hedgefonds wechselte Dr. Mamidala in die Annapurna-Labore und konzentrierte sich auf die Schulung großer Sprachmodelle.

Sparsamkeit trifft auf Genauigkeit: Kosteneffizientes Training von GPT NeoX- und Pythia-Modellen mit AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.Jun (Luke) Huan ist leitender Wissenschaftler bei AWS AI Labs. Dr. Huan beschäftigt sich mit KI und Datenwissenschaft. Er hat mehr als 180 peer-reviewte Artikel auf führenden Konferenzen und Fachzeitschriften veröffentlicht. Er erhielt 2009 den NSF Faculty Early Career Development Award. Bevor er zu AWS kam, arbeitete er bei Baidu Research als angesehener Wissenschaftler und Leiter des Baidu Big Data Laboratory. Er gründete StylingAI Inc., ein KI-Start-up, und war von 2019 bis 2021 als CEO und Chefwissenschaftler tätig. Bevor er in die Industrie wechselte, war er Charles E. und Mary Jane Spahr Professor in der EECS-Abteilung der University of Kansas.

Sparsamkeit trifft auf Genauigkeit: Kosteneffizientes Training von GPT NeoX- und Pythia-Modellen mit AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.Shruti Koparkar ist Senior Product Marketing Manager bei AWS. Sie hilft Kunden, die Amazon EC2-Accelerated-Computing-Infrastruktur für ihre Anforderungen an maschinelles Lernen zu erkunden, zu bewerten und einzuführen.

Zeitstempel:

Mehr von AWS Maschinelles Lernen