Sparsomhet møter nøyaktighet: Kostnadseffektiv opplæring av GPT NeoX- og Pythia-modeller med AWS Trainium | Amazon Web Services

Sparsomhet møter nøyaktighet: Kostnadseffektiv opplæring av GPT NeoX- og Pythia-modeller med AWS Trainium | Amazon Web Services

Store språkmodeller (eller LLM) har blitt et tema for daglige samtaler. Deres raske adopsjon er tydelig av hvor lang tid det tar å nå 100 millioner brukere, som har gått fra "4.5 år av facebook" til et rekordlavt nivå på bare "2 måneder av ChatGPT." En generativ forhåndstrent transformator (GPT) bruker kausale autoregressive oppdateringer for å forutsi. En rekke oppgaver som talegjenkjenning, tekstgenerering og spørsmålssvar viser seg å ha enestående ytelse av disse modellarkitekturene. Flere nyere modeller som f.eks NEOX, Falcon, Llama bruke GPT-arkitekturen som ryggrad. Trening av LLM krever kolossal mengde beregningstid, som koster millioner av dollar. I dette innlegget vil vi oppsummere opplæringsprosedyren for GPT NEOX on AWS Trainium, en spesialbygd maskinlæringsakselerator (ML) optimalisert for dyp læringstrening. Vi skal skissere hvordan vi kostnadseffektivt (3.2 M tokens/$) trente slike modeller med AWS Trainium uten å miste noen modellkvalitet.

Løsningsoversikt

GPT NeoX og Pythia-modeller

GPT NeoX og Pythia er åpen kildekode årsaksspråkmodeller av Eleuther-AI med omtrent 20 milliarder parametere i NeoX og 6.9 milliarder i Pythia. Begge er dekodermodeller som følger lignende arkitektonisk design som Chat GPT3. Imidlertid har de også flere tillegg, som også er mye brukt i de nyere modellene som Llama. Spesielt har de rotasjonsposisjonell embedding (ROPE) med delvis rotasjon over hodedimensjoner. De originale modellene (NeoX og Pythia 6.9B) er opplært på åpent tilgjengelig Pile datasett med deduplisering og bruk av Megatron og Deepspeed backend.

Vi demonstrerer forhåndstrening og finjustering av disse modellene på AWS Trainium-baserte Trn1-forekomster ved å bruke Nevron NeMo bibliotek. For å etablere proof-of-concept og rask reproduksjon, bruker vi et mindre Wikipedia datasett undersett tokenisert ved hjelp av GPT2 Byte-pair encoding (BPE) tokenizer.

walkthrough

Last ned det forhåndstokeniserte Wikipedia-datasettet som vist:

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

Både NeoX 20B og Pythia 6.9B bruker ROPE med delvis rotasjon, for eksempel roterer 25 % av hodedimensjonene og holder resten urotert. For å effektivt implementere den delvise rotasjonen på AWS Trainium-akselerator, i stedet for å sette sammen de roterende og ikke-roterende dimensjonene, legger vi til null frekvenser for ikke-roterende dimensjoner og roterer deretter hele settet med hodedimensjoner. Dette enkle trikset hjalp oss med å forbedre gjennomstrømningen (sekvenser behandlet per sekund) på AWS Trainium.

Treningstrinn

For å gjennomføre opplæringen bruker vi SLURM administrert multi-node Amazon Elastic Compute Cloud (Amazon EC2) Trn1-klynge, med hver node som inneholder en trn1.32xl-forekomst. Hver trn1.32xl har 16 akseleratorer med to arbeidere per akselerator. Etter å ha lastet ned den nyeste Nevron NeMo pakken, bruk den medfølgende neox og pythia forhåndstrening og finjustering av skript med optimaliserte hyperparametere og utfør følgende for en trening med fire noder.

  1. Kompiler: Forhåndskompiler modellen med tre togiterasjoner for å generere og lagre grafene:
    sbatch --nodes 4 compile.slurm ./neoX_20B_slurm.sh

  2. Løp: Utfør treningen ved å laste de hurtigbufrede grafene fra de første trinnene
    sbatch --nodes 4 run.slurm ./neoX_20B_slurm.sh

  3. Overvåk resultatene
    tensorboard --logdir=nemo_experiments/megatron_neox

De samme trinnene må følges for å kjøre Pythia 6.9B-modellen med utskifting neox_20B_slurm.sh by pythia_6.9B_slurm.sh.

Førtrening og finjustering av eksperimenter

Vi demonstrerer forhåndstrening av GPT-NeoX- og Pythia-modeller på AWS Trainium ved hjelp av Nevron NeMo bibliotek for 10k iterasjoner, og viser også finjustering av disse modellene for 1k trinn. For førtrening bruker vi GPT2 BPE-tokenizer inne i NeMo og følger samme config som brukt i originalmodellen. Finjustering på AWS Trainium krever endring av få parametere (som f.eks vokab størrelsesdivisjonsfaktor), som er gitt i finjusteringsskriptene for å imøtekomme Megatron versus NeMo-forskjeller og GPU versus AWS Trainium endringer. Den multi-node distribuerte treningsgjennomstrømningen med varierende antall noder er vist i tabell-1.

Modell Tensor parallell Rørledning parallell Antall forekomster Kostnad ($/time) Sekvenslengde Global batchstørrelse Gjennomstrømning (sek/sek) Kostnadsgjennomstrømningsforhold (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

Tabell 1. Sammenligning av gjennomsnittlig gjennomstrømning av GPT NeoX- og Pythia-modeller for å trene opptil 500 trinn med skiftende antall noder. De prissetting av trn1.32xl er basert på 3-års reservert effektiv timepris.

Deretter evaluerer vi også tapsbanen til modelltreningen på AWS Trainium og sammenligner den med den tilsvarende kjøringen på en P4d (Nvidia A100 GPU-kjerner)-klynge. Sammen med treningstapet sammenligner vi også nyttige indikatorer som gradientnorm, som er 2-normen av modellgradientene beregnet ved hver treningsiterasjon for å overvåke treningsfremgangen. Treningsresultatene er vist i figur-1, 2 og finjustering av NeoX 20B i figur-3.

Opplæringstap i gjennomsnitt for alle arbeidere (venstre) og gradientnorm (høyre) ved trening hvert trinn.

Figur 1. Gjennomsnittlig treningstap for alle arbeidere (venstre) og gradientnorm (høyre) ved trening hvert trinn. NeoX 20B er trent på 4 noder med lite wiki-datasett på GPU og Trainium med samme treningshyper-parametre (global batchstørrelse=256). GPU bruker BF16 og standard blandet presisjon mens AWS Trainium bruker full BF16 med stokastisk avrunding. Taps- og gradientnormbanene samsvarer med GPU og AWS Trainium.

Gjennomsnittlig treningstap for alle arbeidere (venstre) og gradientnorm (høyre) ved trening hvert trinn (Pythia).

Figur 2. Opplæringstap i gjennomsnitt for alle arbeidere (venstre) og gradientnorm (høyre) ved trening hvert trinn. I likhet med GPT NeoX i figur-1, er Pythia 6.9B trent på 4 noder med lite wiki-datasett på GPU og Trainium med samme treningshyper-parametre (global batchstørrelse=256). Taps- og gradientnormbanene samsvarer for GPU og Trainium.

Finjustering av GPT NeoX 20B-modellen på GPU og AWS Trainium med gjennomsnittlig treningstap på tvers av alle arbeidere (venstre) og gradientnorm (høyre).

Figur 3. Finjustering av GPT NeoX 20B-modellen på GPU og AWS Trainium med gjennomsnittlig treningstap på tvers av alle arbeidere (venstre) og gradientnorm (høyre). Et lite wiki-datasett brukes til å finjustere demonstrasjonen. Taps- og gradientnormbanene samsvarer med GPU og AWS Trainium.

I dette innlegget viste vi kostnadseffektiv opplæring av LLM-er på AWS dyplæringsmaskinvare. Vi trente GPT NeoX 20B og Pythia 6.9B-modeller på AWS Trn1 med Neuron NeMo-bibliotek. Den kostnadsnormaliserte gjennomstrømningen for 20 milliarder modeller med AWS Trainium er rundt 3.2 millioner tokens/$ brukt. Sammen med kostnadseffektiv opplæring på AWS Trainium, oppnår vi lignende modellnøyaktighet, noe som er tydelig fra treningstrinnstap og gradientnormbane. Vi har også finjustert de tilgjengelige sjekkpunktene for NeoX 20B-modellen på AWS Trainium. For ytterligere informasjon om distribuert opplæring med NeMo Megatron på AWS Trainium, se AWS Neuron Reference for NeMo Megatron. En god ressurs for å starte finjustering av Llama-modellen kan bli funnet her, Lama2 finjustering. For å komme i gang med administrert AWS Trainium på Amazon SageMaker, Se Tren ML-modellene dine med AWS Trainium og Amazon SageMaker.


Om forfatterne

Sparsomhet møter nøyaktighet: Kostnadseffektiv opplæring av GPT NeoX- og Pythia-modeller med AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Gaurav Gupta er for tiden en Applied Scientist ved Amazon Web Services (AWS) AI-laboratorier. Dr. Gupta fullførte sin doktorgrad fra USC Viterbi. Hans forskningsinteresser spenner over domenet sekvensiell datamodellering, læring av partielle differensialligninger, informasjonsteori for maskinlæring, fraksjonelle dynamiske modeller og komplekse nettverk. Han jobber for tiden med anvendte og matematiske problemer på LLMs treningsatferd, visjonsmodeller med PDE, informasjonsteoretiske multimodalitetsmodeller. Dr. Gupta har publikasjoner i topptidsskrifter/konferanser som Neurips, ICLR, ICML, Nature, IEEE Control Society, ACM cyber-physical society.

Sparsomhet møter nøyaktighet: Kostnadseffektiv opplæring av GPT NeoX- og Pythia-modeller med AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Ben Snyder er en anvendt vitenskapsmann med AWS Deep Learning. Hans forskningsinteresser inkluderer grunnleggende modeller, forsterkende læring og asynkron optimalisering. Utenom jobben liker han å sykle og campe i terrenget.

Sparsomhet møter nøyaktighet: Kostnadseffektiv opplæring av GPT NeoX- og Pythia-modeller med AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Amith (R) Mamidala er senior maskinlæringsapplikasjonsingeniør ved AWS Annapurna Labs. Dr. Mamidala fullførte sin doktorgrad ved Ohio State University i høyytelses databehandling og kommunikasjon. I løpet av sin stilling hos IBM Research, bidro Dr. Mamidala til BlueGene-klassen av datamaskiner som ofte ledet Top500-rangeringen av de kraftigste og mest strømeffektive superdatamaskinene. Prosjektet ble tildelt 2009 National Medal of Technology and Innovation. Etter en kort periode som AI-ingeniør i et finansielt hedgefond, begynte Dr. Mamidala i Annapurna-laboratoriene med fokus på opplæring i store språkmodeller.

Sparsomhet møter nøyaktighet: Kostnadseffektiv opplæring av GPT NeoX- og Pythia-modeller med AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Jun (Luke) Huan er hovedforsker ved AWS AI Labs. Dr. Huan jobber med kunstig intelligens og datavitenskap. Han har publisert mer enn 180 fagfellevurderte artikler i ledende konferanser og tidsskrifter. Han var mottaker av NSF Fakultetets Early Career Development Award i 2009. Før han begynte i AWS, jobbet han ved Baidu Research som en fremtredende vitenskapsmann og leder av Baidu Big Data Laboratory. Han grunnla StylingAI Inc., en AI-oppstart, og jobbet som administrerende direktør og Chief Scientist i 2019-2021. Før han begynte i industrien, var han professor i Charles E. og Mary Jane Spahr ved EECS-avdelingen ved University of Kansas.

Sparsomhet møter nøyaktighet: Kostnadseffektiv opplæring av GPT NeoX- og Pythia-modeller med AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.Shruti Koparkar er Senior Product Marketing Manager hos AWS. Hun hjelper kunder med å utforske, evaluere og ta i bruk Amazon EC2 akselerert databehandlingsinfrastruktur for deres maskinlæringsbehov.

Tidstempel:

Mer fra AWS maskinlæring