Sparsommelighed møder nøjagtighed: Omkostningseffektiv træning af GPT NeoX- og Pythia-modeller med AWS Trainium | Amazon Web Services

Sparsommelighed møder nøjagtighed: Omkostningseffektiv træning af GPT NeoX- og Pythia-modeller med AWS Trainium | Amazon Web Services

Store sprogmodeller (eller LLM'er) er blevet et emne for daglige samtaler. Deres hurtige adoption er tydelig af den tid, der kræves for at nå 100 millioner brugere, som er gået fra "4.5 år af facebook" til et rekordlavt niveau på blot "2 måneder af ChatGPT." En generativ præ-trænet transformer (GPT) bruger kausale autoregressive opdateringer til at foretage forudsigelse. Forskellige opgaver såsom talegenkendelse, tekstgenerering og besvarelse af spørgsmål viser sig at have en fantastisk ydeevne af disse modelarkitekturer. Flere nyere modeller som f.eks Neox, Falcon, Llama bruge GPT-arkitekturen som rygrad. Træning af LLM'er kræver kolossal mængde regnetid, hvilket koster millioner af dollars. I dette indlæg vil vi opsummere træningsproceduren for GPT Neox on AWS Trainium, en specialbygget maskinlæringsaccelerator (ML) optimeret til dyb læringstræning. Vi vil skitsere, hvordan vi omkostningseffektivt (3.2 M tokens/$) trænede sådanne modeller med AWS Trainium uden at miste nogen modelkvalitet.

Løsningsoversigt

GPT NeoX og Pythia modeller

GPT NeoX , Pythia er open source kausale sprogmodeller af Eleuther-AI med cirka 20 milliarder parametre i NeoX og 6.9 milliarder i Pythia. Begge er dekodermodeller, der følger lignende arkitektonisk design som Chat GPT3. De har dog også flere tilføjelser, som også er bredt brugt i de nyere modeller såsom Llama. De har især rotationspositionel indlejring (ROPE) med delvis rotation på tværs af hoveddimensioner. De originale modeller (NeoX og Pythia 6.9B) er uddannet på åbent tilgængelige Bunkedatasæt med deduplikering og brug af Megatron og Deepspeed backend.

Vi demonstrerer fortræning og finjustering af disse modeller på AWS Trainium-baserede Trn1-instanser ved hjælp af Neuron NeMo bibliotek. For at etablere proof-of-concept og hurtig reproduktion, vil vi bruge et mindre Wikipedia-datasæt undersæt tokeniseret ved hjælp af GPT2 Byte-pair encoding (BPE) tokenizer.

Går igennem

Download det præ-tokeniserede Wikipedia-datasæt 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 bruger ROPE med delvis rotation, f.eks. roterer 25% af hovedets dimensioner og holder resten uroteret. For effektivt at implementere den delvise rotation på AWS Trainium accelerator, i stedet for at sammenkæde de roterende og ikke-roterende dimensioner, tilføjer vi nul frekvenser for ikke-roterende dimensioner og roterer derefter det komplette sæt af hoveddimensioner. Dette enkle trick hjalp os med at forbedre gennemløbet (sekvenser behandlet pr. sek.) på AWS Trainium.

Træningstrin

Til at køre træningen bruger vi SLURM-administreret multi-node Amazon Elastic Compute Cloud (Amazon EC2) Trn1-klynge, hvor hver node indeholder en trn1.32xl-instans. Hver trn1.32xl har 16 acceleratorer med to arbejdere pr. accelerator. Efter at have downloadet den seneste Neuron NeMo pakke, brug den medfølgende neox , Pythia fortræning og finjustering af scripts med optimerede hyperparametre og udfør følgende for en træning med fire knudepunkter.

  1. Kompiler: Forkompiler modellen med tre togiterationer for at generere og gemme graferne:
    sbatch --nodes 4 compile.slurm ./neoX_20B_slurm.sh

  2. Kør: Udfør træningen ved at indlæse de cachelagrede grafer fra de første trin
    sbatch --nodes 4 run.slurm ./neoX_20B_slurm.sh

  3. Overvåg resultater
    tensorboard --logdir=nemo_experiments/megatron_neox

De samme trin skal følges for at køre Pythia 6.9B-modellen med udskiftning neox_20B_slurm.sh by pythia_6.9B_slurm.sh.

Fortræning og finjustering af eksperimenter

Vi demonstrerer fortræningen af ​​GPT-NeoX- og Pythia-modeller på AWS Trainium vha. Neuron NeMo bibliotek til 10k iterationer, og viser også finjustering af disse modeller for 1k trin. Til fortræning bruger vi GPT2 BPE tokenizer inde i NeMo og følger samme config som brugt i den originale model. Finjustering på AWS Trainium kræver ændring af få parametre (såsom vocab størrelse division faktor), som findes i finjusteringsscripts for at tage højde for Megatron versus NeMo forskelle og GPU versus AWS Trainium ændringer. Den multi-node distribuerede træningsgennemstrømning med varierende antal noder er vist i tabel-1.

Model Tensor parallel Rørledning parallel Antal forekomster Pris ($/time) Sekvenslængde Global batchstørrelse Gennemløb (sek/sek.) Omkostnings-gennemstrø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

Tabel 1. Sammenligning af middelgennemstrømning af GPT NeoX- og Pythia-modeller til træning op til 500 trin med skiftende antal noder. Det prisfastsættelse af trn1.32xl er baseret på den 3-årige reserverede effektive timesats.

Dernæst evaluerer vi også tabsbanen for modeltræningen på AWS Trainium og sammenligner den med den tilsvarende kørsel på en P4d (Nvidia A100 GPU-kerner) klynge. Sammen med træningstabet sammenligner vi også nyttige indikatorer såsom gradientnorm, som er 2-norm af modelgradienterne beregnet ved hver træningsiteration for at overvåge træningsfremskridtet. Træningsresultaterne er vist i figur-1, 2 og finjustering af NeoX 20B i figur-3.

Træningstab i gennemsnit på tværs af alle arbejdere (venstre) og gradientnorm (højre) ved træning hvert trin.

Figur 1. Træningstab i gennemsnit på tværs af alle arbejdere (venstre) og gradientnorm (højre) ved træning hvert trin. NeoX 20B trænes på 4 noder med lille wiki-datasæt på GPU og Trainium med samme træningshyper-parametre (global batchstørrelse=256). GPU bruger BF16 og standard blandet præcision, mens AWS Trainium bruger fuld BF16 med stokastisk afrunding. Tabs- og gradientnormbanerne passer til GPU og AWS Trainium.

Træningstab i gennemsnit på tværs af alle arbejdere (venstre) og gradientnorm (højre) ved træning hvert trin (Pythia).

Figur 2. Træningstab i gennemsnit på tværs af alle arbejdere (venstre) og gradientnorm (højre) ved træning hvert trin. I lighed med GPT NeoX i figur-1 trænes Pythia 6.9B på 4 noder med lille wiki-datasæt på GPU og Trainium med samme træningshyper-parametre (global batchstørrelse=256). Tabs- og gradientnormbanerne passer til GPU og Trainium.

Finjustering af GPT NeoX 20B-model på GPU og AWS Trainium med træningstab i gennemsnit på tværs af alle arbejdere (venstre) og gradientnorm (højre).

Figur 3. Finjustering af GPT NeoX 20B-model på GPU og AWS Trainium med træningstab i gennemsnit på tværs af alle arbejdere (venstre) og gradientnorm (højre). Et lille wiki-datasæt bruges til at finjustere demonstrationen. Tabs- og gradientnormbanerne passer til GPU og AWS Trainium.

I dette indlæg viste vi omkostningseffektiv træning af LLM'er på AWS deep learning hardware. Vi trænede GPT NeoX 20B og Pythia 6.9B modeller på AWS Trn1 med Neuron NeMo bibliotek. Den omkostningsnormaliserede gennemstrømning for 20 milliarder modeller med AWS Trainium er omkring 3.2 millioner tokens/$ brugt. Sammen med omkostningseffektiv træning på AWS Trainium opnår vi lignende modelnøjagtighed, hvilket fremgår af træningstrintab og gradientnormbane. Vi har også finjusteret de tilgængelige kontrolpunkter for NeoX 20B-modellen på AWS Trainium. For yderligere information om den distribuerede træning med NeMo Megatron på AWS Trainium, se AWS Neuron Reference for NeMo Megatron. En god ressource til at starte finjustering af Llama-modellen kan findes her, Lama2 finjustering. For at komme i gang med administreret AWS Trainium på Amazon SageMakerSe Træn dine ML-modeller med AWS Trainium og Amazon SageMaker.


Om forfatterne

Sparsommelighed møder nøjagtighed: Omkostningseffektiv træning af GPT NeoX- og Pythia-modeller med AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Gaurav Gupta er i øjeblikket en Applied Scientist ved Amazon Web Services (AWS) AI-laboratorier. Dr. Gupta afsluttede sin ph.d. fra USC Viterbi. Hans forskningsinteresser spænder over området sekventiel datamodellering, indlæring af partielle differentialligninger, informationsteori til maskinlæring, fraktionelle dynamiske modeller og komplekse netværk. Han arbejder i øjeblikket på anvendte og matematiske problemer på LLMs træningsadfærd, visionsmodeller med PDE'er, informationsteoretiske multimodalitetsmodeller. Dr. Gupta har publikationer i toptidsskrifter/konferencer som Neurips, ICLR, ICML, Nature, IEEE Control Society, ACM cyber-fysiske samfund.

Sparsommelighed møder nøjagtighed: Omkostningseffektiv træning af GPT NeoX- og Pythia-modeller med AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Ben Snyder er anvendt videnskabsmand med AWS Deep Learning. Hans forskningsinteresser omfatter grundlæggende modeller, forstærkningslæring og asynkron optimering. Uden for arbejdet nyder han at cykle og campere.

Sparsommelighed møder nøjagtighed: Omkostningseffektiv træning af GPT NeoX- og Pythia-modeller med AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Amith (R) Mamidala er senior maskinlæringsapplikationsingeniør hos AWS Annapurna Labs. Dr. Mamidala afsluttede sin ph.d.-grad ved Ohio State University i højtydende databehandling og kommunikation. Under sin embedsperiode hos IBM Research bidrog Dr. Mamidala til BlueGene-klassen af ​​computere, som ofte førte Top500-ranglisten over de mest kraftfulde og strømeffektive supercomputere. Projektet blev tildelt 2009 National Medal of Technology and Innovation. Efter et kort ophold som AI-ingeniør hos en finansiel hedgefond, sluttede Dr. Mamidala sig til Annapurna-laboratoriet med fokus på modeltræning i store sprog.

Sparsommelighed møder nøjagtighed: Omkostningseffektiv træning af GPT NeoX- og Pythia-modeller med AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Jun (Luke) Huan er hovedforsker ved AWS AI Labs. Dr. Huan arbejder med kunstig intelligens og datavidenskab. Han har udgivet mere end 180 peer-reviewede artikler i førende konferencer og tidsskrifter. Han modtog NSF Fakultetets Early Career Development Award i 2009. Før han kom til AWS, arbejdede han ved Baidu Research som en fremtrædende videnskabsmand og leder af Baidu Big Data Laboratory. Han grundlagde StylingAI Inc., en AI-start-up, og arbejdede som CEO og Chief Scientist i 2019-2021. Før han kom til industrien, var han professor i Charles E. og Mary Jane Spahr i EECS-afdelingen ved University of Kansas.

Sparsommelighed møder nøjagtighed: Omkostningseffektiv træning af GPT NeoX- og Pythia-modeller med AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Shruti Koparkar er Senior Product Marketing Manager hos AWS. Hun hjælper kunder med at udforske, evaluere og anvende Amazon EC2 accelereret computerinfrastruktur til deres maskinlæringsbehov.

Tidsstempel:

Mere fra AWS maskinindlæring