V zadnjih nekaj letih se hitro razvija področje obdelave naravnega jezika (NLP). Medtem ko se je strojna oprema izboljšala, na primer z najnovejšo generacijo pospeševalnikov NVIDIA in Amazon, strokovnjaki za napredno strojno učenje (ML) še vedno redno naletijo na težave pri prilagajanju svojih velikih jezikovnih modelov na več grafičnih procesorjev.
V tej objavi na spletnem dnevniku na kratko povzemamo vzpon velikih in majhnih modelov NLP, predvsem z abstrakcijo, ki jo zagotavlja Hugging Face, in z modularnim zaledjem Amazon SageMaker. Posebej izpostavljamo uvedbo štirih dodatnih funkcij v vzporedni knjižnici modelov SageMaker, ki odklenejo 175 milijard parametrov predusposabljanja in natančnega prilagajanja modela NLP za stranke.
To knjižnico smo uporabili na platformi za usposabljanje SageMaker in dosegli pretok 32 vzorcev na sekundo na 120 ml.p4d.24xlarge primerkih in 175 milijardah parametrov. Predvidevamo, da če bi to povečali na 240 primerkov, bi trajalo 25 dni za usposabljanje celotnega modela.
Za več informacij o vzporednosti modela glejte prispevek Paralelizem modela Amazon SageMaker: splošen in prilagodljiv okvir za usposabljanje velikih modelov.
Ogledate si lahko tudi prenosnik GPT2, ki smo ga uporabili za ustvarjanje teh številk uspešnosti, na našem GitHub repozitorij.
Če želite izvedeti več o uporabi novih funkcij v vzporednem modelu SageMaker, glejte Razširjene funkcije vzporedne knjižnice modela SageMaker za PyTorchin Uporabite s SDK SageMaker Python.
NLP na Amazon SageMaker – Hugging Face in paralelizem modela
Če še niste spoznali Hugging Face in NLP, je najpomembnejše, kar morate vedeti, da aplikacije, ki uporabljajo obdelavo naravnega jezika (NLP), začenjajo dosegati zmogljivost na človeški ravni. To v veliki meri poganja mehanizem učenja, imenovan pozornosti, ki je povzročil model globokega učenja, imenovan transformator, ki je veliko bolj prilagodljiv kot prejšnje zaporedne metode globokega učenja. Zdaj slavni Model BERT je bil razvit, da bi izkoristil transformator in ob tem razvil več uporabnih NLP taktik. Transformerji in nabor modelov, znotraj in zunaj NLP, ki jih je navdihnil BERT, so glavni motor za vašimi rezultati iskanja v Googlu, v vašem Rezultati Google Translatein množica novih startupov.
SageMaker in Hugging Face sta sodelovala, da bi to strankam olajšala kot kdaj koli prej. Predstavili smo vsebnike za globoko učenje Hugging Face (DLC), da lahko usposabljate in gostite predhodno usposobljene modele neposredno iz Hugging Face's repozitorij več kot 26,000 modelov. Začeli smo SageMaker Training Compiler za vas, da pospešite čas izvajanja vaših vadbenih zank Hugging Face do 50 %. Integrirali smo tudi vodilni SDK za Transformers Hugging Face z naše porazdeljene knjižnice za usposabljanje da bo razširitev vaših NLP modelov enostavnejša kot kdaj koli prej.
Za več informacij o modelih Hugging Face Transformer na Amazon SageMaker glejte Podpora za transformatorske modele objemajočih obrazov.
Nove funkcije za obsežno usposabljanje modelov NLP z vzporedno knjižnico modelov SageMaker
Na AWS re:Invent 2020 je SageMaker lansiral porazdeljene knjižnice, ki zagotavljajo najboljšo zmogljivost v oblaku za usposabljanje modelov računalniškega vida, kot je Maska-RCNN in modeli NLP, kot so T5-3B. To je mogoče z izboljšanimi komunikacijskimi primitivi, ki so 20-40 % hitrejši od NCCL na AWS, in tehnikami distribucije modelov, ki omogočajo izjemno velikim jezikovnim modelom, da se razširijo na več deset do sto do tisoč GPU-jev.
Vzporedna knjižnica modelov SageMaker (SMP) vam vedno daje možnost, da vzamete svoj vnaprej določen model NLP v PyTorchu, bodisi prek Hugging Face ali drugje, in ta model razdelite na več grafičnih procesorjev v vaši gruči. Povedano drugače, SMP razdeli vaš model na manjše dele, tako da ne pride do napak zmanjkanja pomnilnika (OOM). Z veseljem dodajamo dodatne tehnike varčevanja s pomnilnikom, ki so kritične za velike modele, in sicer:
- Tenzorski paralelizem
- Razrezovanje stanja optimizatorja
- Aktivacijska kontrolna točka
- Razbremenitev aktivacije
Te štiri funkcije lahko združite, da učinkoviteje izkoristite pomnilnik in usposobite naslednjo generacijo ekstremnih NLP modelov.
Porazdeljeno usposabljanje in tenzorski paralelizem
Da bi razumeli tenzorski paralelizem, je koristno vedeti, da obstaja veliko vrst porazdeljenega usposabljanja ali paralelizma. Verjetno ste že seznanjeni z najpogostejšim tipom, vzporednost podatkov. Jedro podatkovne vzporednosti deluje takole: svoji gruči dodate dodatno vozlišče, na primer preidete z enega na dva primerka ml.EC2 v vašem ocenjevalcu SageMaker. Nato uporabite podatkovno vzporedno ogrodje, kot je Horovod, PyTorch Distributed Data Parallel ali SageMaker Distributed. To ustvari replike vašega modela, eno na pospeševalnik, in obravnava razčlenjevanje podatkov v vsako vozlišče, skupaj z združevanjem vseh rezultatov med korakom povratnega širjenja vaše nevronske mreže. Pomislite na porazdeljen gradientni spust. Paralelizem podatkov je prav tako priljubljen v strežnikih; delite podatke v vse GPU-je in občasno v CPE-je na vseh svojih vozliščih. Naslednji diagram prikazuje vzporednost podatkov.
Paralelizem modela je nekoliko drugačen. Namesto izdelave kopij istega modela vaš model razdelimo na dele. Nato upravljamo delovanje, tako da vaši podatki še vedno tečejo skozi vašo nevronsko mrežo na matematično popolnoma enak način, vendar različni deli vašega modela sedijo na različnih grafičnih procesorjih. Če uporabljate ml.p3.8xlarge, imate štiri NVIDIA V100, zato bi verjetno želeli svoj model razdeliti na 4 dele, po en kos na GPE. Če skočite na dva ml.p4d.24xlarge, je to skupaj 16 A100 v vaši gruči, tako da lahko svoj model razdelite na 16 kosov. To se včasih tudi imenuje vzporednost cevovoda. To je zato, ker je nabor plasti v omrežju razdeljen na GPE-je in deluje cevovodno, da se poveča izkoristek GPU-ja. Naslednji diagram prikazuje vzporednost modela.
Da bi vzporednost modela potekala v velikem obsegu, potrebujemo tretjo vrsto distribucije: tenzorski paralelizem. Tenzorski paralelizem uporablja iste koncepte še en korak naprej – razbijemo največje plasti vaše nevronske mreže in postavimo dele samih plasti na različne naprave. To je pomembno, ko delate s 175 milijardami parametrov ali več in poskušate spraviti celo nekaj zapisov v RAM, skupaj z deli vašega modela, da usposobite ta transformator. Naslednji diagram ponazarja vzporednost tenzorjev.
Omogočiti paralelizem tenzorja, ga nastavite v možnostih smp greš k svojemu cenilcu.
V prejšnji kodi je pipeline_parallel_degree
opisuje, na koliko segmentov naj bo vaš model razdeljen na podlagi paralelizma cevovoda, o katerem smo govorili zgoraj. Druga beseda za to je rezultati.
Če želite omogočiti vzporednost tenzorjev, nastavite tensor_parallel_degree
na želeno raven. Prepričajte se, da ste izbrali število, ki je enako ali manjše od števila GPU-jev na primerek, torej ne večje od 8 za stroje ml.p4d.24xlarge. Za dodatne spremembe skripta glejte Zaženite opravilo vzporednega usposabljanja porazdeljenega modela SageMaker s tenzorskim paralelizmom.
Parameter ddp se nanaša na porazdeljene vzporedne podatke. To običajno omogočite, če uporabljate vzporednost podatkov ali paralelizem tenzorjev, ker se knjižnica vzporednosti modelov za te funkcije opira na DDP.
Razdelitev stanja optimizatorja, razbremenitev aktivacije in kontrolne točke
Če imate izjemno velik model, potrebujete tudi izjemno veliko stanje optimizatorja. Priprava optimizatorja za SMP je enostavna: preprosto ga vzemite z diska v svojem skriptu in naložite v smp.DistributedOptimizer()
predmet.
Prepričajte se, da ste to omogočili pri ocenjevalcu z nastavitvijo shard_optimizer_state
do True v smp_options
ki ga uporabljate za konfiguracijo SMP:
Podobno kot tenzorski in cevovodni paralelizem, SMP profilira vaš model in vašo velikost sveta (skupno število grafičnih procesorjev v vseh vaših vadbenih vozliščih), da poišče najboljše strategije umestitve.
Pri poglobljenem učenju se izhodi vmesne plasti imenujejo tudi aktivacije, ki jih je treba shraniti med prehodom naprej. To je zato, ker jih je treba uporabiti za izračun gradienta pri prehodu nazaj. V velikem modelu lahko shranjevanje vseh teh aktivacij v pomnilniku povzroči znatna ozka grla v pomnilniku. Če želite odpraviti to ozko grlo, lahko uporabite aktivacijska kontrolna točka, tretja nova funkcija v knjižnici paralelizma modelov SageMaker. Aktivacijska kontrolna točka, oz gradientna kontrolna točka, je tehnika za zmanjšanje porabe pomnilnika s čiščenjem aktivacij določenih plasti in njihovim ponovnim izračunavanjem med prehodom nazaj. To učinkovito zamenja dodatni računski čas za manjšo porabo pomnilnika.
Končno, aktiviranje razbremenitve neposredno uporablja aktivacijsko kontrolno točko. To je strategija, da med usposabljanjem modela ohranite le nekaj aktivacij tenzorja na GPU RAM. Natančneje, premaknemo aktivacije s kontrolnimi točkami v pomnilnik CPE med prehodom naprej in jih naložimo nazaj v GPE za povratni prehod določene mikro serije.
Mikroserije in strategije umeščanja
Druge teme, ki včasih povzročajo zmedo pri strankah, so mikro serije in strategije umeščanja. Oba sta hiperparametra, ki ju lahko posredujete vzporedni knjižnici modela SageMaker. Natančneje, mikro serije so pomembne pri izvajanju modelov, ki temeljijo na vzporednosti cevovoda, kot so tisti z velikostjo vsaj 30 milijard parametrov ali več.
Mikro serije so podskupine mini šarž. Ko je vaš model v vadbeni zanki, določite določeno število zapisov, ki jih poberete in prenesete naprej in nazaj skozi plasti – to se imenuje mini serija, ali včasih samo a serija. Popoln prehod skozi vaš nabor podatkov se imenuje an epoha. Za izvajanje prehodov naprej in nazaj s paralelizmom cevovoda model SageMaker vzporedne knjižnice razdeli serije v manjše podskupine, imenovane mikro serije, ki se izvajajo ena za drugo, da se maksimira uporaba GPE. Nastali, veliko manjši nabor primerov na GPE se imenuje mikro serija. V našem primeru GPT-2 dodali smo privzeto 1 mikroserijo neposredno v skript za usposabljanje.
Ko povečate svojo konfiguracijo usposabljanja, močno priporočamo, da ustrezno spremenite velikost serije in velikost mikro serije. To je edini način za zagotovitev dobre zmogljivosti: pri zanašanju na vzporednost cevovoda morate upoštevati velikost serije in mikro-serije kot funkcijo vaše celotne svetovne velikosti.
Strategije umestitve so, kako SageMakerju fizično povedati, kam naj postavi particije vašega modela. Če uporabljate vzporedni model in vzporedne podatke, nastavitev placement_strategy
do “cluster”
postavi replike modela v ID-je naprav (GPU-je), ki so fizično blizu druga drugi. Če pa res želite bolj predpisovati svojo strategijo paralelizma, jo lahko razdelite v en sam niz z različnimi kombinacijami treh črk: D za vzporednost podatkov, P
označuje vzporednost cevovoda in T
za tenzorski paralelizem. Na splošno priporočamo, da obdržite privzeto postavitev "cluster"
, ker je to najbolj primerno za usposabljanje modelov v velikem merilu. Postavitev "grude" ustreza "DPT
".
Za več informacij o strategijah umestitve glejte Strategija umestitve s tenzorskim paralelizmom.
Primer uporabe
Predstavljajmo si, da imate en ml.p3.16xlarge na svojem izobraževalnem delovnem mestu. To vam daje 8 NVIDIA V100 na vozlišče. Ne pozabite, da vsakič, ko dodate dodaten primerek, naletite na dodatne stroške pasovne širine, zato je vedno bolje imeti več GP'Us na enem vozlišču. V tem primeru vam je bolje z enim ml.p3.16xlarge kot na primer z dvema ml.p3.8xlarge. Čeprav je število grafičnih procesorjev enako, dodatne obremenitve pasovne širine dodatnega vozlišča upočasnijo vašo prepustnost.
Naslednji diagram ponazarja štirismerni paralelizem modela v kombinaciji z dvosmernim paralelizmom podatkov. To pomeni, da imate dejansko dve repliki vašega modela (pomislite na vzporedne podatke), pri čemer je vsaka od njih razdeljena na štiri GPU-je (vzporedni model).
Če je katera koli od teh modelnih particij prevelika, da bi se prilegala enemu GPE-ju, lahko dodate dodatno vrsto porazdelitve – tenzorski paralelizem – da jo izpljunete in uporabite obe napravi.
zaključek
V tem blogu smo razpravljali o porazdeljenih knjižnicah za usposabljanje SageMaker, s posebnim poudarkom na vzporednosti modelov. Delili smo merila uspešnosti iz našega zadnjega preizkusa, pri čemer smo dosegli 32 vzorcev na sekundo v 120 ml.p4d.24xlarge instancah in 175B parametrih na Amazon SageMaker. Predvidevamo, da bi lahko, če bi to povečali na 240 primerkov p4, usposobili model parametrov 175B v 25 dneh.
Razpravljali smo tudi o najnovejših funkcijah, ki omogočajo obsežno usposabljanje, in sicer tenzorski paralelizem, razrez stanja optimizatorja, aktivacijsko kontrolno točko in aktivacijsko razbremenitev. Delili smo nekaj nasvetov in trikov za omogočanje tega z usposabljanjem na Amazon SageMaker.
Preizkusite sami z uporabo istega zvezka, ki je ustvaril naše številke, ki je na voljo na GitHubu tukaj. Prav tako lahko zahtevate več grafičnih procesorjev za svoj račun AWS tukaj zahtevate odobritev omejitve storitev.
O avtorjih
Emily Webber se je pridružil AWS takoj po lansiranju SageMakerja in od takrat poskuša svetu povedati o njem! Poleg ustvarjanja novih izkušenj ML za stranke Emily uživa v meditaciji in preučevanju tibetanskega budizma.
Aditya Bindal je višji produktni vodja za globoko učenje AWS. Dela na izdelkih, ki strankam olajšajo usposabljanje modelov globokega učenja na AWS. V prostem času rad preživlja čas s hčerko, igra tenis, bere zgodovinsko fantastiko in potuje.
Luis Quintela je vodja razvijalca programske opreme za vzporedno knjižnico modela AWS SageMaker. V prostem času ga je mogoče najti med vožnjo s svojim harleyjem na območju SF Bay.
- Coinsmart. Najboljša evropska borza bitcoinov in kriptovalut.
- Platoblockchain. Web3 Metaverse Intelligence. Razširjeno znanje. PROST DOSTOP.
- CryptoHawk. Altcoin radar. Brezplačen preizkus.
- Vir: https://aws.amazon.com/blogs/machine-learning/train-175-billion-parameter-nlp-models-with-model-parallel-additions-and-hugging-face-on-amazon-sagemaker/
- "
- 000
- 100
- 2020
- 39
- O meni
- plin
- Račun
- doseže
- čez
- Dodatne
- Naslov
- napredno
- vsi
- že
- Amazon
- Še ena
- aplikacije
- OBMOČJE
- Na voljo
- AWS
- zaliv
- BEST
- največji
- Billion
- Blog
- Building
- Vzrok
- spremenite
- Cloud
- Koda
- kombinacije
- Skupno
- Komunikacija
- konfiguracija
- zmeda
- Zabojniki
- Core
- bi
- Stranke, ki so
- datum
- razvili
- Razvojni
- Razvoj
- naprava
- naprave
- drugačen
- porazdeljena
- distribucija
- navzdol
- vozi
- omogočanje
- zlasti
- Primer
- izkušnje
- Doživetja
- ekstremna
- Obraz
- hitreje
- Feature
- Lastnosti
- Fiction
- fit
- po
- Naprej
- je pokazala,
- Okvirni
- polno
- funkcija
- splošno
- ustvarjajo
- GitHub
- dogaja
- dobro
- Google Search
- GPU
- strojna oprema
- pomoč
- Označite
- zgodovinski
- Kako
- Kako
- HTTPS
- Stotine
- povečal
- Podatki
- navdih
- integrirana
- Vprašanja
- IT
- Job
- pridružil
- skoči
- vzdrževanje
- jezik
- velika
- Zadnji
- kosilo
- UČITE
- učenje
- Stopnja
- Knjižnica
- obremenitev
- stroj
- strojno učenje
- Stroji
- Izdelava
- upravitelj
- Spomin
- ML
- Model
- modeli
- Modularna
- Najbolj
- premikanje
- in sicer
- naravna
- mreža
- Nove funkcije
- vozlišča
- prenosnik
- številke
- Ostalo
- Papir
- partnerja
- performance
- kos
- platforma
- Popular
- mogoče
- primarni
- Izdelek
- Izdelki
- Profili
- zagotavljajo
- RAM
- RE
- reading
- Priporočamo
- evidence
- zmanjša
- Rezultati
- Run
- tek
- Je dejal
- razširljive
- Lestvica
- skaliranje
- SDK
- Iskalnik
- Storitev
- nastavite
- nastavitev
- brušenje
- deli
- pomemben
- Velikosti
- So
- Software
- posebej
- hitrost
- Poraba
- po delih
- Država
- strategije
- Strategija
- dobavi
- taktike
- tehnike
- Test
- svet
- tisoče
- skozi
- čas
- nasveti
- Nasveti in triki
- skupaj
- Teme
- Trgovanja z dobičkom
- usposabljanje
- razumeli
- uporaba
- uporabiti
- Vizija
- v
- deluje
- deluje
- svet
- let