Kuinka latentti avaruus käytti Amazon SageMaker -mallikirjastokirjastoa suurten muuntajien rajojen työntämiseen

Lähdesolmu: 1204406

Tämän blogin ovat kirjoittaneet Sarah Jane Hong CSO, Darryl Barnhart CTO ja Ian Thompson Latent Space -yhtiön toimitusjohtaja ja AWS: n Prem Ranga.

Piilevä tila on piilotettu esitys abstrakteista ideoista, jotka koneoppimismallit oppivat. Esimerkiksi "koira", "kukka" tai "ovi" ovat käsitteitä tai paikkoja piilevässä tilassa. Klo Piilevä tilaTyöskentelemme moottorin parissa, jonka avulla voit käsitellä ja tutkia tätä tilaa sekä kielellä että visuaalisesti. Latent Space -tiimi tulee kahdelta alalta, joilla on pitkään ollut vähän päällekkäisyyksiä: grafiikasta ja luonnollisen kielen prosessoinnista (NLP). Perinteisesti kuvien ja tekstin yksityiskohdat on käsitelty erikseen, jokaisella on oma historiansa monimutkaisesta, kalliista ja hauraasta piirustekniikasta. NLP-tehtävillä, kuten asiakirjojen ymmärtämisellä tai kysymyksiin vastaamisella, on yleensä ollut vähän yhteistä visioihin liittyvien tehtävien kanssa, kuten kohtauksen ymmärtäminen tai renderointi, ja yleensä käytämme hyvin erilaisia ​​lähestymistapoja ja malleja kullekin tehtävälle. Mutta tämä muuttuu nopeasti.

Tämä modaliteettien yhdistäminen yhteen jaettuun piilotilaan avaa uuden sukupolven luovia ja kaupallisia sovelluksia pelaamisesta dokumenttien ymmärtämiseen. Mutta näiden uusien sovellusten avaaminen yhdeksi malliksi avaa uusia skaalaushaasteita, kuten Richard Suttonin "The Bitter Lesson" korosti, ja viimeisten vuosien jännittävä työ lakien skaalaamiseksi. Tämän mahdollistamiseksi Latent Space työskentelee huippututkimuksella sulauttamaan nämä yksityiskohdat yhteen malliin, mutta myös skaalautumaan ja tekemään niin tehokkaasti. Tässä tulee mallin rinnakkaisuus.

Amazon Sage MakerAinutlaatuinen automatisoitu mallien osiointi ja tehokas putkilinjaus mahdollistivat mallin rinnakkaisuuden omaksumisen pienellä suunnitteluponnistelulla ja laajensimme mallien koulutusta yli miljardiin parametriin (käytämme p4d.24xlarge A100-instansseja), mikä on meille tärkeä vaatimus. Lisäksi havaitsimme, että kun harjoitimme 16 solmun, kahdeksan GPU-harjoittelun kanssa SageMaker-mallin rinnakkaiskirjastolla, kirjasimme 38% parannuksen tehokkuudessa aiempiin harjoitteluihimme verrattuna.

Haasteet suurten muuntajien kouluttamisella

Latent Spacessa yhdistämme muuntajan malleissa kielen ja näkemykset miljardeilla parametreilla tukemaan käyttäjän mielikuvitusta "jakelusta poikkeavia" käyttötapauksia, joita tapahtuisi tosielämässä, mutta ei harjoitustiedoissamme. Käsittelemme haasteita, jotka liittyvät laajentamiseen miljardeihin parametreihin ja pidemmälle kahdella eri tavalla:

Tiedonhakutekniikat ovat jo pitkään olleet keskeinen osa hakukoneita ja laadunvalvontatehtäviä. Viime aikoina on tapahtunut jännittävää edistystä yhdistämällä klassiset infrapunatekniikat nykyaikaisiin muuntajiin, erityisesti kysymyksiin vastaamiseen, joissa malli koulutetaan yhdessä hermon noutajan kanssa, joka oppii hakemaan asiaankuuluvia asiakirjoja vastaamaan kysymyksiin. Katso yleiskatsaus FAIRin viimeaikaisesta työstä Retrieval Augmented Generation: Yksinkertaistetaan älykkäiden luonnollisten kielten käsittelymallien luomista ja Fuusio-dekooderissa, Google Brain's VALTAKUNTAja Nvidian Neuraali noutaja kysymykseen vastaamiseksi.

Vaikka hakuihin lisätyt tekniikat auttavat kustannusten ja tehokkuuden suhteen, emme silti pysty sovittamaan mallia yhdelle GPU: lle suurimmalle mallillemme. Tämä tarkoittaa, että meidän on käytettävä mallin rinnakkaisuutta sen kouluttamiseen. Haun arkkitehtuurin luonteen vuoksi mallin jakamisen suunnittelu oli kuitenkin haastavaa johtuen haettujen kontekstien keskinäisestä riippuvuudesta koulutustulosten välillä. Lisäksi, vaikka päätämme, kuinka jaamme mallimme, mallien rinnakkaisuuden käyttöönotto oli meille merkittävä suunnittelutehtävä, jonka voimme tehdä manuaalisesti koko tutkimus- ja kehitystyön elinkaaren ajan.

SageMaker-mallin rinnakkaiskirjasto

Mallien rinnakkaisuus on prosessi, jossa malli jaetaan useiden laitteiden tai solmujen (kuten GPU: lla varustettujen ilmentymien) välillä ja luodaan tehokas putki, jolla mallia voidaan kouluttaa näiden laitteiden yli GPU: n käytön maksimoimiseksi. malli rinnakkaiskirjasto SageMakerissa tekee mallien rinnakkaisuudesta helpommin saatavana tarjoamalla automaattisen mallin jakamisen, jota kutsutaan myös nimellä automaattinen mallien osiointi ja hienostunut putkeajon aikataulutus. Mallin jakamisalgoritmit voivat optimoida nopeuden tai muistin kulutuksen. Kirjasto käyttää osiointialgoritmia, joka tasapainottaa muistia, minimoi laitteiden välisen viestinnän ja optimoi suorituskyvyn.

Automaattinen mallien osiointi

PyTorch-käyttötapauksessamme rinnakkaismallikirjasto suorittaa sisäisesti jäljitysvaiheen (ensimmäisessä koulutusvaiheessa), joka rakentaa mallikaavion ja määrittää tensori- ja parametrimuodot. Sitten se rakentaa puun, joka koostuu sisäkkäisistä nn.Module mallissa olevat objektit sekä jäljittämisestä kerätyt lisätiedot, kuten tallennetun määrän nn.Parametersja ajoaika kullekin nn.Module.

Sitten kirjasto kulkee tämän puun juuresta ja suorittaa osiointialgoritmin, joka tasapainottaa laskennallisen kuormituksen ja muistin käytön ja minimoi ilmentymien välisen viestinnän. Jos useilla nn. Moduuleilla on sama nn. Parametri, nämä moduulit sijoitetaan samaan laitteeseen, jotta vältetään saman parametrin useiden versioiden ylläpitäminen. Kun osiointi on tehty, määritetyt moduulit ja painot ladataan laitteisiinsa.

Putkilinjan ajoitus

Toinen SageMaker-hajautetun mallin rinnakkaiskirjaston ydinominaisuus on putkilinja, jotka määrittelevät järjestyksen, jossa laskelmat tehdään ja tietoja käsitellään laitteiden välillä mallikoulutuksen aikana. Putkilinjaus perustuu minierän jakamiseen mikropanoksiksi, jotka syötetään harjoitusputkelle yksitellen ja noudattavat kirjaston ajonaikaisen määrittelemää ajoaikataulua.

Mikrokeräysputki varmistaa, että kaikki grafiikkasuorittimet ovat täysin hyödynnettyjä, mikä meidän on itse rakennettava, mutta mallikirjastokirjastolla tämä tapahtuu siististi kulissien takana. Viimeiseksi voimme käyttää Amazon FSx, mikä on tärkeää sen varmistamiseksi, että lukunopeutemme ovat nopeita, kun otetaan huomioon haettavien multimodaalimallien koulutuksen aikana luettavien tiedostojen määrä.

Koulutusarkkitehtuuri

Seuraava kaavio kuvaa kuinka rakennamme koulutusarkkitehtuurimme. Päätavoitteemme oli parantaa harjoittelunopeutta ja vähentää kustannuksia. Harjoittamamme kuva- ja kielimuuntajat ovat erittäin monimutkaisia, ja niiden sisällä on huomattavan suuri määrä kerroksia ja painoja, jotka kulkevat miljardeihin parametreihin, jotka kaikki tekevät niistä mahdottomia mahtumaan yhden solmun muistiin. Jokaisella solmulla on mallin osajoukko, jonka kautta datavirrat ja muunnokset jaetaan ja kootaan. Asensimme 16 p4d.24xlarge esiintymiä, joissa kussakin on kahdeksan näytönohjainta, käyttäen seuraavaa arkkitehtuuriesitystä:

Kun laajennamme mallejamme, yleinen suuntaus on, että kaikki on tallennettu verkon painoihin. Käytännön syistä haluamme kuitenkin täydentää mallejamme oppiaksemme etsimään asiaankuuluvia konteksteja renderöintitehtävissä. Tämän avulla voimme pitää palvelukustannuksemme alhaisina kuvanlaadusta tinkimättä. Käytämme suurta muuntajapohjaista NLP-mallia, ja kuten aiemmin mainittiin, havaitsimme 38%: n koulutuksen tehokkuuden kasvun SageMaker-mallin rinnakkaiskirjastolla, kuten seuraava osoittaa:

  • Tensoritason rinnakkaisuuden tapauksessa tarvitsemme vähennyksen jokaiselle laskennalle. Tämä vie O (log_2 n) rinnakkaista vaihetta. Se on n konetta, jotka ottavat O (n) askelia, O (n log_2 n) -operaatioille.
  • Putkilinjan rinnakkaisuuden kannalta vaaditaan O (1) rinnakkaisia ​​vaiheita tietojen siirtämiseksi putkilinjalle
  • Kun otetaan huomioon 16 konetta, joissa on kahdeksan grafiikkasuoritinta, putkilinjan rinnakkaiskustannukset ovat O (1) ja syvyyssuunnassa rinnakkaisen O (log_2 (8)) = O (3).
  • Tässä tapauksessa näemme, että verkkokustannukset pienenevät 1/3: een siirtymällä putkilinjan rinnakkaiseen verrattuna siihen, mitä käytämme SageMaker-mallin rinnakkaisuuden kanssa, ja koulutuksen kokonaiskustannukset pienenevät arvoon 1/2 + 1/2 * 1 / log_2 (16 ) = 0.625 alkuperäisistä kustannuksista, mikä johtaa vastaavaan tehokkuuden parantamiseen.

Yleensä kun tarve edellyttää jaettua koulutusta (mallikoon tai koulutustietojen skaalausongelmat), voimme seurata joukkoa parhaita käytäntöjä selvittääksemme, mikä lähestymistapa toimii parhaiten.

Parhaat käytännöt hajautettuun koulutukseen

Kokemuksemme perusteella suosittelemme aloittamaan hajautetun tiedon rinnakkaisen lähestymistavan. Hajautettu tietojen rinnakkaisuus, kuten SageMaker hajautti rinnakkaistietoja ratkaisee suurimman osan verkkokysymyksistä mallikopioiden kanssa, joten sinun tulisi sovittaa mallit pienimpään solmujen määrään ja replikoida sitten skaalautuvaan eräkokoon tarpeen mukaan.

Jos muistisi loppuu harjoittelun aikana, kuten teimme tässä skenaariossa, kannattaa ehkä vaihtaa rinnakkaiseen malliin. Harkitse kuitenkin näitä vaihtoehtoja, ennen kuin kokeilet rinnakkaista mallikoulutusta:

  • Käytä NVIDIA Tensor Core -laitteella sekoitettu tarkkuuskoulutus nopeuden luomiseksi ja muistin kulutuksen vähentämiseksi.
  • Pienennä eräkokoa (tai pienennä kuvan tarkkuutta tai NLP-sekvenssin pituutta, jos mahdollista).

Lisäksi suosimme mallimalleja, joissa ei ole erän normalisointia, kuten kohdassa kuvataan Suorituskykyinen laajamittainen kuvan tunnistus ilman normalisointia. Jos sitä ei voida välttää, varmista, että erän normalisointi on synkronoitu laitteiden välillä. Kun käytät hajautettua koulutusta, eräsi jaetaan GPU: iden kesken, joten tarkat erätilastot edellyttävät synkronointia kaikkien laitteiden välillä. Ilman tätä normalisointi lisää virhettä ja heikentää siten lähentymistä.

Aloita mallin rinnakkaisesta koulutuksesta, kun sinulla on seuraavat rajoitteet:

  • Mallisi ei sovi yhteen laitteeseen
  • Mallikoon takia sinulla on rajoituksia suurempien eräkokojen valitsemisessa, kuten jos mallisi painot vievät suurimman osan GPU-muistista ja sinun on pakko valita pienempi, epäoptimaalinen eräkoko

Suorita suorituskyvyn optimointi seuraavasti:

  • Käytä solmujen välistä viestintää putkilinjauksella viiveen minimoimiseksi ja suorituskyvyn lisäämiseksi
  • Pidä putket mahdollisimman lyhyinä kuplien minimoimiseksi. Mikropanosten lukumäärä on viritettävä tasapainottamaan laskennan tehokkuus kuplan koon kanssa ja oltava vähintään putkilinjan pituus. Tarvittaessa voit muodostaa mikrojoukot tunnustasolla, kuten kohdassa kuvataan TeraPipe: Token Level Pipeline -parallelismi suurten kielimallien kouluttamiseen

Kun optimoit kustannusten mukaan, käytä koulutukseen SageMakerin hallitsemia Spot-instansseja. Tämä voi optimoida koulutusmallien kustannukset jopa 90% verrattuna kysyntään. SageMaker hallinnoi Spot-keskeytyksiä puolestasi.

Muita huomioitavia tekijöitä:

  • Solmun sisällä, kun yhteys on nopea, se on vivahteikkaampi. Jos solmun sisäistä verkkokapasiteettia on runsaasti, tietojen uudelleenjärjestely optimaalisen laskennan mahdollistamiseksi voi olla hyötyä.
  • Jos aktivaatiot ovat paljon suurempia kuin painojännittimet, voi myös auttaa sirpaleinen optimoija. Ole hyvä ja katso Nolla lisätietoja.

Seuraava taulukko sisältää joitain yleisiä koulutuksen laajentamisen skenaarioita ja kuinka voit määrittää ne AWS: ssä.

skenaario Milloin sitä sovelletaan? Ratkaisu
Skaalaus yhdeltä GPU: lta monelle GPU: lle Kun harjoitustietojen määrä tai mallin koko on liian suuri Vaihda moni-GPU-ilmentymään, kuten p3.16xlarge, jossa on kahdeksan GPU: ta, ja data ja käsittely jaettuna kahdeksalle GPU: lle, ja tuottaa melkein lineaarisen nopeuden mallin kouluttamiseen kuluvassa ajassa.
Skaalaus yhdestä instanssista useisiin instansseihin Kun skaalauksen tarve ylittää esiintymän koon muuttamisen Skaalaa ilmentymien lukumäärä SageMaker Python SDK: n estimointitoiminnolla asettamalla instanssityyppisi arvoksi p3.16xlarge ja ilmentymän_määrä arvoksi 2. Yhden p3.16xlarge-mallin kahdeksan näytönohjaimen sijasta sinulla on 16 GPU: ta kahdessa identtisessä ilmentymässä. Harkitse SageMaker hajautti rinnakkaistietoja.
Malli rinnakkaisen lähestymistavan valitseminen koulutusta varten Kun muistivirheitä esiintyy harjoittelun aikana Vaihda rinnakkaiseen malliin käyttämällä SageMaker-hajautettu rinnakkaiskirjasto.
Verkon suorituskyky solmujen välisessä viestinnässä Hajautettuun koulutukseen, jossa on useita instansseja (esimerkiksi viestintä klusterin solmujen välillä, kun suoritetaan AllReduce-operaatio) Ilmentymiesi on oltava samalla alueella ja samalla Saatavuusalueella. Kun käytät SageMaker Python SDK: ta, se hoidetaan puolestasi. Harjoitustietojesi tulisi myös olla samassa Saatavuusalueella. Harkitse SageMaker hajautti rinnakkaistietoja.
Optimoitu näytönohjain, verkko ja tallennustila Suurten hajautettujen koulutustarpeiden hoitamiseen P4d.24xlarge-ilmentymätyyppi on suunniteltu nopeaa paikallista tallennustilaa ja nopeaa verkon taustalevyä varten, jopa 400 gigabittiä, ja suosittelemme sitä erittäin tehokkaimpana vaihtoehtona hajautettuun koulutukseen.

Yhteenveto

SageMakerin rinnakkaiskirjaston avulla saamme paljon hyötyä laatikosta, kuten automaattisen mallin jakamisen ja tehokkaan putkiston. Tässä viestissä jaoimme haasteemme ML-käyttötapauksellemme, huomioimme erilaiset koulutusmenetelmät ja miten käytimme Amazon SageMaker -mallikirjastoa koulutuksen nopeuttamiseen. Mikä parasta, parhaiden käytäntöjen omaksuminen tässä kuvattujen mallien rinnakkaisuuteen ja suorituskyvyn parantamiseen voi nyt kestää vain muutaman tunnin. Jos tämä viesti auttaa sinua tai innostaa sinua ratkaisemaan ongelman, haluaisimme kuulla siitä! Ole hyvä ja jaa kommenttisi ja palautteesi.

Viitteet

Katso lisätietoja seuraavasta:


Tietoja Tekijät

Prem Ranga on yritysratkaisujen arkkitehti, joka sijaitsee Atlantassa, GA. Hän on osa koneoppimisen teknisen kentän yhteisöä ja rakastaa työskentelyä asiakkaiden kanssa heidän ML- ja tekoälymatkallaan. Prem on intohimoinen robotiikasta, on itsenäinen ajoneuvotutkija ja rakensi myös Alexa-ohjatut olutkaadot Houstoniin ja muihin paikkoihin.

Sarah Jane Hong on Latent Spacen perustaja ja tieteenjohtaja. Hänen taustansa on ihmisen ja tietokoneen vuorovaikutuksen ja koneoppimisen risteyksessä. Hän on aiemmin johtanut NLP-tutkimusta Sonarissa (jonka on hankkinut Marchex), joka palvelee yrityksiä keskustelu-AI-tilassa. Hän on myös arvostettu AR / VR-kehittäjä, joka on saanut palkintoja ja apurahoja Oculusilta, Mozilla Mixed Reality ja Microsoft Hololensilta.

Darryl Barnhart on Latent Spacen perustaja ja teknologiajohtaja. Hän on kokenut kehittäjä, jolla on kokemusta GPU-kiihdytyksestä, tietokonegrafiikasta, laajamittaisesta tiedosta ja koneoppimisesta. Muita intohimoja ovat matematiikka, pelikehitys ja tiedon tutkiminen.

Ian Thompson on Latent Spacen perustaja ja toimitusjohtaja. Ian on insinööri ja tutkija, jonka innoittamana ovat "vierekkäiset mahdollisuudet" - tekniikoilla, joilla on suuri vaikutus elämäämme. Tällä hetkellä keskitytään yksinkertaistamaan ja laajentamaan multimodaalisen edustuksen oppimista turvallisen ja luovan tekoälyn rakentamiseksi. Aikaisemmin hän auttoi rakentamaan yrityksiä grafiikan / virtuaalitodellisuuden (AltspaceVR, Microsoftin hankkima) ja koulutuksen / NLP (HSE) aloilla.

Lähde: https://aws.amazon.com/blogs/machine-learning/how-latent-space-used-the-amazon-sagemaker-model-parallelism-library-to-push-the-frontiers-of-large- mittakaavan muuntajat /

Aikaleima:

Lisää aiheesta AWS-koneoppimisblogi