Kako je Latent Space s pomočjo knjižnice paralelnosti modela Amazon SageMaker potisnil meje velikih transformatorjev

Izvorno vozlišče: 1204406

Soavtorji tega spletnega dnevnika so Sarah Jane Hong CSO, Darryl Barnhart CTO in Ian Thompson, CEO Latent Space in Prem Ranga iz AWS.

Latentni prostor je skrita predstavitev abstraktnih idej, ki se jih učijo modeli strojnega učenja (ML). Na primer, "pes", "roža" ali "vrata" so pojmi ali lokacije v latentnem prostoru. pri Latentni prostor, delamo na mehanizmu, ki vam omogoča manipuliranje in raziskovanje tega prostora tako z jezikovnimi kot vizualnimi pozivi. Ekipa Latent Space prihaja z dveh področij, ki se že dolgo malo prekrivata: grafike in obdelave naravnega jezika (NLP). Tradicionalno se modalitete slik in besedila obravnavajo ločeno, vsaka s svojo zgodovino kompleksnega, dragega in krhkega inženiringa funkcij. Naloge NLP, kot je razumevanje dokumenta ali odgovarjanje na vprašanja, običajno nimajo veliko skupnega z nalogami vida, kot je razumevanje scene ali upodabljanje, in običajno uporabljamo zelo različne pristope in modele za vsako nalogo. Toda to se hitro spreminja.

To združevanje modalitet v enem samem skupnem latentnem prostoru odklene novo generacijo kreativnih in komercialnih aplikacij, od iger do razumevanja dokumentov. Toda odklepanje teh novih aplikacij v enem samem modelu odpira nove izzive skaliranja, kot je poudarjeno v "The Bitter Lesson" Richarda Suttona, in razburljivo delo v zadnjih nekaj letih na zakonih skaliranja. Da bi to omogočili, Latent Space dela na vrhunskih raziskavah, da bi združil te modalitete v enem samem modelu, pa tudi za povečanje in to učinkovito. Tukaj nastopi vzporednost modelov.

Amazon SageMakerEdinstveno avtomatizirano razdeljevanje modelov in učinkovit cevovodni pristop sta nam omogočila sprejetje vzporednosti modelov z malo inženirskega truda, naše usposabljanje modelov pa smo razširili prek 1 milijarde parametrov (uporabljamo p4d.24xlarge A100 primerki), kar je za nas pomembna zahteva. Poleg tega smo opazili, da smo pri usposabljanju s 16 vozlišči in osmimi nastavitvami GPE za usposabljanje s knjižnico paralelizma modelov SageMaker zabeležili 38-odstotno izboljšanje učinkovitosti v primerjavi z našimi prejšnjimi izvajanji usposabljanja.

Izzivi pri usposabljanju velikih transformatorjev

Pri Latent Space združujemo jezik in vizijo v transformatorskih modelih z milijardami parametrov za podporo primerov uporabe »izven distribucije« iz uporabnikove domišljije ali do takih, ki bi se zgodili v resničnem svetu, vendar ne v naših podatkih o usposabljanju. Z izzivi, povezanimi s prilagajanjem na milijarde parametrov in več, se spopadamo na dva različna načina:

Tehnike iskanja informacij so že dolgo ključna sestavina iskalnikov in nalog zagotavljanja kakovosti. V zadnjem času je bil dosežen vznemirljiv napredek z združevanjem klasičnih IR tehnik s sodobnimi transformatorji, posebej za naloge odgovarjanja na vprašanja, pri katerih se model usposablja skupaj z nevronskim prinašalcem, ki se nauči pridobiti ustrezne dokumente za pomoč pri odgovarjanju na vprašanja. Za pregled si oglejte nedavno delo podjetja FAIR in Retrieval Augmented Generation: poenostavitev ustvarjanja inteligentnih modelov obdelave naravnega jezika in Fusion-in-dekoder, Google Brain's REALNO, in Nvidia Nevralni prinašalec za odgovor na vprašanje.

Medtem ko tehnike, razširjene s pridobivanjem, pomagajo pri stroških in učinkovitosti, še vedno ne moremo namestiti modela na en sam GPE za naš največji model. To pomeni, da moramo za njegovo usposabljanje uporabiti vzporednost modela. Vendar je bilo zaradi narave naše arhitekture priklica načrtovanje razdelitve našega modela zahtevno zaradi soodvisnosti med priklicanimi konteksti v vložkih za usposabljanje. Poleg tega, tudi če določimo, kako bomo razdelili naš model, je bila uvedba vzporednosti modela pomembna inženirska naloga, ki smo jo morali opraviti ročno v celotnem življenjskem ciklu raziskav in razvoja.

Knjižnica paralelizma modelov SageMaker

Paralelizem modela je postopek razdelitve modela med več naprav ali vozlišč (kot so primerki, opremljeni z grafično procesorsko enoto) in ustvarjanje učinkovitega cevovoda za usposabljanje modela v teh napravah za čim večjo uporabo grafične procesorske enote. The knjižnica paralelizma modelov v SageMaker naredi vzporednost modelov bolj dostopno z zagotavljanjem samodejnega razdeljevanja modelov, imenovanega tudi kot avtomatizirano particioniranje modela in sofisticirano načrtovanje poteka cevovoda. Algoritmi za razdelitev modela lahko optimizirajo hitrost ali porabo pomnilnika. Knjižnica uporablja algoritem za razdelitev, ki uravnoteži pomnilnik, zmanjša komunikacijo med napravami in optimizira delovanje.

Avtomatizirano particioniranje modela

Za naš primer uporabe PyTorch vzporedna knjižnica modela interno izvaja korak sledenja (v prvem koraku usposabljanja), ki sestavi graf modela in določi oblike tenzorja in parametrov. Nato sestavi drevo, ki je sestavljeno iz ugnezdenih nn.Module objektov v modelu, kot tudi dodatne podatke, zbrane s sledenjem, kot je količina shranjenih nn.Parameters, in čas izvajanja za vsakega nn.Module.

Knjižnica nato prečka to drevo od korena in zažene algoritem za razdelitev, ki uravnoteži računsko obremenitev in uporabo pomnilnika ter minimizira komunikacijo med primerki. Če si več modulov nn.Modules deli isti parameter nn.Parameter, so ti moduli nameščeni na isto napravo, da se prepreči vzdrževanje več različic istega parametra. Ko je sprejeta odločitev o razdelitvi, se dodeljeni moduli in uteži naložijo v njihove naprave.

Načrtovanje poteka cevovoda

Druga ključna značilnost vzporedne knjižnice distribuiranega modela SageMaker je cevovodne vožnje, ki določajo vrstni red izračunov in obdelave podatkov med napravami med usposabljanjem modela. Cevovod temelji na razdelitvi mini serije na mikro serije, ki se ena za drugo dovajajo v cevovod za usposabljanje in sledijo urniku izvajanja, ki ga določa izvajalno okolje knjižnice.

Mikrošaržni cevovod zagotavlja, da so vsi grafični procesorji v celoti izkoriščeni, kar bi morali zgraditi sami, toda s knjižnico vzporednosti modelov se to lepo zgodi v zakulisju. Končno lahko uporabimo Amazon FSx, kar je pomembno za zagotovitev, da so naše hitrosti branja visoke glede na število datotek, ki se berejo med usposabljanjem večmodalnega modela s priklicem.

Arhitektura usposabljanja

Naslednji diagram predstavlja, kako smo postavili našo arhitekturo usposabljanja. Naši glavni cilji so bili izboljšati hitrost usposabljanja in zmanjšati stroške. Pretvorniki slike in jezika, ki jih usposabljamo, so zelo zapleteni, s precej velikim številom plasti in uteži v notranjosti, ki delujejo na milijarde parametrov, zaradi česar se ne morejo prilegati pomnilniku enega samega vozlišča. Vsako vozlišče nosi podmnožico modela, skozi katerega tečejo podatki in se delijo in zbirajo transformacije. Postavili smo 16 p4d.24xvelika primerki z osmimi grafičnimi procesorji z uporabo naslednje predstavitve arhitekture:

Ko povečujemo naše modele, je pogost trend, da imamo vse shranjeno v uteži omrežja. Za praktične namene pa želimo razširiti naše modele, da se naučimo iskati ustrezne kontekste za pomoč pri nalogi upodabljanja. To nam omogoča, da znižamo stroške strežbe, ne da bi pri tem ogrozili kakovost slike. Uporabljamo model NLP, ki temelji na velikem transformatorju, in kot smo že omenili, smo opazili 38-odstotno povečanje učinkovitosti usposabljanja s knjižnico vzporednosti modelov SageMaker, kot kaže naslednje:

  • Potrebujemo allreduction za vsak izračun v primeru vzporednosti ravni tenzorja. To traja O(log_2 n) vzporednih korakov. To je n strojev, ki opravijo O(n) korakov za O(n log_2 n) vseh operacij.
  • Za paralelizem cevovoda potrebujemo O(1) vzporednih korakov za prenos podatkov po cevovodu
  • Glede na 16 strojev z osmimi grafičnimi procesorji imamo O(1) strošek za vzporedni cevovod in O(log_2(8)) = O(3) strošek za vzporedni model po globini.
  • V tem primeru vidimo, da se omrežni strošek zmanjša na 1/3 s preklopom na vzporedni cevovod, ki ga uporabljamo s paralelizmom modela SageMaker, skupni strošek usposabljanja pa se zmanjša na 1/2 + 1/2 * 1/log_2(16 ) = 0.625 prvotnih stroškov, kar vodi do ustreznega izboljšanja učinkovitosti.

Na splošno, ko potreba upravičuje porazdeljeno usposabljanje (težave z velikostjo modela skaliranja ali podatki o usposabljanju), lahko sledimo naboru najboljših praks, da ugotovimo, kateri pristop najbolje deluje.

Najboljše prakse za porazdeljeno usposabljanje

Na podlagi naših izkušenj predlagamo, da začnete z vzporednim pristopom porazdeljenih podatkov. Paralelizem porazdeljenih podatkov, kot je Porazdeljena podatkovna vzporedna knjižnica SageMaker rešuje večino omrežnih težav s kopijami modelov, zato bi morali modele namestiti v najmanjše število vozlišč, nato pa jih po potrebi ponoviti v velikost serije.

Če vam med usposabljanjem zmanjka pomnilnika, kot smo storili v tem scenariju, boste morda želeli preklopiti na vzporedni pristop modela. Vendar razmislite o teh alternativah, preden poskusite vzporedno usposabljanje modela:

  • Na strojni opremi, opremljeni z NVIDIA Tensor Core, uporabite mešano precizni trening ustvariti pospešek in zmanjšati porabo pomnilnika.
  • Zmanjšajte velikost paketa (ali zmanjšajte ločljivost slike ali dolžino zaporedja NLP, če je mogoče).

Poleg tega imamo raje modele modelov, ki nimajo paketne normalizacije, kot je opisano v Visoko zmogljivo prepoznavanje velikih slik brez normalizacije. Če se temu ni mogoče izogniti, zagotovite, da je paketna normalizacija sinhronizirana med napravami. Ko uporabljate porazdeljeno usposabljanje, je vaš paket razdeljen med grafične procesorje, zato natančna statistika paketa zahteva sinhronizacijo v vseh napravah. Brez tega bo imela normalizacija povečano napako in s tem oslabljeno konvergenco.

Začnite z modelnim vzporednim usposabljanjem, ko imate naslednje omejitve:

  • Vaš model ne ustreza eni napravi
  • Zaradi velikosti vašega modela se soočate z omejitvami pri izbiri večjih velikosti paketov, na primer, če uteži vaših modelov zavzamejo večino pomnilnika GPE in ste prisiljeni izbrati manjšo, neoptimalno velikost paketa

Ko optimizirate zmogljivost, naredite naslednje:

  • Uporabite cevovod za komunikacije med vozlišči, da zmanjšate zakasnitev in povečate prepustnost
  • Cevovodi naj bodo čim krajši, da zmanjšate mehurčke. Število mikrošarž mora biti nastavljeno tako, da uravnoteži računsko učinkovitost z velikostjo mehurčkov, in mora biti vsaj dolžina cevovoda. Po potrebi lahko oblikujete mikroserije na ravni žetona, kot je opisano v TeraPipe: Paralelizem cevovoda na ravni žetonov za usposabljanje obsežnih jezikovnih modelov

Ko optimizirate stroške, za usposabljanje uporabite Spot Instance, ki jih upravlja SageMaker. To lahko optimizira stroške modelov za usposabljanje do 90 % v primerjavi z instancami na zahtevo. SageMaker upravlja prekinitve Spot v vašem imenu.

Drugi dejavniki, ki jih je treba upoštevati:

  • Znotraj vozlišča, ko obstaja hitra medsebojna povezava, je bolj niansirano. Če je omrežna zmogljivost znotraj vozlišča dovolj velika, lahko prerazporeditev podatkov za bolj optimalno računanje prinese koristi.
  • Če so aktivacije veliko večje od tenzorjev teže, lahko pomaga tudi razdeljeni optimizator. Prosimo, glejte ZeRO Za več podrobnosti.

Naslednja tabela ponuja nekaj pogostih scenarijev povečanja usposabljanja in kako jih lahko konfigurirate v AWS.

Scenarij Kdaj velja? Rešitev
Skaliranje z ene GPE na več GPE Ko je količina podatkov o usposabljanju ali velikost modela prevelika Preklopite na primerek z več grafičnimi procesorji, kot je p3.16xlarge, ki ima osem grafičnih procesorjev, pri čemer so podatki in obdelava razdeljeni na osem grafičnih procesorjev, kar zagotavlja skoraj linearno pospešitev v času, ki je potreben za usposabljanje vašega modela.
Skaliranje iz enega primerka v več primerkov Ko potrebe po skaliranju presegajo spreminjanje velikosti primerka Povečajte število instanc s funkcijo ocenjevalca SDK SageMaker Python, tako da nastavite svoj instance_type na p3.16xlarge in instance_count na 2. Namesto osmih GPU-jev na enem p3.16xlarge imate 16 GPU-jev v dveh enakih instancah. Razmislite o uporabi Porazdeljena podatkovna vzporedna knjižnica SageMaker.
Izbira modela vzporednega pristopa za usposabljanje Ko med vadbo naletite na napake zaradi pomanjkanja pomnilnika Preklopite na model vzporednega pristopa z uporabo SageMaker porazdeljena vzporedna knjižnica modelov.
Učinkovitost omrežja za komunikacije med vozlišči Za porazdeljeno usposabljanje z več primerki (na primer komunikacija med vozlišči v gruči pri izvajanju operacije AllReduce) Vaši primerki morajo biti v isti regiji in istem območju razpoložljivosti. Ko uporabljate SDK SageMaker Python, se to uredi namesto vas. Tudi vaši podatki o vadbi morajo biti v istem območju razpoložljivosti. Razmislite o uporabi Porazdeljena podatkovna vzporedna knjižnica SageMaker.
Optimiziran GPU, omrežje in shramba Za potrebe obsežnega porazdeljenega usposabljanja Vrsta primerka p4d.24xlarge je bila zasnovana za hitro lokalno shranjevanje in hitro omrežno hrbtno ploščo z do 400 gigabiti, zato jo zelo priporočamo kot najzmogljivejšo možnost za porazdeljeno usposabljanje.

zaključek

Z vzporedno knjižnico modelov v SageMakerju dobimo veliko prednosti že takoj, kot sta avtomatizirano particioniranje modela in učinkovito cevovodno povezovanje. V tej objavi smo delili naše izzive z našim primerom uporabe ML, naše premisleke o različnih pristopih k usposabljanju in kako smo uporabili knjižnico paralelizma modelov Amazon SageMaker za pospešitev našega usposabljanja. Najboljše od vsega pa je, da lahko zdaj traja le nekaj ur, da sprejmete najboljše prakse za vzporednost modelov in izboljšave zmogljivosti, opisane tukaj. Če vam ta objava pomaga ali vas navdihne pri reševanju težave, bomo radi slišali o njej! Delite svoje komentarje in povratne informacije.

Reference

Za več informacij glejte naslednje:


O avtorjih

Prem Ranga je Enterprise Solutions Architect s sedežem iz Atlante, GA. Je član Strokovne skupnosti za strojno učenje in rad sodeluje s strankami na poti ML in AI. Prem je navdušen nad robotiko, je avtonomni raziskovalec vozil in je v Houstonu in na drugih lokacijah zgradil pivske točilnice, ki jih nadzira Alexa.

Sarah Jane Hong je soustanovitelj in glavni znanstveni direktor pri Latent Space. Njeno ozadje je na presečišču interakcije med človekom in računalnikom ter strojnega učenja. Pred tem je vodila NLP raziskave pri Sonarju (ki ga je kupil Marchex), ki služi podjetjem v pogovornem prostoru umetne inteligence. Je tudi cenjena razvijalka AR/VR, saj je prejela nagrade in štipendije Oculusa, Mozilla Mixed Reality in Microsoft Hololens.

Darryl Barnhart je soustanovitelj in glavni tehnološki direktor pri Latent Space. Je izkušen razvijalec z izkušnjami na področju pospeševanja GPE, računalniške grafike, podatkov velikega obsega in strojnega učenja. Druge strasti vključujejo matematiko, razvoj iger in študij informacij.

Ian Thompson je ustanovitelj in izvršni direktor podjetja Latent Space. Ian je inženir in raziskovalec, ki ga navdihujejo »sosednje možne« tehnologije, ki bodo imele velik vpliv na naša življenja. Trenutno se osredotoča na poenostavitev in prilagajanje učenja multimodalnega predstavljanja za pomoč pri izgradnji varne in ustvarjalne umetne inteligence. Pred tem je pomagal graditi podjetja na področju grafike/navidezne resničnosti (AltspaceVR, prevzet s strani Microsofta) in izobraževanja/NLP (HSE).

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

Časovni žig:

Več od Blog za strojno učenje AWS