Säästävyys kohtaa tarkkuuden: Kustannustehokas GPT NeoX- ja Pythia-mallien koulutus AWS Trainiumilla | Amazon Web Services

Säästävyys kohtaa tarkkuuden: Kustannustehokas GPT NeoX- ja Pythia-mallien koulutus AWS Trainiumilla | Amazon Web Services

Suurista kielimalleista (tai LLM:istä) on tullut päivittäisten keskustelujen aihe. Niiden nopea omaksuminen näkyy 100 miljoonan käyttäjän saavuttamiseen tarvittavassa ajassa, joka on noussut "4.5 vuotta Facebookissa" kaikkien aikojen alhaisimmalle tasolle, "2 kuukautta ChatGPT:llä". Generatiivinen esikoulutettu muuntaja (GPT) käyttää kausaalisia autoregressiivisiä päivityksiä ennustaakseen. Erilaisten tehtävien, kuten puheentunnistuksen, tekstin luomisen ja kysymyksiin vastaamisen, on osoitettu olevan näiden malliarkkitehtuurien uskomaton suorituskyky. Useita viimeaikaisia ​​malleja, mm Neox, Haukka, liekki käyttää GPT-arkkitehtuuria selkärankana. LLM:ien kouluttaminen vaatii valtavan määrän laskenta-aikaa, joka maksaa miljoonia dollareita. Tässä viestissä teemme yhteenvedon GPT:n koulutusmenettelystä Neox on AWS Trainium, tarkoitukseen rakennettu koneoppimiskiihdytin (ML), joka on optimoitu syvän oppimisen koulutukseen. Selvitämme, kuinka kustannustehokkaasti (3.2 miljoonaa tokenia/$) koulutimme tällaisia ​​malleja AWS Trainiumilla menettämättä mallin laatua.

Ratkaisun yleiskatsaus

GPT NeoX ja Pythia mallit

GPT NeoX ja Pythia ovat Eleuther-AI:n avoimen lähdekoodin kausaalikielimalleja, joissa on noin 20 miljardia parametria NeoX:ssä ja 6.9 miljardia Pythiassa. Molemmat ovat dekooderimalleja, jotka noudattavat samanlaista arkkitehtuuria kuin Chat GPT3. Niissä on kuitenkin myös useita lisäyksiä, jotka ovat myös laajalti käytössä viimeaikaisissa malleissa, kuten Llama. Erityisesti niissä on rotaatio-asentoinen upotus (ROPE), jossa on osittainen pyöriminen pään mittojen yli. Alkuperäiset mallit (NeoX ja Pythia 6.9B) koulutetaan avoimesti saataville Paalun tietojoukko duplikoinnin poistamisen ja Megatronin ja Deepspeed-taustajärjestelmän avulla.

Esittelemme näiden mallien esikoulutusta ja hienosäätöä AWS Trainium -pohjaisissa Trn1-esiintymissä käyttämällä Neuron NeMo kirjasto. Käytämme pienempää Wikipedia-tietojoukon osajoukkoa, joka on tokenoitu GPT2 Byte-pair encoding (BPE) -tokenisaattorilla.

Walkthrough

Lataa valmiiksi tokenoitu Wikipedia-tietojoukko kuvan mukaisesti:

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

Sekä NeoX 20B että Pythia 6.9B käyttävät ROPEa osittaisella kiertoliikkeellä, esimerkiksi pyörittämällä 25 % pään mitoista ja pitämällä loput pyörittämättä. Toteuttaaksemme osittaisen pyörityksen tehokkaasti AWS Trainium -kiihdyttimessä, sen sijaan, että yhdistämme pyörivät ja ei-pyörivät mitat, lisäämme nollataajuuksia ei-pyöriville mitoille ja kierrämme sitten koko sarjan pään mittoja. Tämä yksinkertainen temppu auttoi meitä parantamaan AWS Trainiumin suoritustehoa (sekunnissa käsitellyt sekvenssit).

Harjoittelun vaiheet

Koulutuksen suorittamiseen käytämme SLURM-hallittua monisolmuista Amazon Elastic Compute Cloudia (Amazon EC2) Trn1-klusteri, jossa jokainen solmu sisältää trn1.32xl-ilmentymän. Jokainen trn1.32xl on 16 kiihdytintä ja kaksi työntekijää kiihdytintä kohden. Kun olet ladannut uusimman Neuron NeMo paketti, käytä mukana toimitettua neox ja Pythia esikouluttaa ja hienosäätää komentosarjoja optimoiduilla hyperparametreilla ja suorittaa seuraavat neljän solmun harjoitukselle.

  1. Kääntäminen: Esikäännä malli kolmella harjoitusiteraatiolla luodaksesi ja tallentaaksesi kaaviot:
    sbatch --nodes 4 compile.slurm ./neoX_20B_slurm.sh

  2. Suorita: Suorita harjoitus lataamalla välimuistissa olevat kaaviot ensimmäisistä vaiheista alkaen
    sbatch --nodes 4 run.slurm ./neoX_20B_slurm.sh

  3. Seuraa tuloksia
    tensorboard --logdir=nemo_experiments/megatron_neox

Samat vaiheet on suoritettava Pythia 6.9B -mallin ajossa vaihtamisen kanssa neox_20B_slurm.sh by pythia_6.9B_slurm.sh.

Esiharjoittelu ja hienosäätökokeilut

Esittelemme GPT-NeoX- ja Pythia-mallien esikoulutusta AWS Trainiumilla käyttämällä Neuron NeMo kirjasto 10 1 iteraatiolle ja näytä myös näiden mallien hienosäätö 2 XNUMX askelta varten. Esiharjoitteluun käytämme NeMo:n sisällä olevaa GPTXNUMX BPE -merkkiä ja noudatamme samaa config alkuperäisessä mallissa käytettynä. AWS Trainiumin hienosäätö vaatii muutamien parametrien muuttamisen (esim sanan koon jakotekijä), jotka sisältyvät hienosäätöskripteihin Megatronin ja NeMo-erojen sekä GPU:n ja AWS Trainiumin muutosten huomioon ottamiseksi. Monisolmuinen hajautettu opetuskapasiteetti vaihtelevalla solmumäärällä on esitetty taulukossa-1.

Malli Tensorin rinnakkais Putkilinja yhdensuuntainen Tapausten lukumäärä Hinta ($/tunti) Sekvenssin pituus Globaali eräkoko Suorituskyky (seq/s) Kustannustehosuhde (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

Taulukko 1. GPT NeoX- ja Pythia-mallien keskimääräisen suorituskyvyn vertailu jopa 500 askeleen harjoitteluun muuttuvalla solmumäärällä. The hinta trn1.32xl perustuu 3 vuoden varattuun efektiiviseen tuntihintaan.

Seuraavaksi arvioimme myös AWS Trainiumin mallikoulutuksen menetysrataa ja vertaamme sitä vastaavaan ajoon P4d (Nvidia A100 GPU core) -klusterilla. Harjoitteluhäviön ohella vertaamme myös hyödyllistä indikaattoria, kuten gradienttinormia, joka on 2-normi jokaisessa harjoitusiteraatiossa lasketuista malligradienteista harjoituksen edistymisen seuraamiseksi. Harjoitustulokset näkyvät kuvassa 1, 2 ja NeoX 20B:n hienosäätö kuvassa 3.

Harjoitteluhäviön keskiarvo lasketaan kaikista työntekijöistä (vasemmalla) ja gradientin normista (oikealla) koulutuksessa kussakin vaiheessa.

Kuvio 1. Harjoitteluhäviön keskiarvo lasketaan kaikista työntekijöistä (vasemmalla) ja gradientin normista (oikealla) koulutuksessa kussakin vaiheessa. NeoX 20B on koulutettu 4 solmussa pienellä wiki-tietojoukolla GPU:lla ja Trainiumilla samoilla harjoitushyperparametreilla (globaali eräkoko = 256). GPU käyttää BF16:ta ja oletuksena sekoitettua tarkkuutta, kun taas AWS Trainium käyttää täyttä BF16:ta stokastisella pyöristyksellä. Häviö- ja gradienttinormien liikeradat vastaavat GPU:ta ja AWS Trainiumia.

Harjoitteluhäviön keskiarvo kaikkien työntekijöiden osalta (vasemmalla) ja gradientin normi (oikealla) koulutuksessa kussakin vaiheessa (Pythia).

Kuvio 2. Harjoitteluhäviön keskiarvo lasketaan kaikista työntekijöistä (vasemmalla) ja gradientin normista (oikealla) koulutuksessa kussakin vaiheessa. Samoin kuin GPT NeoX kuvassa 1, Pythia 6.9B on opetettu 4 solmussa pienellä wiki-tietojoukolla GPU:ssa ja Trainiumissa samoilla harjoitushyperparametreilla (globaali eräkoko = 256). Häviö- ja gradienttinormien liikeradat vastaavat GPU:ta ja Trainiumia.

Hienosäätö GPT NeoX 20B -mallia GPU:ssa ja AWS Trainiumissa, jossa harjoitushäviö lasketaan keskiarvoisesti kaikille työntekijöille (vasemmalla) ja gradienttinormilla (oikealla).

Kuvio 3. Hienosäätö GPT NeoX 20B -mallia GPU:ssa ja AWS Trainiumissa, jossa harjoitushäviö lasketaan keskiarvoisesti kaikille työntekijöille (vasemmalla) ja gradienttinormilla (oikealla). Pientä wiki-aineistoa käytetään hienosäätöesittelyyn. Häviö- ja gradienttinormien liikeradat vastaavat GPU:ta ja AWS Trainiumia.

Tässä viestissä näytimme kustannustehokasta LLM-koulutusta AWS-syväoppimislaitteistolla. Koulutimme GPT NeoX 20B- ja Pythia 6.9B -malleja AWS Trn1:llä Neuron NeMo -kirjaston kanssa. Kustannusten normalisoitu läpimeno 20 miljardille mallille AWS Trainiumilla on noin 3.2 miljoonaa tokenia / käytetty dollari. Kustannustehokkaan AWS Trainiumin koulutuksen ohella saamme samanlaisen mallin tarkkuuden, mikä näkyy harjoitusaskeleiden häviössä ja gradienttinormin liikeradassa. Hienosäädimme myös AWS Trainiumin NeoX 20B -mallin käytettävissä olevia tarkistuspisteitä. Lisätietoja jaetusta NeMo Megatronin harjoittelusta AWS Trainium -sovelluksella on osoitteessa AWS Neuron Reference NeMo Megatronille. Hyvä resurssi Llama-mallin hienosäädön aloittamiseen löytyy täältä, Llama2 hienosäätö. Pääset alkuun hallitun AWS Trainiumin käyttöönotolla Amazon Sage MakerKatso Harjoittele ML-mallejasi AWS Trainiumin ja Amazon SageMakerin avulla.


Tietoja Tekijät

Säästävyys kohtaa tarkkuuden: Kustannustehokas GPT NeoX- ja Pythia-mallien koulutus AWS Trainiumilla | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Gaurav Gupta on tällä hetkellä soveltava tutkija Amazon Web Services (AWS) AI Labsissa. Tohtori Gupta valmistui tohtoriksi USC Viterbistä. Hänen tutkimusintressinsä kattavat peräkkäisen datamallinnuksen, osittaisdifferentiaaliyhtälöiden oppimisen, koneoppimisen tietoteorian, dynaamisten murtomallien ja monimutkaisten verkkojen. Hän työskentelee parhaillaan sovellettavien ja matemaattisten ongelmien parissa LLM-harjoittelukäyttäytymisessä, näkemysmalleissa PDE:illä, informaatioteoreettisilla multimodaalisuusmalleilla. Dr. Guptalla on julkaisuja huippulehdissä/konferensseissa, kuten Neurips, ICLR, ICML, Nature, IEEE Control Society, ACM cyber-physical Society.

Säästävyys kohtaa tarkkuuden: Kustannustehokas GPT NeoX- ja Pythia-mallien koulutus AWS Trainiumilla | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Ben Snyder on AWS Deep Learning -tutkija. Hänen tutkimusalueitaan ovat perusmallit, vahvistusoppiminen ja asynkroninen optimointi. Työn ulkopuolella hän harrastaa pyöräilyä ja retkeilyä.

Säästävyys kohtaa tarkkuuden: Kustannustehokas GPT NeoX- ja Pythia-mallien koulutus AWS Trainiumilla | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Amith (R) Mamidala on vanhempi koneoppimissovellussuunnittelu AWS Annapurna Labsissa. Tohtori Mamidala valmistui tohtoriksi Ohion osavaltion yliopistossa korkean suorituskyvyn tietojenkäsittelystä ja viestinnästä. IBM:n tutkimuksessa toimiessaan tohtori Mamidala osallistui BlueGene-tietokoneiden luokkaan, joka usein johti Top500-listaa tehokkaimmista ja energiatehokkaimmista supertietokoneista. Hanke palkittiin 2009 teknologian ja innovaation kansallisella mitalilla. Lyhyen työskentelyn jälkeen tekoälyinsinöörinä rahoitusalan hedge-rahastossa, tohtori Mamidala liittyi Annapurnan laboratorioihin keskittyen Large Language -mallikoulutukseen.

Säästävyys kohtaa tarkkuuden: Kustannustehokas GPT NeoX- ja Pythia-mallien koulutus AWS Trainiumilla | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Jun (Luke) Huan on AWS AI Labsin johtava tutkija. Dr. Huan työskentelee tekoälyn ja tietotieteen parissa. Hän on julkaissut yli 180 vertaisarvioitua artikkelia johtavissa konferensseissa ja aikakauslehdissä. Hän sai NSF Faculty Early Career Development Award -palkinnon vuonna 2009. Ennen AWS:ään liittymistään hän työskenteli Baidu-tutkimuksessa ansioituneena tutkijana ja Baidu Big Data Laboratoryn johtajana. Hän perusti StylingAI Inc:n, tekoälystart-up-yrityksen, ja työskenteli toimitusjohtajana ja päätutkijana vuosina 2019-2021. Ennen teollisuuteen siirtymistään hän oli Charles E. ja Mary Jane Spahrin professori Kansasin yliopiston EECS-osastolla.

Säästävyys kohtaa tarkkuuden: Kustannustehokas GPT NeoX- ja Pythia-mallien koulutus AWS Trainiumilla | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Shruti Koparkar on AWS:n tuotemarkkinointipäällikkö. Hän auttaa asiakkaita tutkimaan, arvioimaan ja ottamaan käyttöön Amazon EC2:n nopeutetun laskentainfrastruktuurin koneoppimistarpeisiinsa.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen