Az elmúlt néhány évben gyors fejlődés ment végbe a természetes nyelvi feldolgozás (NLP) területén. Míg a hardver javult, például az NVIDIA és az Amazon gyorsítóinak legújabb generációja révén, a fejlett gépi tanulást (ML) gyakorló szakemberek továbbra is rendszeresen találkoznak olyan problémákkal, amikor a nagy nyelvi modelleket több GPU-ra méretezték.
Ebben a blogbejegyzésben röviden összefoglaljuk a nagy és kis léptékű NLP-modellek térnyerését, elsősorban a Hugging Face által biztosított absztrakción és az Amazon SageMaker moduláris hátterén keresztül. Külön kiemeljük négy további funkció bevezetését a SageMaker modell párhuzamos könyvtárában, amelyek 175 milliárd paraméteres NLP-modell előképzést és finomhangolást tesznek lehetővé az ügyfelek számára.
Ezt a könyvtárat a SageMaker képzési platformon használtuk, és másodpercenként 32 mintát értünk el 120 ml.p4d.24xnagy példányokon és 175 milliárd paraméteren. Arra számítunk, hogy ha ezt 240 példányra növeljük, a teljes modell betanítása 25 napot vesz igénybe.
A modellpárhuzamról további információkért lásd a cikket Amazon SageMaker modellpárhuzam: Általános és rugalmas keret a nagymodell-képzéshez.
A GPT2 notebookot is megtekintheti, amellyel ezeket a teljesítményszámokat generáltuk GitHub tárház.
Ha többet szeretne megtudni arról, hogyan használhatja párhuzamosan az új funkciókat a SageMaker modellen belül, lásd: A SageMaker Model Parallel Library kiterjesztett szolgáltatásai a PyTorch számáraés Használja a SageMaker Python SDK-val.
NLP az Amazon SageMaker-en – Ölelő arc és modellpárhuzam
Ha még nem ismeri a Hugging Face-t és az NLP-t, akkor a legfontosabb dolog, amit tudnia kell, hogy a természetes nyelvi feldolgozást (NLP) használó alkalmazások kezdenek emberi szintű teljesítményt elérni. Ezt nagyrészt egy tanulási mechanizmus, az ún figyelem, amely egy mély tanulási modellt, az úgynevezett transzformátor, ami sokkal skálázhatóbb, mint a korábbi mély tanulási szekvenciális módszerek. A ma már híres BERT modell A transzformátor hasznosítására fejlesztették ki, és számos hasznos NLP-taktikát fejlesztettek ki az út során. A transzformátorok és a modellek sorozata, mind az NLP-n belül, mind azon kívül, amelyeket a BERT ihletett, ezek az elsődleges motorok a Google keresési eredményei mögött, a A Google fordító eredményeiés számos új startup.
A SageMaker és a Hugging Face együttműködött, hogy ezt minden eddiginél egyszerűbbé tegyék az ügyfelek számára. Bevezettük a Hugging Face mélytanuló konténereket (DLC-ket), amelyek segítségével közvetlenül a Hugging Face-ből taníthat és fogadhat előre betanított modelleket. több mint 26,000 XNUMX modell tárháza. elindítottuk a SageMaker Training Compiler akár 50%-kal felgyorsíthatja Hugging Face tréninghurkjainak működési idejét. Mi is integráltuk a Hugging Face zászlóshajója, a Transformers SDK val vel elosztott oktatókönyvtárainkat hogy az NLP-modellek méretezését minden eddiginél egyszerűbbé tegye.
Az Amazon SageMaker Hugging Face Transformer modelljeivel kapcsolatos további információkért lásd: Támogatás a Hugging Face Transformer modellekhez.
Új funkciók a nagyszabású NLP modell képzéshez a SageMaker modell párhuzamos könyvtárral
Az AWS re:Invent 2020 rendezvényen a SageMaker olyan elosztott könyvtárakat indított el, amelyek a legjobb teljesítményt nyújtják a felhőben a számítógépes látásmodellek, például Maszk-RCNN és az NLP modellek, mint T5-3B. Ez a továbbfejlesztett kommunikációs primitívek révén lehetséges, amelyek 20-40%-kal gyorsabbak, mint az NCCL az AWS-ben, és olyan modellelosztási technikák révén, amelyek lehetővé teszik a rendkívül nagy nyelvi modellek skálázását több tíztől száztól több ezer GPU-ig.
A SageMaker modell párhuzamos könyvtára (SMP) mindig lehetővé tette, hogy átvegye előre meghatározott NLP-modelljét a PyTorch alkalmazásban, legyen az Hugging Face vagy máshol, és a modellt a fürtben lévő több GPU-ra particionálja. Másképpen mondva, az SMP kisebb darabokra bontja a modellt, így nem tapasztalhat elfogyott memória (OOM) hibákat. Örömmel adunk hozzá további memóriatakarékos technikákat, amelyek kritikusak a nagyméretű modelleknél, nevezetesen:
- Tenzor párhuzamosság
- Az optimalizáló állapotának felosztása
- Aktiválási ellenőrzőpont
- Aktiválási kirakodás
Ezt a négy funkciót kombinálhatja a memória hatékonyabb kihasználása és az extrém léptékű NLP modellek következő generációjának képzése érdekében.
Elosztott képzés és tenzorpárhuzam
A tenzor párhuzamosság megértéséhez hasznos tudni, hogy sokféle elosztott képzés létezik.. Valószínűleg már ismeri a leggyakoribb típust, adatok párhuzamossága. Az adatpárhuzamosság lényege a következőképpen működik: hozzáad egy további csomópontot a fürthöz, például egyről két ml.EC2 példányra lép a SageMaker becslőben. Ezután olyan párhuzamos adatkeretrendszert használ, mint a Horovod, a PyTorch Distributed Data Parallel vagy a SageMaker Distributed. Ez létrehozza a modell replikáit, gyorsítónként egyet, és kezeli az adatok felosztását az egyes csomópontokhoz, valamint az összes eredményt a neurális hálózat visszaterjesztési lépése során. Gondolj az elosztott gradiens süllyedésre. Az adatok párhuzamossága a szervereken belül is népszerű; az összes csomóponton lévő összes GPU-ba és esetenként CPU-ba osztja az adatokat. Az alábbi diagram az adatok párhuzamosságát szemlélteti.
Modellpárhuzam kicsit más. Ahelyett, hogy ugyanarról a modellről készítenénk másolatot, darabokra bontjuk az Ön modelljét. Ezután mi kezeljük a futtatását, így az adatok továbbra is matematikailag pontosan ugyanúgy áramlanak át a neurális hálózaton, de a modelled különböző részei különböző GPU-kon ülnek. Ha ml.p3.8xlarge-et használ, akkor négy NVIDIA V100-a van, így valószínűleg 4 darabra szeretné darabolni a modellt, GPU-nként egy darabra. Ha felugrik két ml.p4d.24xlarge-re, akkor ez összesen 16 A100-at jelent a klaszterben, tehát 16 darabra bonthatja a modellt. Ezt néha úgy is hívják csővezeték párhuzamossága. Ennek az az oka, hogy a hálózatban lévő rétegek particionálva vannak a GPU-k között, és a GPU kihasználtságának maximalizálása érdekében folyamatban lévő módon futnak. A következő ábra a modell párhuzamosságát szemlélteti.
Ahhoz, hogy a modell párhuzamossága a léptékben megvalósuljon, szükségünk van egy harmadik típusú eloszlásra: tenzor párhuzamosság. A tenzorpárhuzam ugyanazokat a fogalmakat alkalmazza egy lépéssel tovább – szétbontjuk a neurális hálózat legnagyobb rétegeit, és maguknak a rétegeknek a részeit különböző eszközökre helyezzük. Ez akkor fontos, ha 175 milliárd vagy több paraméterrel dolgozik, és megpróbál akár néhány rekordot is beilleszteni a RAM-ba, valamint a modell egyes részeit a transzformátor betanításához. A következő diagram a tenzorpárhuzamot szemlélteti.
Engedélyezni tenzor párhuzamosság, állítsa be az smp opciókon belül továbbítod a becslődnek.
Az előző kódban pipeline_parallel_degree
leírja, hogy a modelljét hány szegmensre kell feldarabolni, a fent tárgyalt folyamatpárhuzam alapján. Egy másik szó erre az válaszfalak.
A tenzor párhuzamosság engedélyezéséhez állítsa be tensor_parallel_degree
a kívánt szintre. Ügyeljen arra, hogy a GPU-k példányonkénti számával egyenlő vagy annál kisebb számot válasszon, tehát az ml.p8d.4xlarge gépeknél ne legyen nagyobb 24-nál. A szkript további módosításaiért lásd: Futtasson egy SageMaker elosztott modellpárhuzamos képzési munkát tenzorpárhuzamossággal.
A ddp paraméter párhuzamosan elosztott adatokra vonatkozik. Ezt általában akkor engedélyezi, ha adatpárhuzamot vagy tenzorpárhuzamot használ, mivel a modellpárhuzamossági könyvtár ezekhez a szolgáltatásokhoz a DDP-re támaszkodik.
Az optimalizáló állapotának felosztása, aktiválási tehermentesítés és ellenőrzőpontok
Ha rendkívül nagy modellel rendelkezik, akkor rendkívül nagy optimalizáló állapotra is szüksége van. Az optimalizáló előkészítése az SMP-re egyszerű: egyszerűen vegye ki a lemezről a szkriptben, és töltse be a smp.DistributedOptimizer()
tárgy.
Győződjön meg róla, hogy ezt engedélyezte a becslőnél a beállítással shard_optimizer_state
hogy True a smp_options
az SMP beállításához használja:
A tenzor és a csővezeték párhuzamosságához hasonlóan az SMP profilokat készít a modellről és a világ méretéről (az összes képzési csomópontban lévő GPU-k teljes száma), hogy megtalálja a legjobb elhelyezési stratégiákat.
A mély tanulásban a köztes réteg kimeneteit aktiválásnak is nevezik, és ezeket az előrehaladás során tárolni kell. Ennek az az oka, hogy a visszafelé lépésben a gradiens számításhoz kell őket használni. Egy nagy modellben az összes aktiválás egyidejű tárolása a memóriában jelentős memória szűk keresztmetszetek kialakulásához vezethet. Ennek a szűk keresztmetszetnek a kezelésére használhatja aktiválás ellenőrzőpont, a SageMaker modell párhuzamossági könyvtárának harmadik új funkciója. Aktiválási ellenőrzőpont, ill gradiens checkpointing, egy olyan technika, amely csökkenti a memóriahasználatot bizonyos rétegek aktiválásának törlésével és azok újraszámításával a visszafelé lépés során. Ez hatékonyan kereskedik extra számítási idővel a csökkentett memóriahasználat érdekében.
Végül, aktiválás tehermentesítése közvetlenül használja az aktiválási ellenőrzőpontot. Az a stratégia, hogy a modell betanítása során csak néhány tenzoraktiválás maradjon a GPU RAM-on. Pontosabban, az ellenőrzőpontos aktiválásokat a CPU-memóriába helyezzük át az előrehaladás során, és visszatöltjük a GPU-ra egy adott mikro-kötegelt visszafelé történő áthaladáshoz.
Mikro-kötegek és elhelyezési stratégiák
Más témák, amelyek néha zavart okoznak az ügyfelekben, a mikro-kötegek és az elhelyezési stratégiák. Mindkettő hiperparaméter, amelyet megadhat a SageMaker modell párhuzamos könyvtárának. A mikro-kötegek különösen fontosak olyan modellek implementálásakor, amelyek a csővezeték párhuzamosságára támaszkodnak, például legalább 30 milliárd paraméterrel.
A mikrokötegek a mini kötegek részhalmazai. Amikor a modell a betanítási ciklusban van, meg kell határoznia egy bizonyos számú rekordot, amelyeket fel kell venni, és előre és hátra kell továbbítani a rétegeken – ezt nevezzük minibatch, vagy néha csak a batch. Az adatkészlet teljes áthaladását an korszak. Az előre- és hátramenetek folyamatpárhuzamos futtatásához a SageMaker modell párhuzamos könyvtára a kötegeket kisebb részhalmazokra, úgynevezett mikrokötegekre bontja, amelyek egyenként futnak a GPU kihasználtságának maximalizálása érdekében. Az így kapott, GPU-nként sokkal kisebb példakészletet mikro kötegnek nevezzük. A GPT-2 példánkban az alapértelmezett 1 microbatch-et adtuk hozzá közvetlenül a betanító szkripthez.
Ahogy növeli edzéskonfigurációját, erősen ajánlott ennek megfelelően módosítani a sarzsméretet és a mikro-adag méretét. Ez az egyetlen módja a jó teljesítmény biztosításának: a csővezeték párhuzamosságára támaszkodva figyelembe kell vennie a sarzsméretet és a mikro-adag méretét a teljes világméret függvényében.
Az elhelyezési stratégiák segítségével lehet fizikailag megmondani a SageMakernek, hogy hol helyezze el a modellpartíciókat. Ha párhuzamos modellt és adatpárhuzamot is használ, állítsa be placement_strategy
nak nek “cluster”
modellreplikákat helyez el az eszközazonosítókba (GPU-kba), amelyek fizikailag közel vannak egymáshoz. Ha azonban határozottabb akar lenni a párhuzamossági stratégiával kapcsolatban, akkor azt egyetlen karakterláncra bonthatja három betű különböző kombinációival: D az adatok párhuzamossága, P
a csővezeték párhuzamosságát jelzi, és T
tenzor párhuzamosságra. Általában javasoljuk az alapértelmezett elhelyezés megtartását "cluster"
, mert ez a legmegfelelőbb nagyszabású modellképzéshez. A „klaszter” elhelyezése a következőnek felel meg:DPT
".
Az elhelyezési stratégiákkal kapcsolatos további információkért lásd: Elhelyezési stratégia tenzorpárhuzamossággal.
Példa használati esetre
Képzeljük el, hogy egy ml.p3.16xlarge van az edzésmunkában. Ez megadja neked 8 NVIDIA V100 csomópontonként. Ne feledje, hogy minden alkalommal, amikor egy extra példányt ad hozzá, nagyobb sávszélességet tapasztal, ezért mindig jobb, ha több GP'U van egyetlen csomóponton. Ebben az esetben jobban jár egy ml.p3.16xlarge, mint például két ml.p3.8xlarge. Annak ellenére, hogy a GPU-k száma azonos, az extra csomópont extra sávszélessége lelassítja az átviteli sebességet.
A következő diagram a négyirányú modellpárhuzamot szemlélteti, kétirányú adatpárhuzamossággal kombinálva. Ez azt jelenti, hogy valójában két másolata van a modellnek (gondolom párhuzamosan az adatokkal), amelyek mindegyike négy GPU-ra van felosztva (modell párhuzamos).
Ha a modellpartíciók bármelyike túl nagy ahhoz, hogy egyetlen GPU-ba illeszkedjen, hozzáadhat egy extra típusú elosztást – tenzorpárhuzamot –, hogy kiköpje, és mindkét eszközt használja.
Következtetés
Ebben a blogbejegyzésben a SageMaker által terjesztett oktatókönyvtárakat tárgyaltuk, különös tekintettel a modellpárhuzamra. Megosztottuk a teljesítmény-benchmarkokat a legújabb tesztünkből, amely 32 mintát ért el másodpercenként 120 ml.p4d.24xlarge példányon és 175B paraméteren az Amazon SageMakeren. Arra számítunk, hogy ha ezt 240 p4 példányra növeljük, 175 nap alatt betaníthatunk egy 25B paraméteres modellt.
Megbeszéltük a nagyszabású képzést lehetővé tevő legújabb funkciókat is, nevezetesen a tenzorpárhuzamot, az optimalizáló állapotfelosztását, az aktiválási ellenőrzési pontot és az aktiválás tehermentesítését. Megosztottunk néhány tippet és trükköt, amelyek segítségével ezt az Amazon SageMaker képzésen keresztül engedélyezheti.
Próbáld ki magad ugyanazt a notebookot használja, amely a számainkat generálta, és amely itt érhető el a GitHubon. Ezen keresztül további GPU-kat is kérhet AWS-fiókjához itt kérheti a szolgáltatási limit jóváhagyását.
A szerzőkről
Emily Webber közvetlenül a SageMaker elindítása után csatlakozott az AWS-hez, és azóta is próbálja elmondani a világnak! Azon kívül, hogy új ML-élményeket építhet az ügyfelek számára, Emily élvezi a meditációt és a tibeti buddhizmus tanulmányozását.
Aditya Bindal az AWS Deep Learning vezető termékmenedzsere. Olyan termékeken dolgozik, amelyek megkönnyítik az ügyfelek számára a mély tanulási modellek AWS-en való betanítását. Szabadidejében szívesen tölt időt a lányával, teniszez, történelmi szépirodalmat olvas és utazik.
Luis Quintela az AWS SageMaker modell párhuzamos könyvtárának szoftverfejlesztő menedzsere. Szabadidejében Harley-jével lovagol az SF Bay Area-ben.
- Coinsmart. Európa legjobb Bitcoin- és kriptográfiai tőzsdéje.
- Platoblockchain. Web3 metaverzum intelligencia. Felerősített tudás. SZABAD HOZZÁFÉRÉS.
- CryptoHawk. Altcoin radar. Ingyenes próbaverzió.
- Forrás: 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
- Rólunk
- gázpedál
- Fiók
- elért
- át
- További
- cím
- fejlett
- Minden termék
- már
- amazon
- Másik
- alkalmazások
- TERÜLET
- elérhető
- AWS
- öböl
- BEST
- Legnagyobb
- Billió
- Blog
- Épület
- Okoz
- változik
- felhő
- kód
- kombinációk
- Közös
- közlés
- Configuration
- zavar
- Konténerek
- Mag
- tudott
- Ügyfelek
- dátum
- fejlett
- Fejlesztő
- Fejlesztés
- eszköz
- Eszközök
- különböző
- megosztott
- terjesztés
- le-
- hajtott
- lehetővé téve
- különösen
- példa
- tapasztalat
- Tapasztalatok
- szélső
- Arc
- gyorsabb
- Funkció
- Jellemzők
- Fiction
- megfelelő
- következő
- Előre
- talált
- Keretrendszer
- Tele
- funkció
- általános
- generál
- GitHub
- megy
- jó
- Google keresés
- GPU
- hardver
- hasznos
- Kiemel
- történeti
- Hogyan
- How To
- HTTPS
- Több száz
- <p></p>
- információ
- inspirálta
- integrált
- kérdések
- IT
- Munka
- csatlakozott
- ugrás
- tartás
- nyelv
- nagy
- legutolsó
- indít
- TANUL
- tanulás
- szint
- könyvtár
- kiszámításának
- gép
- gépi tanulás
- gép
- Gyártás
- menedzser
- Memory design
- ML
- modell
- modellek
- moduláris
- a legtöbb
- mozog
- ugyanis
- Természetes
- hálózat
- Új funkciók
- csomópontok
- jegyzetfüzet
- számok
- Más
- Papír
- társult
- teljesítmény
- darab
- emelvény
- Népszerű
- lehetséges
- elsődleges
- Termékek
- Termékek
- Profilok
- ad
- RAM
- RE
- Olvasás
- ajánl
- nyilvántartások
- csökkenteni
- Eredmények
- futás
- futás
- Mondott
- skálázható
- Skála
- skálázás
- sdk
- Keresés
- szolgáltatás
- készlet
- beállítás
- szilánkos
- megosztott
- jelentős
- Méret
- So
- szoftver
- kifejezetten
- sebesség
- Költési
- osztott
- Állami
- stratégiák
- Stratégia
- kínálat
- taktika
- technikák
- teszt
- a világ
- ezer
- Keresztül
- idő
- tippek
- Tippek és trükkök
- együtt
- Témakörök
- szakmák
- Képzések
- megért
- használ
- hasznosít
- látomás
- belül
- dolgozó
- művek
- világ
- év