Tehnike za usposabljanje podatkovne inteligence velikih nevronskih mrež PlatoBlockchain. Navpično iskanje. Ai.

Tehnike za usposabljanje velikih nevronskih mrež

Tehnike za usposabljanje velikih nevronskih mrež

Velike nevronske mreže so jedro številnih nedavnih dosežkov umetne inteligence, vendar je njihovo usposabljanje težak inženirski in raziskovalni izziv, ki zahteva orkestriranje gruče grafičnih procesorjev za izvedbo enega samega sinhroniziranega izračuna. Ko so se velikosti gruč in modelov povečale, so izvajalci strojnega učenja razvili vse več različnih tehnik za vzporedno usposabljanje modelov v številnih grafičnih procesorjih. Na prvi pogled se morda zdi razumevanje teh tehnik vzporednosti zastrašujoče, vendar le z nekaj predpostavkami o strukturi izračuna postanejo te tehnike veliko bolj jasne – na tej točki se samo premikate po neprozornih bitih od A do B kot mreža preklapljanje med paketi.

Paralelizem podatkov

Tehnike za usposabljanje velikih nevronskih mrež

Paralelizem cevovoda

Tehnike za usposabljanje velikih nevronskih mrež

Tenzorski paralelizem

Tehnike za usposabljanje velikih nevronskih mrež

Strokovni paralelizem

Tehnike za usposabljanje velikih nevronskih mrež

Paralelizem podatkov

Tehnike za usposabljanje velikih nevronskih mrež

Paralelizem cevovoda

Tehnike za usposabljanje velikih nevronskih mrež

Tenzorski paralelizem

Tehnike za usposabljanje velikih nevronskih mrež

Strokovni paralelizem

Tehnike za usposabljanje velikih nevronskih mrež

Ilustracija različnih strategij paralelizma na troslojnem modelu. Vsaka barva se nanaša na eno plast, črtkane črte pa ločujejo različne grafične procesorje.

Brez paralelizma

Usposabljanje nevronske mreže je ponavljajoč se proces. V vsaki ponovitvi naredimo prehod naprej skozi model plasti za izračun rezultatov za vsak primer usposabljanja v paketu podatkov. Nato se nadaljuje še en prehod nazaj skozi plasti, pri čemer se z izračunom a določi, koliko vsak parameter vpliva na končni rezultat gradient glede na vsak parameter. Povprečni gradient za serijo, parametre in nekaj stanja optimizacije na parameter se posreduje optimizacijskemu algoritmu, kot je npr. Adam, ki izračuna parametre naslednje ponovitve (ki bi morali imeti nekoliko boljšo zmogljivost na vaših podatkih) in novo stanje optimizacije za vsak parameter. Ko se usposabljanje ponavlja v serijah podatkov, se model razvija, da proizvaja vedno natančnejše rezultate.

Različne vzporedne tehnike ta proces usposabljanja razdelijo na različne dimenzije, vključno z:

  • Vzporednost podatkov – zaženite različne podmnožice paketa na različnih grafičnih procesorjih;
  • Vzporednost cevovoda – zaženite različne plasti modela na različnih grafičnih procesorjih;
  • Paralelizem tenzorjev—razčlenite matematiko za posamezno operacijo, kot je množenje matrike, ki se razdeli med grafične procesorje;
  • Mešanica strokovnjakov—obdelajte vsak primer le z delom vsakega sloja.

(V tej objavi bomo domnevali, da uporabljate grafične procesorje za urjenje svojih nevronskih mrež, vendar iste zamisli veljajo za tiste, ki uporabljajo katero koli drugo pospeševalnik nevronske mreže.)

Paralelizem podatkov

Podatki vzporedno usposabljanje pomeni kopiranje istih parametrov v več grafičnih procesorjev (pogosto imenovanih "delavci") in dodeljevanje različnih primerov vsakemu, ki se obdelujejo hkrati. Sama vzporednost podatkov še vedno zahteva, da se vaš model prilega pomnilniku enega samega GPE-ja, vendar vam omogoča, da uporabite izračun številnih GPU-jev za ceno shranjevanja številnih podvojenih kopij vaših parametrov. Kot rečeno, obstajajo strategije za povečanje efektivnega RAM-a, ki je na voljo vašemu GPE-ju, kot je začasno raztovarjanje parametrov v pomnilnik CPE-ja med uporabami.

Ko vsak podatkovni vzporedni delavec posodobi svojo kopijo parametrov, se morajo uskladiti, da zagotovijo, da ima vsak delavec še naprej podobne parametre. Najenostavnejši pristop je uvedba blokirne komunikacije med delavci: (1) neodvisno izračunajte gradient za vsakega delavca; (2) povprečje gradientov med delavci; in (3) neodvisno izračuna iste nove parametre za vsakega delavca. Korak (2) je blokirno povprečje, ki zahteva prenos precej podatkov (sorazmerno s številom delavcev, pomnoženim z velikostjo vaših parametrov), kar lahko škoduje vaši zmogljivosti usposabljanja. Obstajajo različne asinhrone sinhronizacijske sheme odstraniti te režijske stroške, vendar škodijo učinkovitosti učenja; v praksi se ljudje na splošno držijo sinhronega pristopa.

Paralelizem cevovoda

z Vzporedni cevovod usposabljanje, razdelimo zaporedne dele modela med grafične procesorje. Vsak GPE ima le del parametrov, zato isti model porabi sorazmerno manj pomnilnika na GPE.

Velik model je preprosto razdeliti na dele zaporednih plasti. Vendar pa obstaja zaporedna odvisnost med vhodi in izhodi slojev, tako da lahko naivna izvedba povzroči veliko časa nedejavnosti, medtem ko delavec čaka na izhode prejšnjega stroja, ki se uporabijo kot njegovi vhodi. Ti kosi čakalnega časa so znani kot "mehurčki", ki zapravljajo računanje, ki bi ga lahko opravili stroji v prostem teku.

Tehnike za usposabljanje velikih nevronskih mrež Naprej
Tehnike za usposabljanje velikih nevronskih mrež Nazaj
Tehnike za usposabljanje velikih nevronskih mrež Gradientna posodobitev
Tehnike za usposabljanje velikih nevronskih mrež Mirovanje
Tehnike za usposabljanje velikih nevronskih mrež

Ilustracija naivne nastavitve vzporednosti cevovoda, kjer je model navpično razdeljen na 4 particije po slojih. Delavec 1 gosti parametre modela prve plasti omrežja (najbližje vhodu), medtem ko delavec 4 gosti plast 4 (ki je najbližje izhodu). »F«, »B« in »U« predstavljajo operacije naprej, nazaj in posodobitev. Indeksi označujejo, na katerem delavcu se izvaja operacija. Podatke obdeluje en delavec naenkrat zaradi zaporedne odvisnosti, kar vodi do velikih "mehurčkov" nedejavnosti.

Znova lahko uporabimo ideje iz paralelizma podatkov, da zmanjšamo stroške mehurčka, tako da vsak delavec obdeluje samo podmnožico podatkovnih elementov hkrati, kar nam omogoča pametno prekrivanje novega izračuna s čakalnim časom. Osnovna ideja je razdeliti eno serijo na več mikrošarij; vsaka mikroserija mora biti sorazmerno hitrejša za obdelavo in vsak delavec začne delati na naslednji mikroseriji takoj, ko je na voljo, s čimer se pospeši izvajanje cevovoda. Z dovolj mikroserij se lahko večino časa uporabljajo delavci z minimalnim mehurčkom na začetku in koncu koraka. Gradienti so povprečni za mikroserije, posodobitve parametrov pa se zgodijo šele, ko so vse mikroserije dokončane.

Število delavcev, na katere je model razdeljen, je splošno znano kot globina cevovoda.

Med prehodom naprej morajo delavci le poslati izhod (imenovan aktivacije) svojega dela plasti naslednjemu delavcu; med prehodom nazaj prejšnjemu delavcu pošlje le gradiente teh aktivacij. Obstaja velik prostor za načrtovanje, kako razporediti te prehode in kako združiti gradiente v mikroserijah. GPipe ima vsak delovni proces zaporedni prehod naprej in nazaj in nato na koncu sinhrono združi gradiente iz več mikrobač. PipeDream namesto tega razporedi vsakega delavca za izmenično obdelavo prehodov naprej in nazaj.

Tehnike za usposabljanje velikih nevronskih mrež Naprej
Tehnike za usposabljanje velikih nevronskih mrež Nazaj
Tehnike za usposabljanje velikih nevronskih mrež Nadgradnja
Tehnike za usposabljanje velikih nevronskih mrež Mirovanje
GPipe

Tehnike za usposabljanje velikih nevronskih mrež

PipeDream

Tehnike za usposabljanje velikih nevronskih mrež

Primerjava cevovodnih shem GPipe in PipeDream z uporabo 4 mikrošarž na serijo. Mikroserije 1–8 ustrezajo dvema zaporednima serijama podatkov. Na sliki »(številka)« označuje, na kateri mikrošarži se izvaja operacija, podnaslov pa označuje ID delavca. Upoštevajte, da PipeDream pridobi večjo učinkovitost z izvajanjem nekaterih izračunov z zastarelimi parametri.

Tenzorski paralelizem

Vzporednost cevovoda razdeli model "navpično" po slojih. Možno je tudi »vodoravno« razdelitev določenih operacij znotraj sloja, ki se običajno imenuje Tenzorski vzporednik usposabljanje. Za številne sodobne modele (kot je Transformer), ozko grlo računanja je množenje aktivacijske paketne matrike z veliko utežno matriko. Matrično množenje si jih lahko predstavljamo kot pikčaste produkte med pari vrstic in stolpcev; možno je izračunati neodvisne pikčaste produkte na različnih grafičnih procesorjih ali izračunati dele vsakega pikčastega produkta na različnih grafičnih procesorjih in sešteti rezultate. Z obema strategijama lahko matriko uteži razrežemo na enako velike »odrezke«, vsak delček gostimo na drugem GPE-ju in uporabimo ta delček za izračun ustreznega dela celotnega izdelka matrike, preden pozneje komuniciramo in združimo rezultate.

En primer je Megatron-LM, ki vzporedi množenja matrik znotraj Transformerjeve plasti samopozornosti in MLP. PTD-P uporablja tenzorski, podatkovni in cevovodni paralelizem; njegov razpored cevovoda vsaki napravi dodeli več nezaporednih slojev, s čimer se zmanjšajo stroški mehurčkov za ceno več omrežne komunikacije.

Včasih se lahko vhod v omrežje vzporedi po dimenziji z visoko stopnjo vzporednega računanja glede na navzkrižno komunikacijo. Paralelizem zaporedja je ena taka ideja, kjer se vhodno zaporedje skozi čas razdeli na več podprimerov, s čimer se sorazmerno zmanjša največja poraba pomnilnika, tako da se izračun lahko nadaljuje s primeri z bolj zrnato velikostjo.

Mešanica strokovnjakov (MoE)

Z Mešanica strokovnjakov (MoE) pristopu se za izračun izhoda za kateri koli vhod uporabi le del omrežja. Eden od primerov pristopa je imeti veliko nizov uteži in omrežje lahko izbere, kateri niz bo uporabilo prek mehanizma prehodov v času sklepanja. To omogoča veliko več parametrov brez povečanih stroškov računanja. Vsak niz uteži se imenuje "strokovnjaki", v upanju, da se bo omrežje naučilo dodeliti specializirano računanje in veščine vsakemu strokovnjaku. Različne strokovnjake je mogoče gostiti na različnih grafičnih procesorjih, kar zagotavlja jasen način za povečanje števila grafičnih procesorjev, uporabljenih za model.

Tehnike za usposabljanje velikih nevronskih mrež

Ilustracija mešanega sloja strokovnjakov (MoE). Samo 2 od n strokovnjake izbere gating network. (Slika povzeta po: Shazeer et al., 2017)

GShard poveča transformator MoE do 600 milijard parametrov s shemo, kjer so samo plasti MoE razdeljene na več naprav TPU, druge plasti pa so v celoti podvojene. Preklopite transformator skalira velikost modela na trilijone parametrov s še večjo redkostjo z usmerjanjem enega vhoda enemu strokovnjaku.

Drugi modeli za varčevanje s pomnilnikom

Obstaja veliko drugih računalniških strategij, s katerimi je učenje vedno večjih nevronskih mrež bolj sledljivo. Na primer:

  • Za izračun gradienta morate shraniti izvirne aktivacije, ki lahko porabijo veliko RAM-a naprave. Kontrolna točka (znan tudi kot ponovni izračun aktivacije) shrani katero koli podmnožico aktivacij in ponovno izračuna vmesne ravno ob pravem času med prehodom nazaj. To prihrani veliko pomnilnika ob računskih stroških največ enega dodatnega polnega prehoda naprej. Prav tako lahko nenehno izbirate med stroški računanja in pomnilnika ponovni izračun selektivne aktivacije, ki je podmnožica kontrolnih točk aktivacij, ki so relativno dražje za shranjevanje, a cenejše za računanje.

  • Usposabljanje mešane natančnosti je trenirati modele z uporabo števil nižje natančnosti (najpogosteje FP16). Sodobni pospeševalniki lahko dosežejo veliko višja števila FLOP s številkami nižje natančnosti, poleg tega pa prihranite pri RAM-u naprave. Z ustrezno nego lahko nastali model skoraj ne izgubi natančnosti.

  • Razkladanje je začasno prenesti neuporabljene podatke v CPE ali med različne naprave in jih pozneje prebrati nazaj, ko je to potrebno. Naivne implementacije bodo zelo upočasnile usposabljanje, vendar bodo sofisticirane implementacije vnaprej prevzele podatke, tako da napravi nikoli ni treba čakati nanje. Ena izvedba te ideje je ZeRO ki razdeli parametre, gradiente in stanja optimizatorja po vsej razpoložljivi strojni opremi in jih po potrebi materializira.

  • Optimizatorji za učinkovito pomnilnik so bili predlagani za zmanjšanje pomnilniškega odtisa stanja delovanja, ki ga vzdržuje optimizator, Kot je Adafaktor.

  • Stiskanje lahko se uporablja tudi za shranjevanje vmesnih rezultatov v omrežju. na primer Bistvo stisne aktivacije, ki so shranjene za prehod nazaj; DALL · E stisne prelive, preden jih sinhronizira.


Pri OpenAI usposabljamo in izboljšujemo velike modele od osnovne infrastrukture pa vse do uvajanja za težave v resničnem svetu. Če želite ideje iz te objave udejanjiti v praksi – kar je še posebej pomembno za naše skupine za skaliranje in uporabne raziskave – smo najem!


Priznanja
Hvala Nikolasu Tezaku, Samu Altmanu, Danielu Gacklu, Ilyi Sutskeverju in Stevenu Adlerju za povratne informacije o osnutkih. Hvala Justinu Jayu Wangu, Bianci Martin in Stevu Dowlingu za komunikacijo in oblikovanje.

Časovni žig:

Več od OpenAI