Viimastel aastatel on loomuliku keele töötlemise (NLP) valdkonnas toimunud kiire areng. Kuigi riistvara on paranenud, näiteks NVIDIA ja Amazoni uusima põlvkonna kiirenditega, kogevad täiustatud masinõppe (ML) praktikud endiselt regulaarselt probleeme oma suurte keelemudelite skaleerimisel mitmes GPU-s.
Selles ajaveebi postituses võtame lühidalt kokku suuremahuliste ja väikesemahuliste NLP-mudelite tõusu, peamiselt Hugging Face'i ja Amazon SageMakeri modulaarse taustaprogrammi kaudu. Eelkõige rõhutame SageMakeri mudeli paralleelteegi nelja lisafunktsiooni käivitamist, mis avavad 175 miljardi parameetriga NLP-mudeli eelkoolituse ja peenhäälestuse klientide jaoks.
Kasutasime seda teeki SageMakeri koolitusplatvormil ja saavutasime läbilaskevõime 32 proovi sekundis 120 ml.p4d.24xsuurtel eksemplaridel ja 175 miljardil parameetril. Eeldame, et kui suurendaksime seda 240 eksemplarini, kuluks täismudeli väljaõpetamiseks 25 päeva.
Mudeli paralleelsuse kohta lisateabe saamiseks vaadake paberit Amazon SageMakeri mudeli paralleelsus: üldine ja paindlik raamistik suurte mudelite koolituseks.
Samuti näete meie lehel nende jõudlusnumbrite genereerimiseks kasutatud GPT2 sülearvutit GitHubi hoidla.
Lisateavet SageMakeri mudeli uute funktsioonide paralleelse kasutamise kohta leiate artiklist PyTorchi SageMakeri mudeli paralleelteegi laiendatud funktsioonidja Kasutage koos SageMaker Python SDK-ga.
NLP Amazon SageMakeris – kallistav nägu ja mudeli paralleelsus
Kui te pole Hugging Face'i ja NLP-s uus, peate teadma, et loomulikku keeletöötlust (NLP) kasutavad rakendused hakkavad saavutama inimese tasemel jõudlust. Seda juhib suuresti õppimismehhanism, nn tähelepanu, millest sündis sügav õppimismudel, mida nimetatakse trafo, mis on palju skaleeritavam kui varasemad süvaõppe järjestikused meetodid. Nüüdseks kuulus BERT mudel töötati välja trafo ärakasutamiseks ja arendas selle käigus välja mitmeid kasulikke NLP taktikaid. Transformerid ja mudelite komplekt nii NLP-s kui ka väljaspool seda, mis kõik on inspireeritud BERTist, on teie Google'i otsingutulemuste peamine mootor, teie Google'i tõlke tulemusedja hulk uusi idufirmasid.
SageMaker ja Hugging Face tegid koostööd, et muuta see klientide jaoks lihtsamaks kui kunagi varem. Oleme turule lasknud Hugging Face'i süvaõppekonteinerid (DLC-d), et saaksite koolitada ja majutada eelkoolitatud modelle otse Hugging Face's üle 26,000 XNUMX mudeli hoidlas. Oleme käivitanud SageMakeri koolituste kompilaator et saaksite oma Hugging Face treeningsilmuste tööaega kuni 50% kiirendada. Oleme ka integreerinud Hugging Face lipulaev Transformers SDK koos meie hajutatud õpperaamatukogud et muuta oma NLP-mudelite skaleerimine lihtsamaks kui kunagi varem.
Lisateabe saamiseks Hugging Face Transformeri mudelite kohta Amazon SageMakeris vt Kallistavate näomuundurite mudelite tugi.
Uued funktsioonid suuremahuliseks NLP-mudelite koolituseks koos SageMakeri mudeli paralleelteegiga
AWS re:Invent 2020 raames käivitas SageMaker hajutatud teegid, mis pakuvad pilves parimat jõudlust arvutinägemismudelite, näiteks Mask-RCNN ja NLP mudelid nagu T5-3B. See on võimalik tänu täiustatud suhtlusprimitiividele, mis on 20–40% kiiremad kui NCCL AWS-is, ja mudelijaotustehnikate abil, mis võimaldavad ülisuurte keelemudelite skaleerimist kümnete kuni sadade kuni tuhandete GPU-de vahel.
SageMakeri mudeli paralleelteek (SMP) on alati andnud teile võimaluse kasutada PyTorchis eelmääratletud NLP-mudelit, olgu siis Hugging Face'i kaudu või mujal, ja jagada see mudel klastris mitmele GPU-le. Teisisõnu jagab SMP teie mudeli väiksemateks tükkideks, nii et teil ei tekiks mälu tühjenemise (OOM) tõrkeid. Meil on hea meel lisada täiendavaid mälu säästmise tehnikaid, mis on suuremahuliste mudelite jaoks üliolulised, nimelt:
- Tensoride paralleelsus
- Optimeerija oleku jagamine
- Aktiveerimise kontrollpunkt
- Aktiveerimise mahalaadimine
Neid nelja funktsiooni saab kombineerida, et kasutada mälu tõhusamalt ja treenida järgmise põlvkonna ekstreemse ulatusega NLP-mudeleid.
Hajutatud treening ja tensori paralleelsus
Tensoriparalleelsuse mõistmiseks on kasulik teada, et hajutatud treeningut ehk parallelismi on mitut tüüpi. Tõenäoliselt olete kõige tavalisema tüübiga juba tuttav, andmete paralleelsus. Andmete paralleelsuse tuum toimib järgmiselt: lisate oma klastrisse lisasõlme, näiteks liigute SageMakeri hinnangus ühelt ml.EC2 eksemplarilt kahele. Seejärel kasutate andmete paralleelset raamistikku, nagu Horovod, PyTorch Distributed Data Parallel või SageMaker Distributed. See loob teie mudeli koopiad (üks iga kiirendi kohta) ja jagab andmed igasse sõlme ning koondab kõik tulemused teie närvivõrgu tagasiliikumise etapis. Mõelge hajutatud gradiendiga laskumisele. Andmete paralleelsus on populaarne ka serverites; jagate andmeid kõigi oma sõlmede kõigisse GPU-desse ja mõnikord ka protsessoritesse. Järgmine diagramm illustreerib andmete paralleelsust.
Mudeli paralleelsus on veidi erinev. Samast mudelist koopiate tegemise asemel jagame teie mudeli tükkideks. Seejärel haldame selle käitamist, nii et teie andmed liiguvad endiselt läbi teie närvivõrgu matemaatiliselt täpselt samamoodi, kuid teie mudeli erinevad osad asuvad erinevatel GPU-del. Kui kasutate faili ml.p3.8xlarge, on teil neli NVIDIA V100, nii et soovite tõenäoliselt jagada oma mudeli neljaks osaks, üks tükk GPU kohta. Kui hüppate kahe ml.p4d.4xlarge juurde, on teie klastris kokku 24 A16, nii et võite oma mudeli jagada 100 tükiks. Seda nimetatakse mõnikord ka torujuhtme paralleelsus. Selle põhjuseks on asjaolu, et võrgu kihtide komplekt on jaotatud GPU-de vahel ja neid juhitakse konveier viisil, et maksimeerida GPU kasutust. Järgmine diagramm illustreerib mudeli paralleelsust.
Mudeli paralleelsuse saavutamiseks mastaabis vajame kolmandat tüüpi jaotust: tensori paralleelsus. Tensori paralleelsus rakendab samu kontseptsioone ühe sammu võrra edasi – me purustame teie närvivõrgu suurimad kihid ja asetame osad kihtidest ise erinevatesse seadmetesse. See on asjakohane, kui töötate 175 miljardi või enama parameetriga ja proovite selle trafo treenimiseks mahutada RAM-i isegi mõned kirjed koos mudeli osadega. Järgmine diagramm illustreerib tensori paralleelsust.
Võimaldada tensori paralleelsus, määrake see smp valikute piires edastate oma hindajale.
Eelmises koodis pipeline_parallel_degree
kirjeldab, mitmeks segmendiks teie mudel tuleks jagada, tuginedes torujuhtme paralleelsusele, mida me eespool käsitlesime. Teine sõna selle kohta on hinded.
Tensori paralleelsuse lubamiseks määrake tensor_parallel_degree
soovitud tasemele. Veenduge, et valiksite arvu, mis on võrdne GPU-de arvuga eksemplari kohta või sellest väiksem, nii et ml.p8d.4xlarge masinate puhul ei tohi see olla suurem kui 24. Täiendavate skriptimuudatuste kohta vaadake Viige läbi SageMakeri hajutatud mudeliga paralleelse koolituse töö tensori paralleelsusega.
Parameeter ddp viitab paralleelselt hajutatud andmetele. Tavaliselt lubate selle, kui kasutate andmete paralleelsust või tensoride paralleelsust, kuna mudeli paralleelsuse teek tugineb nende funktsioonide jaoks DDP-le.
Optimeerija oleku jagamine, aktiveerimise mahalaadimine ja kontrollpunktid
Kui teil on väga suur mudel, on teil vaja ka äärmiselt suurt optimeerija olekut. Optimeerija ettevalmistamine SMP jaoks on lihtne: lihtsalt võtke see oma skripti kettalt üles ja laadige smp.DistributedOptimizer()
objekt
Seadistades veenduge, et olete selle hindajas lubanud shard_optimizer_state
to True aastal smp_options
mida kasutate SMP konfigureerimiseks:
Sarnaselt tensori ja konveieri paralleelsusele profiilib SMP teie mudeli ja maailma suuruse (GPU-de koguarv kõigis teie treeningsõlmedes), et leida parimad paigutusstrateegiad.
Süvaõppes nimetatakse vahekihi väljundeid ka aktiveerimisteks ja neid tuleb edasiliikumise ajal salvestada. Seda seetõttu, et neid tuleb kasutada gradiendi arvutamiseks tagurpidikäigul. Suure mudeli puhul võib kõigi nende aktiveerimiste samaaegne mällu salvestamine tekitada olulisi mälu kitsaskohti. Selle kitsaskoha lahendamiseks võite kasutada aktiveerimise kontrollpunkt, kolmas uus funktsioon SageMakeri mudeli paralleelsuse teegis. Aktiveerimise kontrollpunkt või gradiendi kontrollpunktid, on meetod mälukasutuse vähendamiseks, kustutades teatud kihtide aktiveerimised ja arvutades need ümber tagurpidi liikumise ajal. See vahetab tõhusalt täiendavat arvutusaega mälukasutuse vähendamiseks.
Lõpuks aktiveerimise mahalaadimine kasutab otse aktiveerimise kontrollpunkti. See on strateegia, mis hoiab mudelitreeningu ajal GPU RAM-is vaid mõne tensori aktiveerimise. Täpsemalt, me teisaldame kontrollpunktiga aktiveerimised CPU mällu edasiliikumise ajal ja laadime need tagasi GPU-sse, et konkreetse mikropartii tagurpidi liigutada.
Mikropartiid ja paigutusstrateegiad
Muud teemad, mis mõnikord klientides segadust tekitavad, on mikropartiid ja paigutusstrateegiad. Mõlemad on hüperparameetrid, mille saate esitada SageMakeri mudeli paralleelteeki. Täpsemalt on mikropartiid olulised selliste mudelite rakendamisel, mis tuginevad torujuhtme paralleelsusele, näiteks need, mille suurus on vähemalt 30 miljardit parameetrit.
Mikropartiid on minipartiide alamhulgad. Kui teie mudel on treeningtsüklis, määrate teatud arvu kirjeid, mida koguda ja kihtide kaudu edasi-tagasi liigutada – seda nimetatakse minipartiivõi mõnikord lihtsalt a partii. Teie andmestiku täielikku läbimist nimetatakse epohh. Edasi- ja tagasikäikude käitamiseks koos konveieri paralleelsusega jagab SageMakeri mudeli paralleelteek partiid väiksemateks alamhulkadeks, mida nimetatakse mikropartiideks, mida käivitatakse ükshaaval, et maksimeerida GPU kasutust. Saadud, palju väiksemat näidete kogumit GPU kohta nimetatakse mikropartiiks. Meie GPT-2 näites lisasime vaikimisi 1 mikropartii otse treeningskripti.
Kui suurendate oma treeningkonfiguratsiooni, teil on tungivalt soovitatav vastavalt muuta oma partii suurust ja mikropartii suurust. See on ainus viis hea jõudluse tagamiseks: torujuhtme paralleelsusele tuginedes peate arvestama partii suurust ja mikropartii suurust oma maailma üldise suuruse funktsioonina.
Paigutamisstrateegiad näitavad, kuidas SageMakerile füüsiliselt öelda, kuhu mudeli partitsioonid paigutada. Kui kasutate nii mudelit paralleelselt kui ka paralleelselt andmeid, seadke placement_strategy
et “cluster”
paigutab mudeli koopiad seadme ID-desse (GPU), mis on üksteisele füüsiliselt lähedal. Kui soovite aga tõesti oma paralleelsuse strateegiat rohkem ettekirjutada, võite selle jagada üheks stringiks, mis koosneb kolmest tähest koosnevate erinevate kombinatsioonidega: D andmete paralleelsuse jaoks, P
tähistab torujuhtme paralleelsust ja T
tensoride paralleelsuse jaoks. Üldiselt soovitame säilitada vaikepaigutuse "cluster"
, sest see on kõige sobivam suuremahuliste mudelikoolituste jaoks. "Kobara" paigutus vastab "DPT
".
Lisateavet paigutusstrateegiate kohta vt Tensori paralleelsusega paigutusstrateegia.
Kasutusjuhtumi näide
Kujutagem ette, et teie koolitustöös on üks ml.p3.16xlarge. See annab sulle 8 NVIDIA V100 sõlme kohta. Pidage meeles, et iga kord, kui lisate täiendava eksemplari, kogete täiendavat ribalaiust, seega on alati parem, kui ühes sõlmes on rohkem GP'U-sid. Sel juhul on teil parem üks ml.p3.16xlarge kui näiteks kaks ml.p3.8xlarge. Kuigi GPU-de arv on sama, aeglustab lisasõlme ribalaius teie läbilaskevõimet.
Järgmine diagramm illustreerib neljasuunalist mudeli paralleelsust kombineerituna kahesuunalise andmete paralleelsusega. See tähendab, et teil on tegelikult mudelist kaks koopiat (mõelge andmetele paralleelselt), kusjuures igaüks neist on jagatud nelja GPU vahel (mudeliga paralleelselt).
Kui mõni neist mudelisektsioonidest on ühele GPU-le mahutamiseks liiga suur, saate selle väljastamiseks ja mõlema seadme kasutamiseks lisada täiendava jaotuse tüübi – tensori paralleelsuse.
Järeldus
Selles ajaveebi postituses arutasime SageMakeri hajutatud õppeteeke, keskendudes eriti mudelite paralleelsusele. Jagasime oma viimase testi jõudluse võrdlusnäitajaid, saavutades Amazon SageMakeris 32 proovi sekundis 120 ml.p4d.24xlarge eksemplari ja 175B parameetriga. Eeldame, et kui suurendaksime selle arvu 240 p4 eksemplarini, saaksime 175B parameetri mudeli välja õpetada 25 päevaga.
Arutasime ka uusimaid funktsioone, mis võimaldavad suuremahulist koolitust, nimelt tensori paralleelsust, optimeerija oleku jagamist, aktiveerimise kontrollpunkti määramist ja aktiveerimise mahalaadimist. Jagasime näpunäiteid ja näpunäiteid selle võimaldamiseks Amazon SageMakeri koolituse kaudu.
Proovige seda ise kasutades sama märkmikku, mis genereeris meie numbrid ja mis on saadaval siin GitHubis. Samuti saate oma AWS-i konto jaoks taotleda rohkem GPU-sid teenusepiirangu kinnituse taotlemine siinsamas.
Autoritest
Emily Webber liitus AWS-iga vahetult pärast SageMakeri käivitamist ja on sellest ajast saati üritanud sellest maailmale rääkida! Lisaks klientidele uute ML-kogemuste loomisele naudib Emily mediteerimist ja Tiibeti budismi õppimist.
Aditya Bindal on AWS-i süvaõppe vanemtootejuht. Ta töötab toodete kallal, mis muudavad klientide jaoks AWS-is süvaõppemudelite koolitamise lihtsamaks. Vabal ajal veedab ta meelsasti tütrega aega, mängib tennist, loeb ajaloolist ilukirjandust ja reisib.
Luis Quintela on AWS SageMakeri mudeli paralleelteegi tarkvaraarendaja haldur. Vabal ajal võib teda leida oma Harleyga sõitmas SF Bay piirkonnas.
- Münditark. Euroopa parim Bitcoini ja krüptobörs.
- Platoblockchain. Web3 metaversiooni intelligentsus. Täiustatud teadmised. TASUTA PÄÄS.
- CryptoHawk. Altcoini radar. Tasuta prooviversioon.
- Allikas: 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
- MEIST
- kiirendi
- konto
- saavutada
- üle
- Täiendavad lisad
- aadress
- edasijõudnud
- Materjal: BPA ja flataatide vaba plastik
- juba
- Amazon
- Teine
- rakendused
- PIIRKOND
- saadaval
- AWS
- laht
- BEST
- suurim
- Miljard
- Blogi
- Ehitus
- Põhjus
- muutma
- Cloud
- kood
- kombinatsioonid
- ühine
- KOMMUNIKATSIOON
- konfiguratsioon
- segadus
- Konteinerid
- tuum
- võiks
- Kliendid
- andmed
- arenenud
- arendaja
- & Tarkvaraarendus
- seade
- seadmed
- erinev
- jagatud
- jaotus
- alla
- ajendatud
- võimaldades
- eriti
- näide
- kogemus
- Kogemused
- äärmuslik
- nägu
- kiiremini
- tunnusjoon
- FUNKTSIOONID
- Ilukirjandus
- sobima
- Järel
- edasi
- avastatud
- Raamistik
- täis
- funktsioon
- Üldine
- tekitama
- GitHub
- läheb
- hea
- Google Search
- GPU
- riistvara
- kasulik
- Esile tõstma
- ajalooline
- Kuidas
- Kuidas
- HTTPS
- sajad
- kasvanud
- info
- inspireeritud
- integreeritud
- küsimustes
- IT
- töö
- liitunud
- hüppama
- pidamine
- keel
- suur
- hiljemalt
- algatama
- Õppida
- õppimine
- Tase
- Raamatukogu
- koormus
- masin
- masinõpe
- masinad
- Tegemine
- juht
- Mälu
- ML
- mudel
- mudelid
- modulaarne
- kõige
- liikuma
- nimelt
- Natural
- võrk
- Uued funktsioonid
- sõlmed
- märkmik
- numbrid
- Muu
- Paber
- partnerlusega
- jõudlus
- tükk
- inimesele
- populaarne
- võimalik
- esmane
- Toode
- Toodet
- profiilid
- anda
- RAM
- RE
- Lugemine
- soovitama
- andmed
- vähendama
- Tulemused
- jooks
- jooksmine
- Ütlesin
- skaalautuvia
- Skaala
- ketendamine
- SDK
- Otsing
- teenus
- komplekt
- kehtestamine
- varitsus
- jagatud
- märkimisväärne
- SUURUS
- So
- tarkvara
- eriti
- kiirus
- Kulutused
- jagada
- riik
- strateegiad
- Strateegia
- varustama
- taktika
- tehnikat
- test
- maailm
- tuhandeid
- Läbi
- aeg
- nõuanded
- Näpunäiteid ja nippe
- kokku
- Teemasid
- kaupleb
- koolitus
- mõistma
- kasutama
- ära kasutama
- nägemus
- jooksul
- töö
- töötab
- maailm
- aastat