Kuinka Amazon Search M5 säästi 30 % LLM-koulutuskustannuksista käyttämällä AWS Trainium | Amazon Web Services

Kuinka Amazon Search M5 säästi 30 % LLM-koulutuskustannuksista käyttämällä AWS Trainium | Amazon Web Services

Amazon on vuosikymmeniä ollut edelläkävijä ja innovoinut koneoppimista (ML) ja tuonut asiakkailleen ilahduttavia kokemuksia. Amazon on alusta lähtien käyttänyt ML:ää erilaisiin käyttötapauksiin, kuten kirjasuosituksiin, hakuun ja petosten havaitsemiseen. Kuten muuallakin teollisuudessa, kiihdytettyjen laitteistojen kehitys on antanut Amazon-tiimille mahdollisuuden harjoittaa malliarkkitehtuuria käyttämällä hermoverkkoja ja syväoppimista (DL).

Amazon Searchin M5-ohjelma omistaa Amazonin löytöoppimisstrategian ja rakentaa laajan mittakaavan malleja monikielisille, monikielisille, useille kokonaisuuksille, moniajoille ja multimodaalisille, kuten tekstille, kuvalle ja videolle. M5-ohjelma on tarjonnut universaaleja upotuksia ja laajamittaisia ​​perustusmalleja sadoille ML-tiimeille kaikkialla Amazonissa, samalla kun se on ylläpitänyt tiukkaa kustannusten optimointia. Tämän saavuttamiseksi M5-tiimi arvioi säännöllisesti uusia tekniikoita kustannusten vähentämiseksi.

Kuten monet ML-organisaatiot, kiihdyttimiä käytetään suurelta osin DL-koulutuksen ja johtopäätösten nopeuttamiseen. Kun AWS lanseerasi tarkoitukseen rakennetut kiihdytit ensimmäisellä julkaisulla AWS Inferencia Vuonna 2020 M5-tiimi alkoi nopeasti hyödyntää niitä tuotantotyökuormien tehokkaampaan käyttöönottamiseksi, mikä säästää sekä kustannuksia että vähentää viivettä. Viime vuonna AWS lanseerasi sen AWS Trainium kiihdyttimiä, jotka optimoivat suorituskyvyn kustannuskohtaisesti seuraavan sukupolven DL-mallien kehittämisessä ja rakentamisessa. Tässä viestissä keskustelemme siitä, kuinka M5 pystyi alentamaan malliensa koulutuksen kustannuksia 30 prosentilla, ja jaamme joitakin parhaista käytännöistä, joita opimme matkan varrella.

Trainium-esimerkkejä

Tarkoituksenmukaisten kiihdytinten edistymisen myötä Amazon tarjoaa myös vakuuttavia kiihdyttimiä AWS Inferentian ja Trainiumin muodossa. Kuten niiden nimet antavat ymmärtää, nämä sirut on optimoitu ylittämään päättely- ja harjoitustyökuormituksen tarpeet. Trainium miljardeja parametreja saavuttavien perusmallien laajamittaiseen koulutukseen Trn1 ja Trn1n esiintymät ovat ihanteellisia valintoja ominaisuuksiensa vuoksi. Trn1-instanssit saavat virtansa viimeisimmästä tekniikasta NeuronCore-v2, ja niissä on runsaasti kiihdytinlaskentaa ja muistia. Trn1n-instanssit voidaan valita myös suuremmalle verkon kaistanleveydelle (1,600 XNUMX Gbs), joten ne sopivat ihanteellisesti suorituskykyiseen koulutukseen kustannusten optimointia ajatellen.

Jotta voit käyttää kiihdyttimiä, tarvitset niitä tukevan ohjelmistokerroksen. Trn- ja Inf-sirujen avulla AWS Neuron SDK avaa Amazonin tarkoitukseen rakennetut kiihdyttimet PyTorch XLA:n avulla. PyTorch XLA muuntaa PyTorchin innokkaan tilan laiskatilan kaaviopohjaiseksi toteutukseksi. Näitä kaavioita käytetään sitten ja käännetään edelleen käytettäviksi kiihdyttimen kanssa. PyTorch Neuron (osa Neuron SDK:ta) antaa PyTorch-käyttäjille mahdollisuuden kouluttaa mallejaan Trainium NeuronCoresin avulla muutaman koodirivin avulla.

Malli ja työmäärä

M5-tiimi kouluttaa ja ottaa käyttöön perustavanlaatuisia malleja ja universaaleja esityksiä auttaakseen eri tiimejä eri puolilla Amazonia tuomaan iloa Amazon.com Asiakkaat. Yksi tällainen malli on tekstienkooderimalli, jota seuraa monikerroksinen perceptroni (MLP), jossa on eksplisiittiset tai implisiittiset ominaisuusvuorovaikutukset, jotka määritellään hermoverkkoarkkitehtuurin ja satojen miljoonien koulutettavien parametrien avulla. Tämä malli on koulutettu miljardeihin tunnuksiin, ja sitä käytetään miljoonien upotusten luomiseen offline-eräpäättelyasetuksessa. Nämä upotukset ovat syötteitä asiakkaille suunnattuun Tier-1 Amazon -palveluun.

Tuotantoputken infrastruktuuria käytetään AWS-erä with oikeudenmukaisen jaon jonotusstrategiat, käyttämällä EFA-yhteensopivaa monisolmun trn1.32xlarge-klusteria mallikoulutuksen laskentana. Toiminnallisesti tuotantoputki suorittaa asteittaista mallin koulutusta, opetetun mallin arviointia ja offline-eräpäätelmiä koulutetulle mallille käyttäen PyTorchia taustalla olevana DL-kirjastona.

Tavoitteet

Asiakkaidemme ilahduttaminen on ykkösperiaate. Koska putkilinja on asiakaslähtöinen, on tärkeää, että kaikki palvelutason sopimukset (SLA) täytetään ilman regressioita. Määritimme kaksi kriittistä hyväksymiskriteeriä nykyisen grafiikkasuorittimen tuotantoprosessin mukauttamiseksi ja sen siirtämiseksi Trainiumiin:

  • Mallin laatu – Mallien laatu vaikuttaa suoraan asiakaskokemukseen. Edellytämme, että mallin laadussa GPU:n ja Trainiumin välillä on oltava alle 0.1 % eroa.
  • Harjoittelun suorituskyky – Koulutamme mallejamme säännöllisin väliajoin tarjotaksemme tuoreimman kokemuksen asiakkaillemme. Edellytämme, että mallien konvergenssi on saavutettava ennalta määritetyn ajanjakson (kuten 1 viikon) kuluessa, jotta voimme täyttää tuotannon palvelutasosopimusmme.

Seuraavissa osioissa jaamme työmatkamme tästä kriteeristä taaksepäin ja oppimistamme Amazonin mittakaavan tuotantokuormien tukemiseksi.

Harjoitteluohjelma

Ennen mallikoulutuksen aloittamista meidän on tehtävä koulutusskriptiin muutoksia, jotta se olisi XLA-yhteensopiva. Mallin koon vuoksi käytämme hajautettua rinnakkaista dataa (DDP) mallin harjoittamiseen. DDP:n avulla voimme lisätä mallikoulutuksen suorituskykyä lisäämällä mallikoulutukseen käytettävien koneiden määrää ilman koodimuutoksia. Noudatimme julkaisussa annettuja ohjeita Neuron PyTorch MLP -koulutuksen opetusohjelma lisätäksesi XLA-spesifisiä rakenteita harjoitusskripteihimme. Nämä koodimuutokset on helppo toteuttaa. Seuraavassa on joitain merkittäviä teknisiä oppeja harjoituksesta, jotka paransivat huomattavasti mallimme suorituskykyä:

  • Xm.mark_step() - xm.mark_step() kokoaa ja ajaa laiskasti kerätyt laskentakaaviot. Kutsuminen mark_step liian monta kertaa johtaa suurempaan määrään pieniä kaavioita, kun taas sen käyttäminen liian harvoin johtaa harvoihin, mutta suuriin kaavioihin. Sovelluksestasi riippuen mallikoulutuksesi suorituskyky ja toteutus vaihtelevat sijoituksesi mukaan xm.mark_step(). Käyttöönottomme on yksi xm.mark_step() eteenpäin- ja taaksepäin-ajon jälkeen ja yksi optimointivaiheen jälkeen.
  • Dataloader-kääre XLA-moniprosessointilaitelataimella – Tämä on kriittinen askel, joka voidaan helposti missata. Monikäsittelylaitteiden latausohjelma torch_xla.distributed.parallel_loader.MpDeviceLoader lataa harjoitustiedot jokaiselle XLA-laitteelle, jossa on vaihtoehtoja esiladata ja limittää tietojen lataus laiteajojen kanssa suorituskyvyn parantamiseksi. Myös laitelataaja kutsuu xm.mark_step() ja pystyy siksi rakentamaan kaavioita tietojen lataamiseksi laitteelle isännästä.

Kokoelma Trainiumille

Perinteisesti mallin kehityssykli GPU:illa sisältää muutosten tekemisen malliin tai harjoitusskriptiin ja sen suorittamisen suoraan GPU-laitteessa. XLA:ta käyttävät kiihdyttimet, kuten Trainium, vaativat lisävaiheen ennen kuin malliharjoittelu voidaan ajaa kaasupolkimella. XLA-laskentakaavioita voidaan ajaa vasta sen jälkeen, kun ne on käännetty. Yleensä on kaksi tapaa suorittaa tämä käännös: Ahead of Time (AOT), jossa jäljität ja käännät ensin kaikki kaaviot ja suoritat ne, tai Just In Time (JIT), jossa kaavioita jäljitetään, käännetään ja ajetaan sellaisina kuin ne. kohdataan. Neuron SDK tarjoaa nämä molemmat valmiina. Tyypillisesti AOT-käännös suoritetaan ensin. Kaaviot ajetaan sitten tämän kokoamisen jälkeen. Jos uusia kaavioita havaitaan, Neuron-ajonaika kutsuu JIT-kokoelman ennen niiden suorittamista. Neuron SDK tarjoaa AOT-kokoelman suorittamiseen neuron_parallel_compile, käännösapuohjelma, joka poimii kaavioita harjoituskomentosarjan koekäytöstä ja suorittaa rinnakkaisen AOT-käännöksen.

Tärkeä näkökohta AOT-kääntämisessä on varmistaa, että uusia laskentakaavioita ei luoda koulutuksen aikana. Yksi uusien laskentakaavioiden (ja siten uudelleenkäännösten) lähde on harjoituserien dynaamiset muodot mallikoulutuksen aikana. Havaitsimme, että staattisten muotojen ja kiinteän kokoisten erien käyttäminen eliminoi harjoitusajan kokoamisen ja parantaa huomattavasti harjoituksen suorituskykyä vaikuttamatta mallin tarkkuuteen. Pakottamalla tällaisia ​​rajoituksia koulutukseen havaitsimme, että vain 4–5 vaihetta mallin harjoittelua, yksi mallin validointivaihe ja mallin tarkistuspisteet kerran tarvitaan kaikkien kaavioiden jäljittämiseen AOT-kääntämisen aikana. On tärkeää huomata, että Neuron SDK kehittyy jatkuvasti ja tukee tulevaisuudessa myös dynaamisia muotoja.

Lisäksi käännetyt kaaviot tallennetaan Neuronin pysyvä välimuisti levyllä tai in Amazonin yksinkertainen tallennuspalvelu (Amazon S3) ämpäri. Tämä on erityisen hyödyllistä tuotantotyökuormissa, joissa mallin arkkitehtuuri ja koulutuskokoonpano eivät muutu. Siksi kokoamisen yleiskustannukset aiheutuvat vain kerran. Välimuistin käyttö on yhtä helppoa kuin ympäristölipun asettaminen:

export NEURON_COMPILE_CACHE_URL="s3://BUCKET/KEY"

Neuron-kääntäjä tarjoaa myös kolme kääntäjätason optimointivaihtoehdot (O1, O2, O3) käännösajan ja mallin suorituskyvyn tasapainottamiseksi. O1 mahdollistaa laskentakaavion ydinoptimoinnit ja minimoi käännösajan, O3 tarjoaa paremman mallin suorituskyvyn pidemmän käännösajan kustannuksella, ja O2 (oletusasetus) on tasapaino näiden kahden välillä. Käyttötapauksessamme käytimme O1-optimointia ja havaitsimme 86 %:n lyhenemisen käännösajassa ilman muutoksia mallin tarkkuusmittareihin, mutta havaitsimme noin 5–7 %:n suorituskyvyn pienenemisen oletusoptimointiin (O2) verrattuna. Käyttötapauksesta riippuen voit valita erilaisia ​​optimointitasoja.

Yhteenvetona totean, että käytimme kokoamiseen seuraavia lippuja:

NEURON_CC_FLAGS="--target trn1 --auto-cast all --auto-cast-type bf16 --model-type transformer --optlevel O1"

Tarkistuspisteen yhteensopivuus

Kun käännös on onnistuneesti valmis, voimme jatkaa mallejamme kouluttamisessa Trainiumilla. Kuten aiemmin mainittiin, koulutamme mallejamme asteittain, eli lataamme aiemmin koulutetun mallin tarkistuspisteen ja jatkamme harjoittelua uusilla tiedoilla. PyTorch ja PyTorch XLA mahdollistavat saumattoman siirtymisen kiihdytinten välillä tarkistuspisteiden yhteentoimivuuden avulla. GPU:n ja Trainiumin välillä liikkumisen joustavuus mahdollisti saumattomasti edellisen GPU-mallin lataamisen ja harjoittelun Trainium-koneilla. Tämä oli ratkaisevan tärkeää sen varmistamiseksi, että voimme alustaa mallimme parhaalla aiemmin koulutetulla mallilla ilman tuotantokatkoksia tai mallin tarkkuuden menetystä.

Koska GPU-malli tallennettiin tavallisilla PyTorch-mallin tallennusapuohjelmilla, pystyimme käyttämään PyTorchin tarkistuspisteen latausapuohjelmaa GPU-mallin lataamiseen Trainium-laitteisiin.

Esimerkiksi GPU/CPU:ssa voit tallentaa mallin seuraavalla koodilla:

torch.save(model.state_dict(), PATH)

Sitten lataat mallin takaisin Trainiumiin:

import torch_xla.core.xla_model as xm
xla_device = xm.xla_device()
model = MyModel(*args, **kwargs)
model.load_state_dict(torch.load(PATH))
model.to(xla_device)

Vastaavasti voit tallentaa mallin Trainiumiin seuraavalla koodilla:

import torch_xla.core.xla_model as xm
# automatically moves the data to CPU for the master device
xm.save(model.state_dict(), PATH) 

Ja lataa malli takaisin GPU/CPU:lle:

model = MyModel(*args, **kwargs)
model.load_state_dict(torch.load(PATH))
model.to(device) # can be any device

Itse asiassa, koska käytämme DDP:tä mallikoulutukseen, mallin lataus on agnostinen edellisen tarkistuspisteen harjoittamiseen käytettyjen koneiden lukumäärästä. Tämän ansiosta voimme skaalata Trn1-kalustoa vaakasuunnassa ilman koodimuutoksia tai haitallisia vaikutuksia mallikoulutukseen. Näitä PyTorch-pohjaisia ​​tarkistuspisteitä voidaan käyttää suoraan tai jopa soihtuskripteillä päättelemään käyttötapauksia AWS Inferentia2:ssa tai muissa kiihdyttimissä.

Toiminnallinen vakaus

Ei voi tarpeeksi korostaa, että työkuormien suorittaminen tuotannossa edellyttää useiden SLA-sopimusten täyttymistä. Meidän käyttötapauksessamme mallin laadun ja koulutuksen suorituskyvyn SLA-sopimusten lisäksi on välttämätöntä, että tuotantoputki on toiminnallisesti vakaa, mikä tarkoittaa minimaalista seisonta-aikaa ja häiriöitä mallin koulutuksen, arvioinnin ja päättelyn aikana.

Kuten olemassa olevaan GPU-pohjaiseen putkistoon, lisäsimme lukuisia mekanismeja, jotka tekevät putkistosta toiminnallisesti vakaan. Ennen kuin aloitamme mallikoulutuksen, suoritamme useita mielenterveystestejä arvioidaksemme koneiden kuntoa. Nämä testit sisältävät yleensä yksinkertaisia ​​tensorioperaatioita kiihdytinlaitteiden kunnon tarkistamiseksi. Olemme havainneet, että hajautetun koulutuksen yhteydessä on tärkeää suorittaa testejä myös instanssejen välisen kollektiivisen viestinnän varmistamiseksi. Käytimme NCCOM testisarja Neuron SDK:sta tämän saavuttamiseksi suorittamalla erilaisia ​​​​toimintoja, kuten kaiken keräämisen, kaiken vähentämisen ja hajoamisen vähentämisen.

Vaikka olemme noudattaneet mainitsemiamme ehdotuksia, olemme havainneet, että ohimenevät ongelmat ovat väistämättömiä kaikissa putkissa, riippumatta taustalla olevasta kiihdyttimestä. Jos haluat lisätä joustavuutta mihin tahansa koulutusputkiin, suosittelemme luomaan uudelleenyritysmekanismit näiden mahdollisten ongelmien ratkaisemiseksi. Käytämme AWS Erä automaattiset uudelleenyritykset yrittää uudelleen töitä, jotka kohtaavat ohimenevän epäonnistumisen mallikoulutuksen aikana. Uudelleenkäynnistykset voivat olla kalliita, jos harjoituksen loppupuolella havaitaan virhe. Tämän ongelman ratkaisemiseksi olemme mukauttaneet koulutusskriptejämme lataamaan aiemmin koulutetun mallin tarkistuspisteen ja jatkamaan harjoittelua siitä kohdasta. Tämän toiminnon avulla pystymme käynnistämään epäonnistuneet koulutustyöt aggressiivisesti uudelleen minimaalisilla kustannuksilla.

Näiden joustavuusmekanismien avulla pystyimme saavuttamaan 98.5 %:n onnistumisprosentin Trn1-työkuormitukseltamme, mikä on verrattavissa nykyiseen GPU-putkistomme onnistumisprosenttiin.

tulokset

Varmistaaksemme malliemme tarkkuuden alustimme kaksi mallia samasta GPU-tarkistuspisteestä ja koulutimme yhden Trainiumilla ja toisen vastaavalla GPU:lla. Molemmat mallit koulutettiin samoilla harjoitushyperparametreillä. Mittareiden laskennassa käytetty tietojoukko on pidätystietojoukko, ja arvioimme mallin tarkkuuden tässä tietojoukossa N:n globaalin vaiheen välein. X-akseli on globaali askel ja Y-akseli mallin tarkkuus. Havaitsimme alle 0.1 % eron mallin tarkkuudessa jokaisessa seuraavan kaavion pisteessä.

Kuinka Amazon Search M5 säästi 30 % LLM-koulutuskustannuksista käyttämällä AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Lisäksi mallikoulutuksen kustannustehokkuuden arvioimiseksi verrataan mieluummin seinäkellon aikaa, joka kuluu mallin konvergenssin saavuttamiseen. Uskomme, että tämä tarjoaa käytännöllisemmän näkemyksen kustannussäästöistä verrattuna sellaisiin toimenpiteisiin, kuten hinta per token, saavutetut FLOPS/dollari ja muut tekijät. Ottaen huomioon harjoitusajan trn1.32xl ja vertailukelpoinen Amazonin elastinen laskentapilvi (Amazon EC2) -tapauksissa olemme havainneet, että Trainium tarjoaa jopa 30 % halvempia kustannuksia mallin konvergenssiin.

Yhteenveto

On monia tekijöitä, jotka on otettava huomioon arvioitaessa erilaisia ​​​​kiihdyttimiä DL-työkuormille. Jotkut tärkeimmistä ovat mallin laatu, suorituskyky, hinta ja saatavuus. On ensiarvoisen tärkeää varmistaa, että mallisi laatua ja suorituskykyä ei uhrata valitsemasi kiihdytin vuoksi.

Kumppanuutemme ja Annapurna Neuron -tiimin kanssa tekemämme yhteistyön ansiosta Amazon Search M5 -tiimi on pystynyt säästämään jopa 30 % kustannuksissa siirtymällä Trainiumiin. Tiimi pystyy käyttämään Trainiumia ja saavuttamaan mallin laadun ja suorituskyvyn pariteetin vastaavilla markkinoilla olevilla kiihdyttimillä. Tarkistuspisteiden yhteentoimivuus ja vähäiset koodimuutokset XLA-tuen kanssa ovat antaneet M5:lle mahdollisuuden valita useiden kiihdyttimien välillä työkuormituksensa mukaan. Tämän ansiosta M5-tiimi on voinut hyödyntää Trainiumin suurta laskentatehoa ja rakentaa agnostisia kiihdytinratkaisuja ilahduttaakseen Amazon.comin asiakkaita. Operatiivisesta näkökulmasta katsottuna Trainium on todistetusti kykenevä tukemaan tason 1 palveluita Amazonin mittakaavassa. M5-tiimi siirtää edelleen enemmän työtaakkaa Trainiumiin tarjotakseen Amazonille parhaat mallit alhaisin kustannuksin.

Yhteenvetona voidaan todeta, että M5-tiimi on pystynyt suorittamaan kustannustehokasta, tuotantotason ML-koulutusta lisäämällä Trainiumin kiihdytinkalustoon. Suosittelemme tutustumaan Trainiumiin ja muihin Neuron-laitteisiin, kuten AWS Inferentiaan, saadaksesi hyödyt tarkoitukseen rakennetusta Amazon-piistä ML-työkuormituksissa. Aloita helposti yhdellä monista opetusohjelmista, jotka sisältävät erilaisia ​​malleja, kuten Llama 2, saatavana Trainiumista.


Tietoja Tekijät

Kuinka Amazon Search M5 säästi 30 % LLM-koulutuskustannuksista käyttämällä AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Abhinandan Patni on vanhempi ohjelmistosuunnittelija Amazon Searchissa. Hän keskittyy rakentamaan järjestelmiä ja työkaluja skaalautuvaan hajautettuun syväoppimiskoulutukseen ja reaaliaikaiseen päättelyyn.

Kuinka Amazon Search M5 säästi 30 % LLM-koulutuskustannuksista käyttämällä AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.James Park on ratkaisuarkkitehti Amazon Web Servicesissä. Hän työskentelee Amazon.comin kanssa suunnitella, rakentaa ja ottaa käyttöön teknologiaratkaisuja AWS:ssä, ja hän on erityisen kiinnostunut tekoälystä ja koneoppimisesta. Vapaa-ajallaan hän nauttii uusien kulttuurien, uusien kokemusten etsimisestä ja uusimpien teknologiatrendien pysymisestä. Löydät hänet LinkedIn.

Kuinka Amazon Search M5 säästi 30 % LLM-koulutuskustannuksista käyttämällä AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Jerry Mannil on ohjelmistosuunnittelija Amazon Searchissa. Hän työskentelee hajautetun koulutusinfrastruktuurin tehokkuuden, kestävyyden ja skaalautuvuuden parantamiseksi.

Kuinka Amazon Search M5 säästi 30 % LLM-koulutuskustannuksista käyttämällä AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.Ken Su on ohjelmistosuunnittelija Amazon Searchissa. Hän pyrkii parantamaan harjoittelun tehokkuutta ja skaalautuvaa hajautettua koulutustyönkulkua. Työn ulkopuolella hän pitää vaeltamisesta ja tenniksestä.

Kuinka Amazon Search M5 säästi 30 % LLM-koulutuskustannuksista käyttämällä AWS Trainium | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.RJ on insinööri Amazonissa. Hän rakentaa ja optimoi järjestelmiä hajautetuille koulutusjärjestelmille ja työskentelee omaksuvien järjestelmien optimoinnissa ML-päätelmän latenssin vähentämiseksi. Työn ulkopuolella hän tutkii Generatiivisen tekoälyn käyttöä ruokareseptien rakentamiseen.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen