Frugalitate se întâlnește cu acuratețea: instruire rentabilă a modelelor GPT NeoX și Pythia cu AWS Trainium | Amazon Web Services

Frugalitate se întâlnește cu acuratețea: instruire rentabilă a modelelor GPT NeoX și Pythia cu AWS Trainium | Amazon Web Services

Modelele lingvistice mari (sau LLM) au devenit un subiect de conversație zilnică. Adoptarea lor rapidă este evidentă prin timpul necesar pentru a ajunge la 100 de milioane de utilizatori, care a trecut de la „4.5 ani pe Facebook” la un minim istoric de doar „2 luni prin ChatGPT”. Un transformator generativ pre-antrenat (GPT) folosește actualizări autoregresive cauzale pentru a face predicții. Varietatea de sarcini, cum ar fi recunoașterea vorbirii, generarea de text și răspunsul la întrebări sunt demonstrate a avea performanțe uimitoare prin aceste arhitecturi model. Mai multe modele recente precum Neox, Şoim, Lamă utilizați arhitectura GPT ca coloană vertebrală. Formarea LLM-urilor necesită o cantitate colosală de timp de calcul, care costă milioane de dolari. În această postare, vom rezuma procedura de formare a GPT Neox on AWS Trainium, un accelerator de învățare automată (ML) creat special, optimizat pentru formarea de deep learning. Vom sublinia modul în care am antrenat astfel de modele cu AWS Trainium în mod eficient (3.2 milioane de jetoane/$) fără a pierde calitatea modelului.

Prezentare generală a soluțiilor

Modele GPT NeoX și Pythia

GPT NeoX și Pythia sunt modelele de limbaj cauzal open-source ale Eleuther-AI cu aproximativ 20 de miliarde de parametri în NeoX și 6.9 miliarde în Pythia. Ambele sunt modele de decodor care urmează un design arhitectural similar cu Chat GPT3. Cu toate acestea, au și câteva completări, care sunt, de asemenea, adoptate pe scară largă în modelele recente precum Llama. În special, au încorporare pozițională rotațională (ROPE) cu rotație parțială pe dimensiunile capului. Modelele originale (NeoX și Pythia 6.9B) sunt instruite pentru a fi disponibile în mod deschis Adunați setul de date cu deduplicare și folosind backend Megatron și Deepspeed.

Demonstrăm pregătirea prealabilă și reglarea fină a acestor modele pe instanțe Trn1 bazate pe AWS Trainium folosind Neuron NeMo bibliotecă. Pentru a stabili dovada conceptului și reproducerea rapidă, vom folosi un subset de date Wikipedia mai mic tokenizat folosind tokenizer GPT2 de codare perechi de octeți (BPE).

walkthrough

Descărcați setul de date Wikipedia pre-tokenizat, așa cum se arată:

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

Atât NeoX 20B, cât și Pythia 6.9B folosesc ROPE cu rotație parțială, de exemplu, rotind 25% din dimensiunile capului și menținând restul nerotit. Pentru a implementa eficient rotația parțială pe acceleratorul AWS Trainium, în loc să concatenăm dimensiunile rotative și nerotative, adăugăm frecvențe zero pentru dimensiunile nerotative și apoi rotim setul complet de dimensiuni ale capului. Acest truc simplu ne-a ajutat să îmbunătățim debitul (secvențe procesate pe secundă) pe AWS Trainium.

Etapele antrenamentului

Pentru a rula instruirea, folosim Amazon Elastic Compute Cloud multi-nod gestionat SLURM (Amazon EC2) Cluster Trn1, fiecare nod conținând o instanță trn1.32xl. Fiecare trn1.32xl are 16 acceleratoare cu doi muncitori pe accelerator. După descărcarea celui mai recent Neuron NeMo pachet, utilizați cel furnizat neox și Pythia scripturi de pre-antrenare și reglare fină cu hiper-parametri optimizați și executați următoarele pentru un antrenament cu patru noduri.

  1. Compilați: precompilați modelul cu trei iterații de tren pentru a genera și salva graficele:
    sbatch --nodes 4 compile.slurm ./neoX_20B_slurm.sh

  2. Run: Executați antrenamentul încărcând graficele din cache de la primii pași
    sbatch --nodes 4 run.slurm ./neoX_20B_slurm.sh

  3. Monitorizați rezultatele
    tensorboard --logdir=nemo_experiments/megatron_neox

Trebuie urmați aceiași pași pentru rularea modelului Pythia 6.9B cu înlocuire neox_20B_slurm.sh by pythia_6.9B_slurm.sh.

Experimente de pre-antrenament și de reglare fină

Demonstrăm pre-antrenarea modelelor GPT-NeoX și Pythia pe AWS Trainium folosind Neuron NeMo bibliotecă pentru 10k iterații și, de asemenea, arată reglajul fin al acestor modele pentru 1k pași. Pentru antrenament prealabil, folosim tokenizatorul GPT2 BPE în interiorul NeMo și urmăm același lucru config asa cum este folosit in modelul original. Reglarea fină pe AWS Trainium necesită modificarea a câțiva parametri (cum ar fi factorul de divizare a mărimii vocabularului), care sunt furnizate în scripturile de reglare fină pentru a se adapta la diferențele Megatron față de NeMo și GPU față de AWS Trainium. Debitul de antrenament distribuit cu mai multe noduri cu un număr diferit de noduri este prezentat în Tabelul-1.

Model Tensor paralel Conductă paralelă Număr de cazuri Cost ($/oră) Lungimea secvenței Dimensiunea globală a lotului Debit (seq/sec) Raportul cost-debit (jetoane/$)
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

Tabelul 1. Compararea randamentului mediu al modelelor GPT NeoX și Pythia pentru antrenarea până la 500 de pași cu schimbarea numărului de noduri. The prețul de trn1.32xl se bazează pe tariful efectiv pe oră rezervat pe 3 ani.

Apoi, evaluăm, de asemenea, traiectoria de pierdere a modelului de antrenament pe AWS Trainium și o comparăm cu rularea corespunzătoare pe un cluster P4d (nuclee GPU Nvidia A100). Împreună cu pierderea de antrenament, comparăm și un indicator util, cum ar fi norma gradientului, care este 2-normă a gradienților modelului calculați la fiecare iterație de antrenament pentru a monitoriza progresul antrenamentului. Rezultatele antrenamentului sunt prezentate în Figura-1, 2 și reglajul fin al NeoX 20B în Figura-3.

Pierderea de formare este în medie pentru toți lucrătorii (stânga) și norma de gradient (dreapta) la fiecare pas.

Figura 1. Pierderea de formare este în medie pentru toți lucrătorii (stânga) și norma de gradient (dreapta) la fiecare pas. NeoX 20B este antrenat pe 4 noduri cu un set de date wiki mic pe GPU și Trainium cu aceiași hiper-parametri de antrenament (dimensiune globală a lotului = 256). GPU utilizează BF16 și precizie mixtă implicită, în timp ce AWS Trainium utilizează BF16 complet cu rotunjire stocastică. Traiectoriile normelor de pierdere și gradient se potrivesc pentru GPU și AWS Trainium.

Pierderea de formare este în medie pentru toți lucrătorii (stânga) și norma de gradient (dreapta) la fiecare pas de antrenament (Pythia).

Figura 2. Pierderea de formare este în medie pentru toți lucrătorii (stânga) și norma de gradient (dreapta) la fiecare pas. Similar cu GPT NeoX din Figura-1, Pythia 6.9B este antrenat pe 4 noduri cu un set de date wiki mic pe GPU și Trainium cu aceiași hiper-parametri de antrenament (dimensiunea globală a lotului = 256). Traiectoriile normelor de pierdere și gradient se potrivesc pentru GPU și Trainium.

Ajustarea fină a modelului GPT NeoX 20B pe GPU și AWS Trainium, cu o medie de pierdere de antrenament pentru toți lucrătorii (stânga) și norma de gradient (dreapta).

Figura 3. Ajustarea fină a modelului GPT NeoX 20B pe GPU și AWS Trainium, cu o medie de pierdere de antrenament pentru toți lucrătorii (stânga) și norma de gradient (dreapta). Un mic set de date wiki este folosit pentru demonstrația de reglare fină. Traiectoriile normelor de pierdere și gradient se potrivesc pentru GPU și AWS Trainium.

În această postare, am arătat o pregătire eficientă din punct de vedere al costurilor a LLM-urilor pe hardware-ul de învățare profundă AWS. Am antrenat modele GPT NeoX 20B și Pythia 6.9B pe AWS Trn1 cu biblioteca Neuron NeMo. Debitul normalizat de cost pentru 20 de miliarde de modele cu AWS Trainium este de aproximativ 3.2 milioane de jetoane/$ cheltuit. Împreună cu antrenamentul eficient din punct de vedere al costurilor pe AWS Trainium, obținem o precizie similară a modelului, care este evidentă din pierderea pasului de antrenament și traiectoria normei de gradient. De asemenea, am ajustat punctele de control disponibile pentru modelul NeoX 20B pe AWS Trainium. Pentru informații suplimentare despre instruirea distribuită cu NeMo Megatron pe AWS Trainium, consultați Referință AWS Neuron pentru NeMo Megatron. O resursă bună pentru a începe reglarea fină a modelului Llama poate fi găsită aici, Llama2 reglaj fin. Pentru a începe cu gestionat AWS Trainium activat Amazon SageMaker, A se vedea Antrenați-vă modelele ML cu AWS Trainium și Amazon SageMaker.


Despre Autori

Frugalitate se întâlnește cu acuratețea: instruire rentabilă a modelelor GPT NeoX și Pythia cu AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Gaurav Gupta este în prezent un om de știință aplicat la laboratoarele AI Amazon Web Services (AWS). Dr. Gupta și-a terminat doctoratul la USC Viterbi. Interesele sale de cercetare acoperă domeniul modelării datelor secvențiale, învățarea ecuațiilor diferențiale parțiale, teoria informațiilor pentru învățarea automată, modelele dinamice fracționale și rețelele complexe. În prezent lucrează la probleme aplicate și matematice privind comportamentul de antrenament al LLM, modele de viziune cu PDE, modele multi-modalitate teoretice informaționale. Dr. Gupta are publicații în reviste/conferințe de top precum Neurips, ICLR, ICML, Nature, IEEE Control Society, ACM cyber-physical society.

Frugalitate se întâlnește cu acuratețea: instruire rentabilă a modelelor GPT NeoX și Pythia cu AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Ben Snyder este un om de știință aplicat cu AWS Deep Learning. Interesele sale de cercetare includ modele fundamentale, învățare prin consolidare și optimizare asincronă. În afara serviciului, îi place să meargă cu bicicleta și să campeze în spate.

Frugalitate se întâlnește cu acuratețea: instruire rentabilă a modelelor GPT NeoX și Pythia cu AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Amith (R) Mamidala este inginerie senior de aplicații de învățare automată la AWS Annapurna Labs. Dr. Mamidala și-a terminat doctoratul la Universitatea de Stat din Ohio în calcul și comunicare de înaltă performanță. În timpul mandatului său la IBM Research, dr. Mamidala a contribuit la clasa de computere BlueGene, care a condus adesea clasamentul Top500 al celor mai puternice și eficiente supercomputere. Proiectul a primit în 2009 Medalia Națională de Tehnologie și Inovare. După o scurtă perioadă ca inginer AI la un fond de acoperire financiară, dr. Mamidala s-a alăturat laboratoarelor Annapurna, concentrându-se pe formarea modelelor de limbaj mari.

Frugalitate se întâlnește cu acuratețea: instruire rentabilă a modelelor GPT NeoX și Pythia cu AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Jun (Luca) Huan este un om de știință principal la AWS AI Labs. Dr. Huan lucrează la AI și Data Science. A publicat peste 180 de lucrări evaluate de colegi în conferințe și reviste de top. El a primit premiul NSF Faculty Early Career Development Award în 2009. Înainte de a se alătura AWS, a lucrat la Baidu Research ca om de știință distins și șeful Baidu Big Data Laboratory. A fondat StylingAI Inc., un start-up AI și a lucrat ca CEO și Chief Scientist în 2019-2021. Înainte de a se alătura industriei, a fost profesor Charles E. și Mary Jane Spahr la Departamentul EECS de la Universitatea din Kansas.

Frugalitate se întâlnește cu acuratețea: instruire rentabilă a modelelor GPT NeoX și Pythia cu AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Shruti Koparkar este Senior Product Marketing Manager la AWS. Ea îi ajută pe clienți să exploreze, să evalueze și să adopte infrastructura de calcul accelerată Amazon EC2 pentru nevoile lor de învățare automată.

Timestamp-ul:

Mai mult de la Învățare automată AWS