Nedavni razvoj globokega učenja je privedel do vse večjih modelov, kot so GPT-3, BLOOM in OPT, od katerih nekateri že presegajo 100 milijard parametrov. Čeprav so večji modeli ponavadi zmogljivejši, usposabljanje takšnih modelov zahteva znatna računalniška sredstva. Tudi z uporabo naprednih porazdeljenih izobraževalnih knjižnic, kot sta FSDP in DeepSpeed, je običajno, da usposabljanja zahtevajo na stotine pospeševalnih naprav več tednov ali mesecev naenkrat.
Konec leta 2022 je AWS objavil splošno razpoložljivost Primerki Amazon EC2 Trn1 powered by AWS Trainium—namenski pospeševalnik strojnega učenja (ML), optimiziran za zagotavljanje visoko zmogljive, stroškovno učinkovite in množično razširljive platforme za usposabljanje modelov globokega učenja v oblaku. Primerki Trn1 so na voljo v številnih velikostih (glejte naslednjo tabelo), z do 16 pospeševalniki Trainium na primerek.
Velikost primerka | Pospeševalniki Trainium | Pomnilnik pospeševalnika (GB) | vCPU | Pomnilnik primerkov (GiB) | Pasovna širina omrežja (Gbps) |
trn1.2xvelik | 1 | 32 | 8 | 32 | Do 12.5 |
trn1.32xvelik | 16 | 512 | 128 | 512 | 800 |
trn1n.32xlarge (kmalu na voljo) | 16 | 512 | 128 | 512 | 1600 |
Primerke Trn1 je mogoče namestiti kot samostojne primerke za manjša izobraževalna dela ali v zelo razširljivih ultragručah, ki podpirajo porazdeljeno usposabljanje v več deset tisoč pospeševalnikih Trainium. Vsi primerki Trn1 podpirajo samostojno konfiguracijo, medtem ko ultragruče Trn1 zahtevajo primerke trn1.32xlarge ali trn1n.32xlarge. V ultragruči je več primerkov Trn1 nameščenih skupaj v danem območju razpoložljivosti AWS in so povezani z omrežjem EFA (Elastic Fabric Adapter) z visoko hitrostjo in nizko zakasnitvijo, ki zagotavlja 800 Gbps pasovne širine omrežja brez blokiranja na primerek za skupne računalniške operacije. . Tip instance trn1n.32xlarge, ki bo predstavljen v začetku leta 2023, bo povečal to pasovno širino na 1600 Gbps na instanco.
Številne poslovne stranke se odločijo za uvedbo svojih delovnih obremenitev globokega učenja z uporabo Kubernetesa – dejanskega standarda za orkestracijo vsebnikov v oblaku. Stranke AWS te delovne obremenitve pogosto izvajajo z uporabo Amazonski elastični kubernetes storitev (Amazon EKS). Amazon EKS je upravljana storitev Kubernetes, ki poenostavi ustvarjanje, konfiguracijo, življenjski cikel in spremljanje gruč Kubernetes, hkrati pa še vedno ponuja popolno prilagodljivost navzgornjega Kubernetesa.
Danes z veseljem objavljamo uradno podporo za porazdeljena usposabljanja z uporabo instanc Amazon EKS in EC2 Trn1. S to objavo lahko zdaj preprosto izvajate obsežna usposabljanja v kontejnerjih znotraj Amazon EKS, hkrati pa v celoti izkoristite ceno in zmogljivost, razširljivost in enostavnost uporabe, ki jih ponujajo primerki Trn1.
Skupaj s to objavo objavljamo tudi podrobno vadnico, ki vas vodi skozi korake, potrebne za izvajanje porazdeljenega usposabljanja z več primerki (predhodno usposabljanje BERT faze 1) z uporabo primerkov Amazon EKS in Trn1. V tej objavi boste izvedeli več o arhitekturi rešitve in pregledali več ključnih korakov iz vadnice. Glejte na uradno skladišče vadnic za celoten potek dela od konca do konca.
Sledi široko poznavanje osnovnih storitev AWS, kot je npr Amazonski elastični računalniški oblak (Amazon EC2) in Amazon EKS sta predvidena, osnovno poznavanje poglobljenega učenja in PyTorcha pa bi bilo koristno.
Arhitektura rešitev
Naslednji diagram prikazuje arhitekturo rešitev.
Rešitev je sestavljena iz naslednjih glavnih komponent:
- Grozd EKS
- Skupina vozlišč EKS, sestavljena iz primerkov trn1.32xlarge
- O AWS nevron SDK
- Vtičniki EKS za Neuron in EFA
- An Registar elastičnih zabojnikov Amazon (Amazon ECR) Repozitorij
- Slika vsebnika za usposabljanje
- An Amazon FSx za Luster datotečni sistem
- Volcano paketni razporejevalnik in strežnik etcd
- Univerzalni zaganjalnik opravil TorchX
- Modul TorchX DDP za Trainium
V središču rešitve je gruča EKS, ki vam zagotavlja osnovno funkcionalnost upravljanja Kubernetes prek storitvene končne točke EKS. Ena od prednosti Amazon EKS je, da storitev aktivno spremlja in prilagaja nadzorno ravnino glede na obremenitev, kar zagotavlja visoko zmogljivost za velike delovne obremenitve, kot je porazdeljeno usposabljanje. Znotraj gruče EKS je skupina vozlišč, sestavljena iz dveh ali več trn1.32xlarge primerkov na osnovi Trainiuma, ki se nahajajo v istem območju razpoložljivosti.
Neuron SDK je programski sklad, ki zagotavlja gonilnik, prevajalnik, izvajalno okolje, integracijo ogrodja (na primer PyTorch Neuron) in uporabniška orodja, ki vam omogočajo dostop do prednosti pospeševalnikov Trainium. Gonilnik naprave Neuron deluje neposredno na vozliščih EKS (primerki Trn1) in omogoča dostop do čipov Trainium znotraj vadbenih vsebnikov, ki se zaženejo na vozliščih. Vtičniki Neuron in EFA so nameščeni znotraj gruče EKS za zagotavljanje dostopa do čipov Trainium in omrežnih naprav EFA, potrebnih za porazdeljeno usposabljanje.
Repozitorij ECR se uporablja za shranjevanje slik vsebnika za usposabljanje. Te slike vsebujejo Neuron SDK (razen gonilnika Neuron, ki se izvaja neposredno na primerkih Trn1), skript za usposabljanje PyTorch in zahtevane odvisnosti. Ko se v gruči EKS zažene izobraževalno opravilo, se slike vsebnika najprej povlečejo iz Amazon ECR na vozlišča EKS, nato pa se iz slik instancirajo vsebniki delavca PyTorch.
Skupna shramba je zagotovljena z uporabo visoko zmogljivega datotečnega sistema FSx za Lustre, ki obstaja v istem območju razpoložljivosti kot primerki trn1.32xlarge. Ustvarjanje in priključitev datotečnega sistema FSx za Luster v gručo EKS posreduje Amazon FSx za gonilnik Luster CSI. V tej rešitvi se skupni pomnilnik uporablja za shranjevanje nabora podatkov o usposabljanju in vseh dnevnikov ali artefaktov, ustvarjenih med procesom usposabljanja.
Rešitev uporablja TorchX univerzalni zaganjalnik opravil za uvedbo porazdeljenih delovnih mest za usposabljanje znotraj Amazon EKS. TorchX ima dve pomembni odvisnosti: paketni razporejevalnik Volcano in strežnik etcd. Volcano skrbi za razporejanje in čakalno vrsto nalog usposabljanja, medtem ko je strežnik etcd shramba ključev in vrednosti, ki jo uporablja TorchElastic za sinhronizacijo in odkrivanje enakovrednih med zagonom opravila.
Ko se opravilo usposabljanja zažene z uporabo TorchX, ukaz za zagon uporabi priloženi modul DDP TorchX za Trainium za konfiguracijo celotnega opravila usposabljanja in nato zažene ustrezne ukaze torchrun na vsakem od delovnih sklopov PyTorch. Ko se opravilo izvaja, ga je mogoče spremljati s standardnimi orodji Kubernetes (kot je kubectl) ali s standardnimi nabori orodij ML, kot je TensorBoard.
Pregled rešitev
Oglejmo si pomembne korake te rešitve. V tem pregledu se sklicujemo na Zaženite opravilo usposabljanja nevronov PyTorch z več vozlišči na Trainiumu z uporabo TorchX in EKS vadnica na GitHubu.
Ustvarite gručo EKS
Če želite začeti s porazdeljenimi izobraževalnimi opravili v Amazon EKS s primerki Trn1, najprej ustvarite gručo EKS, kot je opisano v vadnica na GitHubu. Ustvarjanje grozdov je mogoče doseči s standardnimi orodji, kot je npr eksctl
in Oblikovanje oblaka AWS.
Ustvarite skupino vozlišč EKS
Nato moramo ustvariti skupino vozlišč EKS, ki vsebuje dva ali več primerkov trn1.32xlarge v podprti regiji. V vadnici AWS CloudFormation se uporablja za ustvarjanje predloge za zagon EC2, specifične za Trainium, ki zagotavlja, da se primerki Trn1 zaženejo z ustrezno Amazon Machine Image (AMI) in pravilno konfiguracijo omrežja EFA, potrebno za podporo porazdeljenega usposabljanja. AMI vključuje tudi gonilnik naprave Neuron, ki zagotavlja podporo za pospeševalne čipe Trainium. z eksctl
Z orodjem za upravljanje Amazon EKS lahko enostavno ustvarite skupino vozlišč Trainium z uporabo osnovnega manifesta YAML, ki se sklicuje na novo ustvarjeno predlogo za zagon. Na primer:
V prejšnjem manifestu je več atributov konfiguriranih tako, da omogočajo uporabo primerkov Trn1 v gruči EKS. Prvič, metadata.region
je nastavljena na eno od regij, ki podpirajo primerke Trn1 (trenutno us-east-1
in us-west-2
). Nato Amazon EKS za območja razpoložljivosti zahteva, da se določita dve coni razpoložljivosti. Eno od teh območij razpoložljivosti mora podpirati uporabo primerkov Trn1, medtem ko je drugo mogoče izbrati naključno. Vadnica prikazuje, kako določite, katera območja razpoložljivosti bodo dovoljevala primerke Trn1 v vašem računu AWS. Isto območje razpoložljivosti, ki podpira Trn1, je treba določiti tudi z uporabo availabiltyZones
atribut, povezan s skupino vozlišč EKS. efaEnabled
nastavljena na true
za konfiguracijo vozlišč z ustrezno konfiguracijo omrežja EFA, ki je potrebna za porazdeljeno usposabljanje. Nazadnje, launchTemplate.id
atribut, povezan s skupino vozlišč, kaže na predlogo za zagon EC2, ustvarjeno prek AWS CloudFormation v prejšnjem koraku.
Ob predpostavki, da ste že uporabili predlogo CloudFormation in namestili eksctl
orodje za upravljanje, lahko ustvarite skupino vozlišč EKS, ki podpira Trainium, tako da zaženete naslednjo kodo:
Namestite vtičnike Kubernetes za naprave Trainium in EFA
Ko je skupina vozlišč vzpostavljena, je naslednji korak namestitev vtičnikov Kubernetes, ki zagotavljajo podporo za pospeševalnike Trainium (prek vtičnika Neuron) in naprave EFA (prek vtičnika EFA). Te vtičnike je mogoče preprosto namestiti v gručo z uporabo standarda kubectl
orodje za upravljanje, kot je prikazano v vadnici.
Za uporabo univerzalnega zaganjalnika PyTorch TorchX za zagon porazdeljenih izobraževalnih opravil sta potrebna dva predpogoja: paketni razporejevalnik Volcano in strežnik etcd. Podobno kot vtičnika Neuron in EFA lahko uporabimo tudi kubectl
orodje za namestitev Volcana in strežnika etcd v gručo EKS.
Priključite skupno shrambo v gručo EKS
V vadnici se FSx za Luster uporablja za zagotavljanje visoko zmogljivega datotečnega sistema v skupni rabi, do katerega lahko dostopajo različni delovni moduli EKS. Ta skupni pomnilnik se uporablja za gostovanje nabora podatkov o usposabljanju ter vseh artefaktov in dnevnikov, ki nastanejo med procesom usposabljanja. Vadnica opisuje, kako ustvariti in pripeti skupno shrambo v gručo z uporabo Amazon FSx za gonilnik Luster CSI.
Ustvarite sliko vsebnika za usposabljanje
Nato moramo ustvariti sliko vsebnika za usposabljanje, ki vključuje skript za usposabljanje PyTorch skupaj z vsemi odvisnostmi. V vadnico je vključen primer datoteke Dockerfile, ki vključuje skript pred usposabljanjem BERT skupaj z odvisnostmi programske opreme. Datoteka Dockerfile se uporablja za izdelavo slike vsebnika za usposabljanje, slika pa se nato potisne v repozitorij ECR, iz katerega lahko delavci PyTorcha potegnejo sliko, ko je v gruči zagnano opravilo za usposabljanje.
Nastavite podatke o vadbi
Pred zagonom usposabljanja se podatki o usposabljanju najprej prekopirajo v prostor za shranjevanje v skupni rabi na FSx za Lustre. Vadnica opisuje, kako ustvariti začasni pod Kubernetes, ki ima dostop do prostornine za shranjevanje v skupni rabi, in prikazuje, kako se prijaviti v pod, da prenesete in izvlečete nabor podatkov za usposabljanje s standardnimi ukazi lupine Linux.
Z vzpostavljenimi različnimi infrastrukturnimi in programskimi predpogoji se lahko zdaj osredotočimo na vidike rešitve Trainium.
Vnaprej prevedite svoj model
Neuron SDK podpira PyTorch prek integracijske plasti, imenovane Nevron PyTorch. PyTorch Neuron privzeto deluje s pravočasno kompilacijo, kjer se različni računalniški grafi nevronskih mrež znotraj usposabljanja sestavijo, ko se nanje naleti med procesom usposabljanja. Pri večjih modelih je lahko priročnejša uporaba priloženega neuron_parallel_compile
orodje za vnaprejšnje prevajanje in predpomnjenje različnih računskih grafov vnaprej, da se izognemo sestavljanju grafov v času usposabljanja. Pred zagonom učnega opravila v gruči EKS je v vadnici prikazano, kako najprej zagnati opravilo predprevajanja prek TorchX z uporabo neuron_parallel_compile
orodje. Po zaključku opravila predprevajanja bo prevajalnik Neuron identificiral in prevedel vse računske grafe nevronske mreže ter jih predpomnil v prostor za shranjevanje v skupni rabi za kasnejšo uporabo med dejanskim opravilom pred usposabljanjem BERT.
Zaženite porazdeljeno usposabljanje
Ko je predhodno prevajanje končano, se TorchX nato uporabi za zagon porazdeljenega usposabljanja za 64 delavcev v dveh instancah trn1.32xlarge, z 32 delavci na instanco. Uporabljamo 32 delavcev na primerek, ker vsak primerek trn1.32xlarge vsebuje 16 pospeševalnikov Trainium, pri čemer vsak pospeševalnik zagotavlja 2 NeuronCores. Do vsakega NeuronCore je mogoče dostopati kot do edinstvenega Naprava PyTorch XLA v scenariju usposabljanja. Primer ukaza za zagon TorchX iz vadnice je videti kot naslednja koda:
Različni argumenti ukazne vrstice v prejšnjem ukazu TorchX so podrobno opisani v vadnici. Vendar pa so naslednji argumenti najpomembnejši pri konfiguriranju opravila usposabljanja:
- -cfg queue=test – Določa čakalno vrsto Volcano, ki bo uporabljena za opravilo usposabljanja
- -cfg image_repo – Določa repozitorij ECR, ki bo uporabljen za slike vsebnika TorchX
- –script_args – Podaja vse argumente, ki jih je treba posredovati skriptu za usposabljanje PyTorch
- –nnodes in –nproc_per_node – Število instanc in delavcev na instanco za uporabo za delo usposabljanja
- –Skript – Ime vadbenega skripta PyTorch za zagon v vadbenem vsebniku
- –Slika – Pot do slike vsebnika za usposabljanje v Amazon ECR
- –bf16 – Ali želite omogočiti podatkovni tip BF16 ali ne
Spremljajte delo usposabljanja
Po uvedbi usposabljanja je na voljo več načinov za spremljanje dela. Vadnica prikazuje, kako spremljati osnovne meritve skripta za usposabljanje v ukazni vrstici z uporabo kubectl
, kako vizualno spremljati napredek vadbenega skripta v TensorBoardu (glejte naslednji posnetek zaslona) in kako spremljati uporabo pospeševalnika Trainium z uporabo neuron-top
orodje iz Neuron SDK.
Očistite ali ponovno uporabite okolje
Ko je opravilo usposabljanja končano, lahko gručo nato ponovno uporabite ali znova konfigurirate za dodatna opravila usposabljanja. Na primer, skupino vozlišč EKS je mogoče hitro povečati z uporabo eksctl
ukaz za podporo učnim opravilom, ki zahtevajo dodatne primerke Trn1. Podobno je mogoče ponujene ukaze za zagon Dockerfile in TorchX enostavno spremeniti tako, da podpirajo dodatne modele globokega učenja in distribucijske topologije usposabljanja.
Če gruča ni več potrebna, vadnica vključuje tudi vse potrebne korake za odstranitev infrastrukture EKS in povezanih virov.
zaključek
V tej objavi smo raziskali, kako instance Trn1 in Amazon EKS zagotavljata upravljano platformo za visoko zmogljivo, stroškovno učinkovito in množično razširljivo porazdeljeno usposabljanje modelov globokega učenja. Delili smo tudi obsežno vadnico, ki prikazuje, kako zagnati opravilo porazdeljenega usposabljanja z več primerki v resničnem svetu v Amazon EKS z uporabo primerkov Trn1, in izpostavili več ključnih korakov in komponent v rešitvi. Vsebino te vadnice je mogoče preprosto prilagoditi za druge modele in delovne obremenitve ter vam nudi temeljno rešitev za porazdeljeno usposabljanje modelov globokega učenja v AWS.
Če želite izvedeti več o tem, kako začeti uporabljati primerke Trn1, ki jih poganja Trainium, glejte Dokumentacija o nevronu.
O avtorjih
Scott Perry je arhitekt rešitev v ekipi pospeševalnika Annapurna ML pri AWS. S sedežem v Kanadi pomaga strankam uvajati in optimizirati usposabljanje za globoko učenje in delovne obremenitve sklepanja z uporabo AWS Inferentia in AWS Trainium. Njegovi interesi vključujejo velike jezikovne modele, globoko okrepljeno učenje, internet stvari in genomiko.
Lorea Arrizabalaga je arhitektka rešitev, povezana z javnim sektorjem Združenega kraljestva, kjer strankam pomaga oblikovati rešitve ML z Amazon SageMaker. Je tudi del Technical Field Community, posvečene pospeševanju strojne opreme, in pomaga pri testiranju in primerjanju delovnih obremenitev AWS Inferentia in AWS Trainium.
- Distribucija vsebine in PR s pomočjo SEO. Okrepite se še danes.
- Platoblockchain. Web3 Metaverse Intelligence. Razširjeno znanje. Dostopite tukaj.
- vir: https://aws.amazon.com/blogs/machine-learning/scaling-distributed-training-with-aws-trainium-and-amazon-eks/
- 1
- 100
- 11
- 2022
- 2023
- 7
- a
- Sposobna
- O meni
- plin
- pospeševalniki
- dostop
- dostopna
- doseže
- čez
- aktivno
- Dodatne
- napredovanje
- napredno
- Prednost
- poravnano
- vsi
- že
- Čeprav
- Amazon
- Amazon EC2
- Amazon SageMaker
- in
- Objavi
- razglasitve
- Objava
- uporabna
- primerno
- Arhitektura
- Argumenti
- vidiki
- povezan
- pripisujejo
- lastnosti
- razpoložljivost
- Na voljo
- AWS
- Oblikovanje oblaka AWS
- Sklepanje AWS
- pasovna širina
- temeljijo
- Osnovni
- ker
- pred
- primerjalna analiza
- Prednosti
- Billion
- Bloom
- široka
- izgradnjo
- Cache
- se imenuje
- Kanada
- čipi
- Izberite
- izbran
- Cloud
- Grozd
- Koda
- Kolektivna
- prihajajo
- Kmalu na voljo
- Skupno
- skupnost
- dokončanje
- dokončanje
- deli
- celovito
- Izračunajte
- konfiguracija
- povezane
- Sestavljeno
- Posoda
- Zabojniki
- Vsebuje
- vsebina
- nadzor
- Priročen
- Core
- stroškovno učinkovito
- ustvarjajo
- ustvaril
- Ustvarjanje
- Oblikovanje
- CSI
- Trenutno
- Stranke, ki so
- datum
- DDP
- namenjen
- globoko
- globoko učenje
- privzeto
- razporedi
- razporejeni
- opisano
- Oblikovanje
- Podatki
- podrobno
- razvoju
- naprava
- naprave
- neposredno
- Odkritje
- porazdeljena
- razdeljeno usposabljanje
- distribucijo
- prenesi
- voznik
- med
- vsak
- prej
- Zgodnje
- Enostavnost uporabe
- enostavno
- bodisi
- omogočajo
- konec koncev
- Končna točka
- zagotavlja
- Podjetje
- Tudi
- Primer
- razburjen
- izključuje
- obstaja
- Raziskano
- ekstrakt
- tkanina
- Poznavanje
- Polje
- file
- prva
- prilagodljivost
- Osredotočite
- sledi
- po
- Okvirni
- iz
- polno
- funkcionalnost
- splošno
- genomika
- dobili
- GitHub
- dana
- graf
- grafi
- skupina
- Vodniki
- Ročaji
- strojna oprema
- Srce
- pomoč
- Pomaga
- visoka
- visokozmogljivo
- Poudarjeno
- zelo
- gostitelj
- Kako
- Kako
- Vendar
- HTML
- HTTPS
- Stotine
- ID
- identificirati
- slika
- slike
- implicirano
- Pomembno
- in
- vključujejo
- vključeno
- vključuje
- Povečajte
- vedno
- Infrastruktura
- namestitev
- nameščen
- primer
- integracija
- interesi
- Internet stvari
- IT
- Job
- Delovna mesta
- Ključne
- Otrok
- jezik
- velika
- obsežne
- večja
- Pozen
- kosilo
- začela
- začetek
- plast
- UČITE
- učenje
- Led
- knjižnice
- vrstica
- linux
- obremenitev
- več
- Poglej
- POGLEDI
- stroj
- strojno učenje
- Glavne
- upravlja
- upravljanje
- množično
- Spomin
- metapodatki
- Meritve
- ML
- modeli
- spremembe
- Moduli
- monitor
- spremljati
- spremljanje
- monitorji
- mesecev
- več
- Najbolj
- več
- Ime
- Nimate
- mreža
- mreženje
- nevronska mreža
- Naslednja
- Vozel
- vozlišča
- Številka
- ponujen
- ponujanje
- Uradni
- ONE
- deluje
- operacije
- Optimizirajte
- optimizirana
- orkestracijo
- Da
- Ostalo
- opisano
- obrisi
- Splošni
- pregled
- parametri
- del
- opravil
- pot
- peer
- performance
- faza
- Kraj
- platforma
- platon
- Platonova podatkovna inteligenca
- PlatoData
- vključiti
- plugins
- točke
- Prispevek
- poganja
- močan
- predpogoji
- Postopek
- Napredek
- zagotavljajo
- če
- zagotavlja
- zagotavljanje
- javnega
- Založništvo
- potisnilo
- pitorha
- hitro
- naključno
- resnični svet
- reference
- okolica
- regije
- povezane
- odstrani
- Skladišče
- zahteva
- obvezna
- zahteva
- viri
- pregleda
- Run
- tek
- sagemaker
- Enako
- Prilagodljivost
- razširljive
- luske
- skaliranje
- SDK
- sektor
- Storitev
- Storitve
- nastavite
- več
- deli
- Shell
- shouldnt
- pokazale
- Razstave
- pomemben
- podobno
- velikosti
- manj
- So
- Software
- Rešitev
- rešitve
- nekaj
- določeno
- sveženj
- samostojna
- standardna
- začel
- zagon
- Korak
- Koraki
- Še vedno
- shranjevanje
- trgovina
- taka
- podpora
- Podprti
- Podpira
- Sinhronizacija
- sistem
- miza
- ob
- skupina
- tehnični
- Predloga
- začasna
- Testiranje
- O
- UK
- njihove
- tisoče
- skozi
- vsej
- čas
- do
- orodje
- orodja
- usposabljanje
- Res
- Navodila
- Uk
- edinstven
- Universal
- uporaba
- uporabnik
- različnih
- različica
- preko
- Obseg
- načini
- Weeks
- ali
- ki
- medtem
- bo
- v
- delavec
- delavci
- bi
- yaml
- Vi
- Vaša rutina za
- zefirnet
- cone