Varčnost in natančnost: stroškovno učinkovito usposabljanje modelov GPT NeoX in Pythia z AWS Trainium | Spletne storitve Amazon

Varčnost in natančnost: stroškovno učinkovito usposabljanje modelov GPT NeoX in Pythia z AWS Trainium | Spletne storitve Amazon

Veliki jezikovni modeli (ali LLM) so postali tema vsakodnevnih pogovorov. Njihovo hitro sprejemanje je razvidno iz količine časa, ki je potreben za doseganje 100 milijonov uporabnikov, ki je šel od »4.5 let prek Facebooka« do doslej najnižje vrednosti le »2 meseca prek ChatGPT«. Generativni vnaprej pripravljeni transformator (GPT) uporablja vzročne avtoregresivne posodobitve za napovedovanje. Različne naloge, kot so prepoznavanje govora, ustvarjanje besedila in odgovarjanje na vprašanja, so pokazale, da imajo te modelne arhitekture izjemno zmogljivost. Več novejših modelov, kot npr NeoX, Falcon, Llama uporabite arhitekturo GPT kot hrbtenico. Usposabljanje LLM zahteva ogromno računalniškega časa, ki stane milijone dolarjev. V tej objavi bomo povzeli postopek usposabljanja GPT NeoX on AWS Trainium, namenski pospeševalnik strojnega učenja (ML), optimiziran za poglobljeno učenje. Predstavili bomo, kako smo stroškovno učinkovito (3.2 milijona žetonov/$) usposobili takšne modele z AWS Trainium, ne da bi pri tem izgubili kakovost modela.

Pregled rešitev

Modela GPT NeoX in Pythia

GPT NeoX in Pitija so odprtokodni vzročni jezikovni modeli Eleuther-AI s približno 20 milijardami parametrov v NeoX in 6.9 milijarde v Pythii. Oba sta modela dekoderjev, ki sledita podobni arhitekturni zasnovi kot Chat GPT3. Vendar pa imajo tudi več dodatkov, ki so prav tako široko sprejeti v nedavnih modelih, kot je Llama. Zlasti imajo rotacijsko pozicijsko vgradnjo (ROPE) z delno rotacijo po dimenzijah glave. Izvirni modeli (NeoX in Pythia 6.9B) so usposobljeni na prosto dostopnih Nabor podatkov Pile z deduplikacijo in uporabo zaledja Megatron in Deepspeed.

Demonstriramo predhodno usposabljanje in natančno nastavitev teh modelov na primerkih Trn1, ki temeljijo na AWS Trainium, z uporabo Nevron NeMo knjižnica. Za vzpostavitev dokaza o konceptu in hitro reprodukcijo bomo uporabili manjši podnabor podatkov Wikipedije, tokeniziran z uporabo tokenizerja GPT2 Byte-pair encoding (BPE).

Walkthrough

Prenesite vnaprej tokeniziran nabor podatkov Wikipedije, kot je prikazano:

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

Tako NeoX 20B kot Pythia 6.9B uporabljata ROPE z delno rotacijo, na primer tako, da se vrti 25 % dimenzij glave, ostalo pa ostane nezasukano. Za učinkovito implementacijo delne rotacije na pospeševalniku AWS Trainium namesto združevanja vrtljivih in nerotacijskih dimenzij dodamo ničelne frekvence za nerotacijske dimenzije in nato zavrtimo celoten niz dimenzij glave. Ta preprost trik nam je pomagal izboljšati prepustnost (zaporedja, obdelana na sekundo) na AWS Trainium.

Koraki usposabljanja

Za izvedbo usposabljanja uporabljamo Amazon Elastic Compute Cloud z več vozlišči, ki ga upravlja SLURM (Amazon EC2) Grozd Trn1, pri čemer vsako vozlišče vsebuje primerek trn1.32xl. Vsak trn1.32xl ima 16 pospeševalnikov z dvema delavcema na pospeševalnik. Po prenosu najnovejše Nevron NeMo paket, uporabite priloženo neox in pitija skripte za predhodno usposabljanje in natančno nastavitev z optimiziranimi hiperparametri in izvedite naslednje za usposabljanje s štirimi vozlišči.

  1. Prevedi: Vnaprej prevedite model s tremi ponovitvami vlaka, da ustvarite in shranite grafe:
    sbatch --nodes 4 compile.slurm ./neoX_20B_slurm.sh

  2. Run: Izvedite usposabljanje tako, da naložite predpomnjene grafe iz prvih korakov
    sbatch --nodes 4 run.slurm ./neoX_20B_slurm.sh

  3. Spremljajte rezultate
    tensorboard --logdir=nemo_experiments/megatron_neox

Istim korakom je treba slediti za zagon modela Pythia 6.9B z zamenjavo neox_20B_slurm.sh by pythia_6.9B_slurm.sh.

Preizkusi pred usposabljanjem in finim uravnavanjem

Demonstriramo predhodno usposabljanje modelov GPT-NeoX in Pythia na AWS Trainium z uporabo Nevron NeMo knjižnico za 10 ponovitev in tudi prikazati fino nastavitev teh modelov za 1 korakov. Za predhodno usposabljanje uporabljamo GPT2 BPE tokenizer znotraj NeMo in sledimo temu config kot je bil uporabljen v izvirnem modelu. Natančna nastavitev na AWS Trainium zahteva spremembo nekaj parametrov (kot npr faktor delitve velikosti besednjaka), ki so na voljo v skriptih za fino nastavitev, da se prilagodijo razlikam Megatron v primerjavi z NeMo in spremembam GPU v primerjavi z AWS Trainium. Prepustnost porazdeljenega usposabljanja z več vozlišči z različnim številom vozlišč je prikazana v tabeli-1.

Model Tenzorski vzporednik Vzporedni cevovod Število primerkov Cena ($/uro) Dolžina zaporedja Globalna velikost serije Prepustnost (sekv./s) Razmerje med stroški in zmogljivostjo (žetoni/$)
Pitija 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

Tabela 1. Primerjava povprečne prepustnosti modelov GPT NeoX in Pythia za usposabljanje do 500 korakov s spreminjanjem števila vozlišč. The cena 1.32xl trn temelji na 3-letni rezervirani efektivni urni postavki.

Nato ocenimo tudi trajektorijo izgube modela usposabljanja na AWS Trainium in jo primerjamo z ustreznim izvajanjem v gruči P4d (jedra GPU Nvidia A100). Skupaj z izgubo pri vadbi primerjamo tudi uporabne indikatorje, kot je norma gradienta, ki je 2-norma gradientov modela, izračunanih pri vsaki ponovitvi vadbe za spremljanje napredka vadbe. Rezultati usposabljanja so prikazani na sliki 1, 2, fina nastavitev NeoX 20B pa na sliki 3.

Izguba pri usposabljanju je povprečna za vse delavce (levo) in norma gradienta (desno) pri vsakem koraku usposabljanja.

Slika-1. Izguba pri usposabljanju je povprečna za vse delavce (levo) in norma gradienta (desno) pri vsakem koraku usposabljanja. NeoX 20B se usposablja na 4 vozliščih z majhnim naborom podatkov wiki na GPU in Trainiumu z enakimi hiperparametri usposabljanja (velikost globalne serije = 256). GPU uporablja BF16 in privzeto mešano natančnost, medtem ko AWS Trainium uporablja polni BF16 s stohastičnim zaokroževanjem. Normirane trajektorije izgube in gradienta se ujemajo za GPU in AWS Trainium.

Izguba pri usposabljanju je povprečna za vse delavce (levo) in normo gradienta (desno) pri vsakem koraku usposabljanja (Pythia).

Slika-2. Izguba pri usposabljanju je povprečna za vse delavce (levo) in norma gradienta (desno) pri vsakem koraku usposabljanja. Podobno kot GPT NeoX na sliki 1 se Pythia 6.9B usposablja na 4 vozliščih z majhnim naborom podatkov wiki na GPU in Trainiumu z enakimi hiperparametri za usposabljanje (velikost globalne serije = 256). Normirane trajektorije izgube in gradienta se ujemajo za GPE in Trainium.

Model GPT NeoX 20B s fino nastavitvijo na GPU in AWS Trainium s povprečno izgubo treninga za vse delavce (levo) in normo gradienta (desno).

Slika-3. Model GPT NeoX 20B s fino nastavitvijo na GPU in AWS Trainium s povprečno izgubo treninga za vse delavce (levo) in normo gradienta (desno). Za predstavitev natančnega prilagajanja se uporablja majhen nabor podatkov wiki. Normirane trajektorije izgube in gradienta se ujemajo za GPU in AWS Trainium.

V tej objavi smo prikazali stroškovno učinkovito usposabljanje LLM-jev na strojni opremi za globoko učenje AWS. Usposobili smo modela GPT NeoX 20B in Pythia 6.9B na AWS Trn1 s knjižnico Neuron NeMo. Stroškovno normaliziran pretok za 20 milijard modelov z AWS Trainium znaša približno 3.2 milijona žetonov/porabljeni USD. Skupaj s stroškovno učinkovitim usposabljanjem na AWS Trainium pridobimo podobno natančnost modela, kar je razvidno iz izgube koraka pri usposabljanju in trajektorije norme gradienta. Prav tako smo natančno prilagodili razpoložljive kontrolne točke za model NeoX 20B na AWS Trainium. Za dodatne informacije o porazdeljenem usposabljanju z NeMo Megatron na AWS Trainium glejte AWS Neuron Reference za NeMo Megatron. Dober vir za začetek natančnega prilagajanja modela Llama lahko najdete tukaj, Natančna nastavitev Llama2. Če želite začeti uporabljati upravljani AWS Trainium na Amazon SageMaker, Glej Usposobite svoje modele ML z AWS Trainium in Amazon SageMaker.


O avtorjih

Varčnost in natančnost: stroškovno učinkovito usposabljanje modelov GPT NeoX in Pythia z AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Gaurav Gupta je trenutno uporabni znanstvenik v laboratorijih AI Amazon Web Services (AWS). Dr. Gupta je doktoriral na USC Viterbi. Njegovi raziskovalni interesi segajo na področje modeliranja zaporednih podatkov, učenja parcialnih diferencialnih enačb, teorije informacij za strojno učenje, frakcijskih dinamičnih modelov in kompleksnih omrežij. Trenutno se ukvarja z uporabnimi in matematičnimi problemi na področju vedenja pri usposabljanju LLM, modelov vida s PDE, informacijsko-teoretičnih multimodalnih modelov. Dr. Gupta ima objave v vrhunskih revijah/konferencah, kot so Neurips, ICLR, ICML, Nature, IEEE Control Society, ACM cyber-physical Society.

Varčnost in natančnost: stroškovno učinkovito usposabljanje modelov GPT NeoX in Pythia z AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Ben Snyder je uporabni znanstvenik z AWS Deep Learning. Njegovi raziskovalni interesi vključujejo temeljne modele, učenje z okrepitvijo in asinhrono optimizacijo. Zunaj službe uživa v kolesarjenju in kampiranju na podeželju.

Varčnost in natančnost: stroškovno učinkovito usposabljanje modelov GPT NeoX in Pythia z AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Amith (R) Mamidala je višji inženir aplikacij za strojno učenje pri AWS Annapurna Labs. Dr. Mamidala je doktoriral na Ohio State University iz visoko zmogljivega računalništva in komunikacije. Med svojim službovanjem pri raziskavah IBM je dr. Mamidala prispeval k razredu računalnikov BlueGene, ki je pogosto vodil na lestvici Top500 najzmogljivejših in energijsko najučinkovitejših superračunalnikov. Projekt je bil leta 2009 nagrajen z državno medaljo za tehnologijo in inovacije. Po kratkem delu inženirja umetne inteligence v finančnem hedge skladu se je dr. Mamidala pridružila laboratorijem Annapurna, ki se osredotočajo na usposabljanje modelov velikih jezikov.

Varčnost in natančnost: stroškovno učinkovito usposabljanje modelov GPT NeoX in Pythia z AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Jun (Luka) Huan je glavni znanstvenik pri AWS AI Labs. Dr. Huan dela na področju umetne inteligence in podatkovne znanosti. Objavil je več kot 180 recenziranih člankov na vodilnih konferencah in v revijah. Leta 2009 je bil prejemnik nagrade NSF Faculty Early Career Development Award. Preden se je pridružil AWS, je delal pri Baidu Research kot ugleden znanstvenik in vodja Baidu Big Data Laboratory. Ustanovil je StylingAI Inc., start-up z umetno inteligenco, in v letih 2019–2021 delal kot izvršni direktor in glavni znanstvenik. Preden se je pridružil industriji, je bil profesor Charlesa E. in Mary Jane Spahr na oddelku EECS na Univerzi v Kansasu.

Varčnost in natančnost: stroškovno učinkovito usposabljanje modelov GPT NeoX in Pythia z AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Šruti Koparkar je višji vodja trženja izdelkov pri AWS. Strankam pomaga raziskati, oceniti in sprejeti pospešeno računalniško infrastrukturo Amazon EC2 za njihove potrebe strojnega učenja.

Časovni žig:

Več od Strojno učenje AWS