Kuidas Latent Space kasutas Amazon SageMakeri mudeli paralleelsuse raamatukogu, et suruda suuremahuliste trafode piire

Allikasõlm: 1204406

Selle ajaveebi kaasautoriteks on Sarah Jane Hong CSO, Darryl Barnhart CTO ja Ian Thompson, Latent Space'i ja AWS-i Prem Ranga tegevjuht.

Latentne ruum on abstraktsete ideede varjatud esitus, mida masinõppe (ML) mudelid õpivad. Näiteks "koer", "lill" või "uks" on mõisted või asukohad varjatud ruumis. Kell Latentne ruum, töötame mootori kallal, mis võimaldab teil seda ruumi manipuleerida ja uurida nii keele kui ka visuaalsete juhiste abil. Latent Space'i meeskond pärineb kahest valdkonnast, mis on pikka aega vähe kattunud: graafika ja loomuliku keele töötlemine (NLP). Traditsiooniliselt käsitletakse piltide ja teksti mooduseid eraldi, millest igaühel on oma keeruline, kallis ja habras funktsioonide projekteerimine. NLP-ülesannetel, nagu dokumendi mõistmine või küsimustele vastamine, on tavaliselt vähe ühist nägemisülesannetega, nagu stseeni mõistmine või renderdamine, ja tavaliselt kasutame iga ülesande jaoks väga erinevaid lähenemisviise ja mudeleid. Kuid see on kiiresti muutumas.

See modaalsuste ühendamine ühtsesse jagatud varjatud ruumi avab uue põlvkonna loomingulisi ja kommertsrakendusi, alates mängimisest kuni dokumentide mõistmiseni. Kuid nende uute rakenduste avamine ühes mudelis avab uued skaleerimise väljakutsed, nagu on rõhutatud Richard Suttoni raamatus "Mõru õppetund" ja viimaste aastate põnev töö skaleerimisseaduste alal. Selle võimalikuks muutmiseks töötab Latent Space tipptasemel teadusuuringute kallal, et ühendada need meetodid ühte mudelisse, aga ka skaleerida ja teha seda tõhusalt. Siin tuleb esile mudeli paralleelsus.

Amazon SageMakerAinulaadne automatiseeritud mudelite jaotamine ja tõhus torujuhtmete ühendamise lähenemisviis võimaldasid mudelite paralleelsuse kasutuselevõtmist vähese inseneritööga ning suurendasime mudelite koolitust üle 1 miljardi parameetri (kasutame p4d.24xsuured A100 eksemplarid), mis on meie jaoks oluline nõue. Lisaks täheldasime, et kui treenisime 16 sõlme ja kaheksa GPU treeningu seadistusega SageMakeri mudeli paralleelsuse teegiga, registreerisime varasemate treeningutega võrreldes efektiivsuse paranemise 38%.

Väljakutsed suuremahuliste trafode koolitamisega

Latent Space'is ühendame keele ja nägemuse miljardite parameetritega trafomudelites, et toetada kasutaja kujutlusvõimest tulenevaid "levitust väljas" kasutusjuhtumeid või juhtumeid, mis esinevad reaalses maailmas, kuid mitte meie koolitusandmetes. Me tegeleme miljarditele parameetritele ja kaugemale skaleerimisega kaasnevate väljakutsetega kahel erineval viisil.

Teabeotsingu tehnikad on pikka aega olnud otsingumootorite ja kvaliteedikontrolli ülesannete põhikomponent. Hiljuti on tehtud põnevaid edusamme, kombineerides klassikalisi IR-tehnikaid kaasaegsete trafodega, eriti küsimustele vastamise ülesannete jaoks, kus mudelit koolitatakse koos närviretriiveriga, kes õpib otsima asjakohaseid dokumente, et aidata küsimustele vastata. Ülevaate saamiseks vaadake FAIRi hiljutist tööd Retrieval Augmented Generation: intelligentsete loomuliku keele töötlemise mudelite loomise lihtsustamine ja Fusion-in-Dekooder, Google Brain's PALJUja Nvidia oma Neuraalne retriiver küsimusele vastamiseks.

Kuigi taasesitusega täiustatud tehnikad aitavad vähendada kulusid ja tõhusust, ei saa me siiski oma suurima mudeli jaoks mudelit ühele GPU-le mahutada. See tähendab, et selle treenimiseks peame kasutama mudeli paralleelsust. Kuid meie otsinguarhitektuuri olemuse tõttu oli meie mudelite jagamise kavandamine keeruline, kuna koolitussisendite vahel oli vastastikune sõltuvus hangitud kontekstide vahel. Veelgi enam, isegi kui me määrame kindlaks, kuidas oma mudelit jaotame, oli mudelite paralleelsuse juurutamine oluline inseneriülesanne, mida meie teadus- ja arendustegevuse elutsükli jooksul käsitsi teha pidime.

SageMakeri mudeli paralleelsuse teek

Mudeli paralleelsus on protsess, mille käigus jagatakse mudel mitme seadme või sõlme vahel (nt GPU-ga varustatud eksemplarid) ja luuakse tõhus konveier mudeli koolitamiseks nendes seadmetes, et maksimeerida GPU kasutust. The mudelparalleelsuse raamatukogu SageMakeris muudab mudeli paralleelsuse ligipääsetavamaks, pakkudes automaatset mudelite jagamist, mida nimetatakse ka kui automaatne mudeli jagamine ja keerukas torujuhtme käitamise ajakava. Mudeli jagamise algoritme saab optimeerida kiiruse või mälutarbimise jaoks. Teek kasutab partitsioonialgoritmi, mis tasakaalustab mälu, minimeerib seadmete vahelist suhtlust ja optimeerib jõudlust.

Automaatne mudeli jagamine

Meie PyTorchi kasutusjuhtumi puhul käivitab mudeli paralleelteek sisemiselt jälgimisetapi (esimeses treeningetapis), mis koostab mudeli graafiku ning määrab tensori ja parameetrite kuju. Seejärel konstrueerib see puu, mis koosneb pesastatud nn.Module mudelis olevad objektid, samuti jälgimisel kogutud lisaandmed, näiteks salvestatud kogus nn.Parametersja iga käitusaeg nn.Module.

Seejärel läbib raamatukogu selle puu juurtest ja käivitab partitsioonialgoritmi, mis tasakaalustab arvutusliku koormuse ja mälukasutuse ning minimeerib eksemplaride vahelist suhtlust. Kui mitmel nn.Modulesil on sama nn.Parameter, paigutatakse need moodulid samasse seadmesse, et vältida sama parameetri mitme versiooni säilitamist. Pärast partitsiooniotsuse tegemist laaditakse määratud moodulid ja kaalud nende seadmetesse.

Torujuhtme käitamise ajakava

Teine SageMakeri hajutatud mudeli paralleelteegi põhifunktsioon on torujuhtmetega jooksud, mis määravad mudelitreeningu ajal arvutuste tegemise ja andmete töötlemise järjekorra seadmete vahel. Konveieri koostamine põhineb minipartii jagamisel mikropartiideks, mis suunatakse ükshaaval koolituskonveierisse ja järgivad teegi käitusaja määratletud töögraafikut.

Mikropartii konveier tagab, et kõik GPU-d on täielikult ära kasutatud, mille peaksime ise ehitama, kuid mudeli paralleelsuse teegi puhul toimub see kulisside taga kenasti. Lõpuks saame kasutada Amazon FSx, mis on oluline, et tagada meie kiire lugemiskiirus, arvestades failide arvu, mida loetakse multimodaalse mudeli väljaõppe ajal.

Koolituse arhitektuur

Järgmine diagramm näitab, kuidas me oma koolitusarhitektuuri seadistame. Meie peamised eesmärgid olid treeningkiiruse parandamine ja kulude vähendamine. Meie treenitavad pildi- ja keeletrafod on väga keerulised, sees on märkimisväärselt suur hulk kihte ja kaalusid, mis töötavad miljardite parameetriteni, mis kõik ei võimalda neid ühe sõlme mällu mahutada. Iga sõlm kannab mudeli alamhulka, mille kaudu andmevoogusid ja teisendusi jagatakse ja kompileeritakse. Seadistame 16 p4d.24xsuur eksemplarid, millest igaühel on kaheksa GPU-d, kasutades järgmist arhitektuuri esitust:

Mudeleid suurendades on levinud trend, et kõik salvestatakse võrgu kaaludesse. Praktilistel eesmärkidel tahame aga oma mudeleid täiendada, et õppida otsima asjakohaseid kontekste, mis aitavad renderdamisel. See võimaldab meil hoida oma serveerimiskulud madalad, tegemata järeleandmisi pildikvaliteedis. Kasutame suurt trafopõhist NLP-mudelit ja nagu varem mainitud, täheldasime SageMakeri mudeli paralleelsuse raamatukoguga treeningu efektiivsuse 38% tõusu, mida näitab järgmine:

  • Tensoritaseme paralleelsuse korral vajame iga arvutuse jaoks allreduce'i. See võtab O(log_2 n) paralleelset sammu. See tähendab n masinat, mis teevad O(n) sammu, O(n log_2 n) operatsioonide koguarvu jaoks.
  • Konveieri paralleelsuse jaoks vajame andmete konveieri kaudu edastamiseks paralleelset sammu O(1).
  • Arvestades 16 masinat kaheksa GPU-ga, on meil O(1) kulu paralleelse torujuhtme jaoks ja O(log_2(8)) = O(3) kulu sügavuspõhise mudeli paralleelse jaoks.
  • Sel juhul näeme, et võrgukulud vähenevad 1/3-ni, kui minnakse üle paralleelsele torujuhtmele, mida me kasutame SageMakeri mudeli paralleelsusega, ja üldine koolituskulu väheneb 1/2 + 1/2 * 1/log_2(16) ) = 0.625 esialgsest maksumusest, mis toob kaasa vastava tõhususe paranemise.

Üldiselt, kui vajadus nõuab hajutatud koolitust (probleemid mudeli suuruse või koolitusandmete skaleerimisega), saame järgida parimaid tavasid, et teha kindlaks, milline lähenemisviis kõige paremini töötab.

Hajutatud koolituse parimad tavad

Meie kogemuste põhjal soovitame alustada hajutatud andmete paralleelse lähenemisviisiga. Jaotatud andmete paralleelsus, näiteks SageMakeri hajutatud andmete paralleelteek lahendab enamiku mudelite koopiatega seotud võrguprobleeme, seega peaksite mudelid mahutama väikseima arvu sõlmedesse ja seejärel kopeerima vastavalt vajadusele partii suurusele.

Kui teil saab treeningu ajal mälu tühjaks, nagu selle stsenaariumi puhul tegime, võiksite lülituda mudeli paralleelsele lähenemisele. Siiski kaaluge neid alternatiive, enne kui proovite paralleelset mudeltreeningut:

  • NVIDIA Tensor Core'iga varustatud riistvara puhul kasutage segatäpsusega koolitus kiirendada ja vähendada mälutarbimist.
  • Vähendage partii suurust (või vähendage võimalusel pildi eraldusvõimet või NLP-järjestuse pikkust).

Lisaks eelistame mudelikujundusi, millel puudub jaotises kirjeldatud partii normaliseerimine Suure jõudlusega suuremahuline pildituvastus ilma normaliseerimiseta. Kui seda ei saa vältida, veenduge, et partii normaliseerimine oleks seadmete vahel sünkroonitud. Kui kasutate hajutatud koolitust, jagatakse teie partii GPU-de vahel, nii et täpne partiitatistika nõuab kõigi seadmete sünkroonimist. Ilma selleta suureneb normaliseerimisel viga ja see kahjustab lähenemist.

Alustage paralleelse mudelkoolitusega, kui teil on järgmised piirangud:

  • Teie mudel ei mahu ühte seadmesse
  • Mudeli suuruse tõttu seisate silmitsi piirangutega suuremate partiide suuruste valimisel, näiteks kui teie mudeli kaalud võtavad suurema osa teie GPU mälust ja olete sunnitud valima väiksema, mitteoptimaalse partii suuruse

Toimivuse optimeerimisel tehke järgmist.

  • Kasutage sõlmedevahelise suhtluse jaoks konveierit, et minimeerida latentsust ja suurendada läbilaskevõimet
  • Mullide minimeerimiseks hoidke torujuhtmed võimalikult lühikesed. Mikropartiide arv tuleks häälestada nii, et see tasakaalustaks arvutusliku efektiivsuse ja mulli suuruse, ning see peaks olema vähemalt torujuhtme pikkus. Vajadusel saate moodustada mikropartiisid märgi tasemel, nagu kirjeldatud punktis TeraPipe: Token Level Pipeline Parallelism suuremahuliste keelemudelite koolitamiseks

Kulude optimeerimisel kasutage koolituseks SageMakeri hallatud kohapealseid eksemplare. See võib optimeerida koolitusmudelite kulusid kuni 90% tellitavate juhtumitega võrreldes. SageMaker haldab Spoti katkestusi teie nimel.

Muud tegurid, mida tuleb arvestada:

  • Kui sõlmes on kiire ühendus, on see nüansirikkam. Kui sõlmesisese võrgu võimsust on piisavalt, võib andmete ümberjagamine optimaalsema arvutustöö jaoks olla kasulik.
  • Kui aktiveerimised on palju suuremad kui kaalutensorid, võib abiks olla ka killustatud optimeerija. Palun viita NULL rohkem üksikasju.

Järgmises tabelis on toodud mõned levinumad treeningu suurendamise stsenaariumid ja kuidas saate neid AWS-is konfigureerida.

Stsenaarium Millal see kehtib? Lahendus
Skaleerimine ühelt GPU-lt mitmele GPU-le Kui treeningandmete hulk või mudeli suurus on liiga suur Valige mitme GPU-ga eksemplar, nagu p3.16xlarge, millel on kaheksa GPU-d, kusjuures andmed ja töötlemine on jagatud kaheksa GPU vahel ning kiirendab peaaegu lineaarset mudeli treenimiseks kuluvat aega.
Skaleerimine ühelt eksemplarilt mitmele eksemplarile Kui skaleerimisvajadused ulatuvad kaugemale eksemplari suuruse muutmisest Skaleerige eksemplaride arvu SageMaker Python SDK hindaja funktsiooniga, määrates eksemplari_tüübi väärtuseks p3.16xlarge ja instance_count väärtuseks 2. Ühe p3.16xlarge kaheksa GPU asemel on teil kahes identses eksemplaris 16 GPU-d. Kaaluge SageMakeri hajutatud andmete paralleelteek.
Treeninguks paralleelse lähenemisviisi valimine Kui avastate treeningu ajal mälu otsas tõrkeid Lülituge mudeli paralleelsele lähenemisele, kasutades SageMakeri hajutatud mudeli paralleelteek.
Võrgu jõudlus sõlmedevaheliseks suhtluseks Mitme eksemplariga hajutatud koolituseks (näiteks klastri sõlmede vaheline suhtlus AllReduce toimingu tegemisel) Teie eksemplarid peavad asuma samas piirkonnas ja samas saadavuse tsoonis. Kui kasutate SageMaker Python SDK-d, tegeletakse sellega teie eest. Teie treeninguandmed peaksid samuti olema samas kättesaadavustsoonis. Kaaluge SageMakeri hajutatud andmete paralleelteek.
Optimeeritud GPU, võrk ja salvestusruum Suuremahuliste hajutatud koolitusvajaduste jaoks Eksemplari tüüp p4d.24xlarge oli mõeldud kiireks kohalikuks salvestuseks ja kiireks võrgu taustaplaadiks kuni 400 gigabitisega ning soovitame seda kui kõige tõhusamat võimalust hajutatud koolituse jaoks.

Järeldus

SageMakeri mudeli paralleelteegi abil saame palju eeliseid, näiteks mudelite automaatse jaotamise ja tõhusa torustiku. Selles postituses jagasime oma väljakutseid oma ML-i kasutusjuhtumitega, oma kaalutlusi erinevate koolitusmeetodite kohta ja seda, kuidas kasutasime koolituse kiirendamiseks Amazon SageMakeri mudeli paralleelsuse raamatukogu. Mis kõige parem, siin kirjeldatud mudelite paralleelsuse ja jõudluse parandamise parimate tavade kasutuselevõtmiseks võib nüüd kuluda vaid paar tundi. Kui see postitus aitab teid või inspireerib teid mõnda probleemi lahendama, oleks meil hea meel sellest kuulda! Palun jagage oma kommentaare ja tagasisidet.

viited

Lisateabe saamiseks vaadake järgmist:


Autoritest

Prem Ranga on Enterprise Solutionsi arhitekt, mis asub Atlantas, GA. Ta on osa masinõppe tehnilise valdkonna kogukonnast ja talle meeldib töötada klientidega nende ML ja AI teekonnal. Prem on kirglik robootika vastu, on autonoomsete sõidukite uurija ning ehitas ka Alexa juhitud õllevalamise Houstonis ja teistes kohtades.

Sarah Jane Hong on Latent Space’i kaasasutaja ja teadusdirektor. Tema taust on inimese ja arvuti interaktsiooni ja masinõppe ristumiskohas. Varem juhtis ta NLP-uuringuid Sonaris (omandatud Marchexi poolt), mis teenindab ettevõtteid vestlusliku AI-ruumis. Ta on ka hinnatud AR/VR-arendaja, olles saanud auhindu ja stipendiume firmadelt Oculus, Mozilla Mixed Reality ja Microsoft Hololens.

Darryl Barnhart on ettevõtte Latent Space kaasasutaja ja tehnoloogiajuht. Ta on kogenud arendaja, kellel on kogemusi GPU kiirenduse, arvutigraafika, suuremahuliste andmete ja masinõppe alal. Muude kirgede hulka kuuluvad matemaatika, mängude arendamine ja teabe uurimine.

Ian Thompson on Latent Space'i asutaja ja tegevjuht. Ian on insener ja teadlane, kes on inspireeritud "kõrvuti asetsevast võimalikust" - tehnoloogiatest, millel on meie elule suur mõju. Praegu keskendub see multimodaalse esituse õppimise lihtsustamisele ja skaleerimisele, et aidata luua ohutut ja loomingulist tehisintellekti. Varem aitas ta luua ettevõtteid graafika/virtuaalreaalsuse (AltspaceVR, omandas Microsoft) ja hariduse/NLP (HSE) vallas.

Allikas: https://aws.amazon.com/blogs/machine-learning/how-latent-space-used-the-amazon-sagemaker-model-parallelism-library-to-push-the-frontiers-of-large- skaala-trafod/

Ajatempel:

Veel alates AWS-i masinõppe ajaveeb