Nykyaikaisen mallin esikoulutus vaatii usein suuremman klusterin käyttöönottoa ajan ja kustannusten vähentämiseksi. Palvelintasolla tällaiset harjoitustyökuormat vaativat nopeampaa laskentaa ja lisää muistin varausta. Kun mallit kasvavat satoihin miljardeihin parametreihin, ne vaativat hajautetun koulutusmekanismin, joka kattaa useita solmuja (instanssia).
Aloitimme lokakuussa 2022 Amazon EC2 Trn1 -esiintymät, Powered by AWS Trainium, joka on AWS:n suunnittelema toisen sukupolven koneoppimiskiihdytin. Trn1-instanssit on suunniteltu korkean suorituskyvyn syväoppimismallikoulutukseen ja tarjoavat jopa 50 % säästöjä koulutuskustannuksissa verrattuna vastaaviin GPU-pohjaisiin instansseihin. Harjoitusajan lyhentämiseksi viikoista päiviin tai päivistä tunteihin ja suuren mallin harjoitustyön jakamiseksi voimme käyttää EC2 Trn1 UltraClusteria, joka koostuu tiiviisti pakatuista, samaan paikkaan sijoitetuista Trn1-laskentaesiintymien telineistä, jotka kaikki on kytketty toisiinsa estämätön petatavun mittakaavaverkko. Se on tähän mennessä suurin UltraClusterimme, joka tarjoaa 6 exaflopsia laskentatehoa tarpeen mukaan jopa 30,000 XNUMX Trainium-sirulla.
Tässä viestissä käytämme Hugging Face BERT-Large -mallin harjoittelua edeltävää työtaakkaa yksinkertaisena esimerkkinä selittämään, kuinka Trn1 UltraClustereja käytetään.
Trn1 UltraClusters
Trn1 UltraCluster on Trn1-esiintymien sijoitusryhmä palvelinkeskuksessa. Osana yksittäistä klusteriajoa voit muodostaa Trn1-esiintymien klusterin Trainium-kiihdyttimillä. Seuraavassa kaaviossa on esimerkki.
Trn1-esiintymien UltraClusterit sijaitsevat yhdessä datakeskuksessa ja yhdistetään toisiinsa käyttämällä Elastinen kangasadapteri (EFA), joka on petatavun mittakaavainen, estämätön verkkoliitäntä, jossa on jopa 800 Gbps verkkokaistanleveys, joka on kaksi kertaa AWS P4d -esiintymien tukema kaistanleveys (1.6 Tbps, neljä kertaa suurempi tulevien Trn1n-esiintymien kanssa). Nämä EFA-rajapinnat auttavat suorittamaan mallikoulutustyökuormia, jotka käyttävät Neuron Collective Communication Libraries -kirjastoja laajasti. Trn1 UltraClusters sisältää myös samassa paikassa sijaitsevia verkkoon liitettyjä tallennuspalveluita, kuten Amazon FSx Lusterille mahdollistaa suuren suorituskyvyn pääsyn suuriin tietokokonaisuuksiin ja varmistaa klusterien tehokkaan toiminnan. Trn1 UltraClusters voi isännöidä jopa 30,000 6 Trainium-laitetta ja toimittaa jopa 2 exaflops-laskentaa yhdessä klusterissa. EC1 Trn6 UltraClusterit tarjoavat jopa XNUMX exaflopsia laskentaa, kirjaimellisesti on-demand-supertietokoneita, joissa on pay-as-you-go -käyttömalli. Tässä viestissä käytämme joitain HPC-työkaluja, kuten Slurm, UltraClusterin lisäämiseen ja työkuormien hallintaan.
Ratkaisun yleiskatsaus
AWS tarjoaa laajan valikoiman palveluita hajautettuun mallikoulutukseen tai mittakaavan työkuormien päättelemiseen, mukaan lukien AWS-erä, Amazonin elastisten kuberneettien palvelu (Amazon EKS) ja UltraClusters. Tämä viesti keskittyy mallikoulutukseen UltraClusterissa. Ratkaisumme käyttää AWS ParallelCluster hallintatyökalu tarvittavan infrastruktuurin ja ympäristön luomiseen Trn1 UltraClusterin luomiseksi. Infrastruktuuri koostuu pääsolmusta ja useista Trn1-laskentasolmuista virtuaalisessa yksityispilvessä (VPC). Käytämme Slurmia klusterinhallinta- ja työaikataulujärjestelmänä. Seuraava kaavio havainnollistaa ratkaisumme arkkitehtuuria.
Katso lisätietoja ja tämän ratkaisun käyttöönottoa Kouluta mallia AWS Trn1 ParallelClusterissa.
Katsotaanpa joitakin tämän ratkaisun tärkeitä vaiheita:
- Luo VPC ja aliverkot.
- Määritä laskentakalusto.
- Luo klusteri.
- Tarkista klusteri.
- Aloita koulutustyösi.
Edellytykset
Tämän viestin jälkeen laaja perehtyneisyys AWS-ydinpalveluihin, kuten Amazonin elastinen laskentapilvi (Amazon EC2) on implisiittinen, ja syväoppimisen ja PyTorchin perustiedot auttaisivat.
Luo VPC ja aliverkkoja
Helppo tapa luoda VPC ja aliverkkoja on Amazonin virtuaalinen yksityinen pilvi (Amazon VPC) -konsoli. Täydelliset ohjeet löytyvät osoitteesta GitHub. Kun VPC ja aliverkot on asennettu, sinun on määritettävä laskentakaluston ilmentymät. Lyhyesti sanottuna tämän tekee mahdolliseksi asennusskripti, jonka CustomActions on määrittänyt ParallelClusterin luomiseen käytetyssä YAML-tiedostossa (katso Luo ParallelCluster). ParallelCluster vaatii VPC:n, jossa on kaksi aliverkkoa ja NAT (Network Address Translation) -yhdyskäytävä, kuten edellisessä arkkitehtuurikaaviossa näkyy. Tämän VPC:n on sijaittava käytettävyysvyöhykkeillä, joissa Trn1-esiintymät ovat saatavilla. Lisäksi tässä VPC:ssä sinulla on oltava julkinen aliverkko ja yksityinen aliverkko pääsolmun ja Trn1-laskentasolmun säilyttämiseksi. Tarvitset myös NAT-yhdyskäytävän Internet-yhteyden, jotta Trn1-laskentasolmut voivat ladata AWS Neuron paketteja. Yleensä laskentasolmut saavat päivitykset käyttöjärjestelmäpaketteihin, Neuron-ajuriin ja ajoaikaan sekä EFA-ajuriin usean ilmentymän koulutukseen.
Mitä tulee pääsolmuun, se vastaanottaa edellä mainittujen laskentasolmujen komponenttien lisäksi PyTorch-NeuronX- ja NeuronX-kääntäjän, joka mahdollistaa mallin käännösprosessin XLA-laitteissa, kuten Trainiumissa.
Määritä laskentakalusto
YAML-tiedostossa Trn1 UltraClusterin luomista varten InstanceType
on määritetty muodossa trn1.32xlarge. MaxCount
ja MinCount
käytetään osoittamaan laskentakalustosi kokoaluetta. Voit käyttää MinCount
pitääksesi jotkin tai kaikki Trn1-esiintymät aina saatavilla. MinCount
voidaan asettaa nollaan, joten jos käynnissä ei ole työtä, Trn1-esiintymät vapautetaan tästä klusterista.
Trn1 voidaan myös ottaa käyttöön UltraClusterissa, jossa on useita jonoja. Seuraavassa esimerkissä Slurm-työn lähetystä varten on asetettu vain yksi jono:
Jos tarvitset useamman kuin yhden jonon, voit määrittää useita InstanceType
, jokaisella omansa MaxCount
, MinCount
ja Name
:
Tässä asetetaan kaksi jonoa, jotta käyttäjällä on mahdollisuus valita resurssit Slurm-työhönsä.
Luo klusteri
Käynnistä Trn1 UltraCluster käyttämällä seuraavaa pcluster
komento mistä olet ParallelCluster-työkalu on asennettu:
Käytämme tässä komennossa seuraavia vaihtoehtoja:
--cluster-configuration
– Tämä vaihtoehto odottaa YAML-tiedoston, joka kuvaa klusterin kokoonpanon-n
(Tai--cluster-name
) – Tämän klusterin nimi
Tämä komento luo Trn1-klusterin AWS-tiliisi. Voit tarkistaa klusterin luomisen edistymisen osoitteessa AWS-pilven muodostuminen konsoli. Lisätietoja on kohdassa AWS CloudFormation -konsolin käyttäminen.
Vaihtoehtoisesti voit käyttää seuraavaa komentoa nähdäksesi pyyntösi tilan:
ja komento ilmaisee tilan, esimerkiksi:
Seuraavat ovat kiinnostavia parametreja tulosteesta:
- instanceId – Tämä on pääsolmun ilmentymätunnus, joka luetellaan Amazon EC2 -konsolissa
- laskea FleetStatus – Tämä attribuutti ilmaisee laskentasolmujen valmiuden
- Tunnisteet – Tämä määrite ilmaisee version
pcluster
tämän klusterin luomiseen käytetty työkalu
Tarkista klusteri
Voit käyttää edellä mainittua pcluster describe-cluster
-komento tarkistaaksesi klusterin. Kun klusteri on luotu, huomaat seuraavan tuloksessa:
Tässä vaiheessa voit SSH:ta pääsolmuun (joka tunnistetaan Amazon EC2 -konsolin ilmentymän tunnuksella). Seuraava on looginen kaavio klusterista.
Kun olet syöttänyt SSH:n pääsolmuun, voit tarkistaa laskentakaluston ja niiden tilan Slurm-komennolla, kuten sinfo
tarkastellaksesi järjestelmän solmutietoja. Seuraava on esimerkkituloste:
Tämä osoittaa, että on olemassa yksi jono, kuten yksi osio osoittaa. Käytettävissä on 16 solmua, ja resurssit on allokoitu. Pääsolmusta voit tehdä SSH:n mihin tahansa tiettyyn laskentasolmuun:
Käyttää exit
päästäksesi takaisin pääsolmuun.
Samoin voit SSH:ta laskentasolmuun toisesta laskentasolmusta. Jokaiseen laskentasolmuun on asennettu Neuron-työkalut, kuten neuron-top
. Voit kutsua neuron-top
harjoitusskriptin aikana tarkastaaksesi NeuronCore-käytön kussakin solmussa.
Aloita koulutustyösi
Käytämme Halaavat kasvot BERT-Large esiharjoittelun opetusohjelma esimerkkinä käytettäväksi tässä klusterissa. Kun harjoitustiedot ja komentosarjat on ladattu klusteriin, käytämme Slurm-ohjainta työtaakkamme hallintaan ja organisointiin. Lähetämme koulutustyön kanssa sbatch
komento. Shell-skripti kutsuu Python-komentosarjan kautta neuron_parallel_compile
API kokoamaan mallin kaavioiksi ilman täydellistä harjoittelua. Katso seuraava koodi:
Käytämme tässä komennossa seuraavia vaihtoehtoja:
--exclusive
– Tämä työ käyttää kaikkia solmuja eikä jaa solmuja muiden töiden kanssa nykyistä työtä suoritettaessa.--nodes
– Tämän työn solmujen määrä.--wrap
– Tämä määrittää komentojonon, jota Slurm-ohjain suorittaa. Tässä tapauksessa se yksinkertaisesti kokoaa mallin rinnakkain käyttämällä kaikkia solmuja.
Kun malli on käännetty onnistuneesti, voit aloittaa täyden harjoitustyön seuraavalla komennolla:
Tämä komento käynnistää Hugging Face BERT-Large -mallin harjoittelun. 16 Trn1.32xlarge solmulla voit odottaa sen valmistuvan alle 8 tunnissa.
Tässä vaiheessa voit käyttää Slurm-komentoa, kuten squeue
tarkastaa lähetetty työ. Esimerkkituloste on seuraava:
Tämä tulos näyttää, että työ on käynnissä (R
) 16 laskentasolmussa.
Kun työ on käynnissä, tulosteet kaapataan ja liitetään Slurm-lokitiedostoon. Pääsolmun terminaalista voit tarkastaa sen reaaliajassa.
Slurm-lokitiedoston kanssa samassa hakemistossa on myös vastaava hakemisto tälle työlle. Tämä hakemisto sisältää seuraavat (esimerkiksi):
Tämä hakemisto on kaikkien laskentasolmujen käytettävissä. results.json
kaappaa tämän tietyn työn ajon metatiedot, kuten mallin kokoonpanon, eräkoon, askeleiden kokonaismäärän, gradientin kertymisvaiheet ja koulutustietojoukon nimen. Jokaisen laskentasolmun mallin tarkistuspiste ja tulosloki tallennetaan myös tähän hakemistoon.
Harkitse klusterin skaalautuvuutta
Trn1 UltraClusterissa useat toisiinsa yhdistetyt Trn1-instanssit suorittavat suuren mallin harjoitustyökuorman rinnakkain ja vähentävät kokonaislaskenta-aikaa tai lähentymiseen kuluvaa aikaa. Klusterin skaalautuvuuden mittaa on kaksi: voimakas skaalaus ja heikko skaalaus. Tyypillisesti mallikoulutuksessa on tarve nopeuttaa harjoitusajoa, koska käyttökustannukset määräytyvät gradienttipäivityskierrosten näytemäärän mukaan. Vahva skaalaus viittaa skenaarioon, jossa ongelman kokonaiskoko pysyy samana prosessorien määrän kasvaessa, vahva skaalaus on tärkeä skaalautuvuuden mitta mallin koulutuksessa. Arvioidessaan voimakasta skaalausta (eli rinnakkaisuuden vaikutusta) haluamme pitää globaalin eräkoon samana ja nähdä kuinka kauan konvergenssi vie aikaa. Tällaisessa skenaariossa meidän on säädettävä gradientin kertymisen mikroaskel laskentasolmujen lukumäärän mukaan. Tämä saavutetaan seuraavalla koulutuskuoren komentosarjassa run_dp_bert_large_hf_pretrain_bf16_s128.sh
:
Toisaalta, jos haluat arvioida, kuinka monta työkuormaa voidaan suorittaa kiinteänä aikana lisäämällä solmuja, käytä heikkoa skaalausta skaalautuvuuden mittaamiseen. Heikosta skaalautuksessa ongelman koko kasvaa samaa tahtia kuin NeuronCores-yksikköjen määrä, jolloin työmäärä NeuronCoresia kohti pysyy samana. Jos haluat arvioida heikkoa skaalausta tai solmujen lisäämisen vaikutusta lisääntyneeseen työmäärään, poista yllä oleva rivi harjoituskomentosarjasta ja pidä gradientin kertymisen vaiheiden määrä vakiona harjoitusskriptin oletusarvon (32) kanssa.
Arvioi tuloksiasi
Tarjoamme joitain vertailutuloksia Neuronin suorituskykysivu osoittaakseen skaalausvaikutuksen. Tiedot osoittavat edun useiden esiintymien käyttämisestä koulutustyön rinnastamiseen useille eri suurille malleille, jotta ne voidaan harjoitella mittakaavassa.
Puhdista infrastruktuurisi
Voit poistaa tämän UltraClusterin kaiken infrastruktuurin käyttämällä pcluster
komento klusterin ja sen resurssien poistamiseksi:
Yhteenveto
Tässä viestissä keskustelimme siitä, kuinka harjoitustyösi skaalaaminen AWS:n Trainium-kiihdyttimillä toimivan Trn1-UltraClusterin kautta vähentää mallin kouluttamiseen kuluvaa aikaa. Annoimme myös linkin Neuroninäytteiden arkisto, joka sisältää ohjeet hajautetun koulutustyön käyttöönotosta BERT-Large-mallissa. Trn1-UltraCluster suorittaa hajautettuja harjoitustyökuormia ja kouluttaa erittäin suuria syväoppimismalleja mittakaavassa. Hajautettu opetusasetus johtaa paljon nopeampaan mallin konvergenssiin verrattuna koulutukseen yhdellä Trn1-ilmentymällä.
Lisätietoja Trainium-käyttöisten Trn1-esiintymien käytön aloittamisesta on osoitteessa Neuronin dokumentaatio.
Tietoja Tekijät
KC Tung on vanhempi ratkaisuarkkitehti AWS Annapurna Labsissa. Hän on erikoistunut laajaan syväoppimismallien koulutukseen ja mittakaavaan pilvessä. Hän on Ph.D. molekyylibiofysiikassa Texasin yliopiston Southwestern Medical Centeristä Dallasissa. Hän on puhunut AWS Summitsissa ja AWS Reinventissä. Nykyään hän auttaa asiakkaita kouluttamaan ja ottamaan käyttöön suuria PyTorch- ja TensorFlow-malleja AWS-pilvessä. Hän on kirjoittanut kaksi kirjaa: Opi TensorFlow Enterprise ja TensorFlow 2 Pocket Reference.
Jeffrey Huynh on pääinsinööri AWS Annapurna Labsissa. Hän on intohimoinen auttaa asiakkaita suorittamaan koulutusta ja päättelemään työtaakkaa Trainium- ja Inferentia-kiihdytinlaitteilla käyttämällä AWS Neuron SDK. Hän on Caltechin/Stanfordin alumni, jolla on tutkinnot fysiikan ja EE:n tutkinnoista. Hän nauttii juoksemisesta, tennistä, ruoanlaitosta ja lukemisesta tieteestä ja tekniikasta.
Shruti Koparkar on AWS:n tuotemarkkinointipäällikkö. Hän auttaa asiakkaita tutkimaan, arvioimaan ja ottamaan käyttöön EC2-kiihdytettyä laskentainfrastruktuuria koneoppimistarpeisiinsa.
- SEO-pohjainen sisällön ja PR-jakelu. Vahvista jo tänään.
- Platoblockchain. Web3 Metaverse Intelligence. Tietoa laajennettu. Pääsy tästä.
- Lähde: https://aws.amazon.com/blogs/machine-learning/scaling-large-language-model-llm-training-with-amazon-ec2-trn1-ultraclusters/
- 000
- 1
- 10
- 100
- 2022
- 7
- 9
- a
- Meistä
- edellä
- kiihtyi
- kiihdytin
- kiihdyttimiä
- pääsy
- saatavilla
- Mukaan
- Tili
- kertymä
- saavutettu
- poikki
- Lisäksi
- osoite
- hyväksyä
- Jälkeen
- Kaikki
- kohdennetaan
- jako
- Amazon
- Amazon EC2
- määrä
- ja
- Toinen
- api
- arkkitehtuuri
- kirjoittaja
- saatavuus
- saatavissa
- AWS
- AWS-pilven muodostuminen
- takaisin
- kaistanleveys
- perustiedot
- koska
- ovat
- benchmark
- hyödyttää
- miljardeja
- Biofysiikka
- Kirjat
- lyhyesti
- tuoda
- laaja
- rakennettu
- Puhelut
- kaappaa
- tapaus
- keskus
- tarkastaa
- sirut
- Valita
- pilvi
- Cluster
- koodi
- Kollektiivinen
- Viestintä
- vertailukelpoinen
- verrattuna
- täydellinen
- osat
- laskeminen
- Laskea
- tietojenkäsittely
- Konfigurointi
- Console
- vakio
- sisältää
- ohjain
- Lähentyminen
- Ydin
- vastaava
- Hinta
- luoda
- luotu
- luo
- Luominen
- luominen
- Nykyinen
- Asiakkaat
- Dallas
- tiedot
- Data Center
- aineistot
- Päivämäärä
- päivää
- syvä
- syvä oppiminen
- oletusarvo
- määrittelee
- toimittaa
- Kysyntä
- osoittaa
- osoittaa
- sijoittaa
- käyttöön
- käyttöönotto
- suunniteltu
- yksityiskohdat
- määritetty
- Laitteet
- eri
- keskusteltiin
- jakaa
- jaettu
- hajautettu koulutus
- alas
- download
- kuljettaja
- aikana
- kukin
- vaikutus
- tehokkaasti
- mahdollistaa
- mahdollistaa
- insinööri
- varmistamalla
- ympäristö
- arvioida
- arviointiin
- esimerkki
- odottaa
- odottaa
- Selittää
- tutkia
- kangas
- Kasvot
- perehtyneisyys
- nopeampi
- filee
- kiinteä
- LAIVASTON
- Joustavuus
- keskittyy
- seurata
- jälkeen
- seuraa
- löytyi
- alkaen
- koko
- portti
- general
- sukupolvi
- saada
- mennä
- tietty
- Global
- kaaviot
- suurempi
- Ryhmä
- Kasvaa
- käsi
- pää
- auttaa
- hyödyllinen
- auttaa
- auttaa
- Korkea
- korkea suorituskyky
- pitää
- isäntä
- TUNTIA
- Miten
- Miten
- hpc
- HTML
- HTTPS
- Sadat
- ID
- tunnistettu
- Vaikutus
- epäsuora
- tärkeä
- in
- sisältää
- sisältää
- Mukaan lukien
- kasvoi
- Lisäykset
- osoittaa
- ilmaisee
- Ääretön
- tiedot
- Infrastruktuuri
- asennetaan
- esimerkki
- ohjeet
- toisiinsa
- korko
- liitäntä
- rajapinnat
- Internet
- Internet-yhteys
- vedotaan
- IT
- Johannes
- Job
- Työpaikat
- json
- Pitää
- pito
- avain
- Labs
- Kieli
- suuri
- suurempi
- suurin
- käynnistää
- käynnistettiin
- OPPIA
- oppiminen
- Taso
- kirjastot
- linja
- LINK
- lueteltu
- OTK
- looginen
- katso
- kone
- koneoppiminen
- tehty
- hoitaa
- johto
- johtaja
- monet
- Marketing
- mitata
- toimenpiteet
- mekanismi
- lääketieteellinen
- Muisti
- Metadata
- malli
- mallit
- molekyyli-
- lisää
- moninkertainen
- nimi
- välttämätön
- Tarve
- tarpeet
- verkko
- verkostoituminen
- solmu
- solmut
- numero
- tarkkailla
- lokakuu
- tarjoamalla
- Tarjoukset
- ONE
- käyttää
- Vaihtoehto
- Vaihtoehdot
- tilata
- OS
- Muut
- oma
- paketit
- pakattu
- Parallel
- parametrit
- osa
- erityinen
- intohimoinen
- suorituskyky
- Fysiikka
- Platon
- Platonin tietotieto
- PlatonData
- Kohta
- mahdollinen
- Kirje
- teho
- powered
- Pääasiallinen
- yksityinen
- Ongelma
- prosessi
- prosessorit
- Tuotteet
- Edistyminen
- toimittaa
- mikäli
- julkinen
- tarkoitus
- Python
- pytorch
- Ramppi
- alue
- hinta
- valmius
- Lukeminen
- todellinen
- reaaliaikainen
- reason
- vastaanottaa
- vastaanottaa
- vähentää
- vähentää
- viittaa
- alue
- julkaistu
- poistaa
- pyyntö
- edellyttää
- Vaatii
- Esittelymateriaalit
- tulokset
- kierrosta
- ajaa
- juoksu
- sama
- Säästöt
- skaalautuvuus
- Asteikko
- skaalaus
- skenaario
- tiede
- Tiede ja teknologia
- skriptejä
- Toinen
- Toinen sukupolvi
- vanhempi
- Palvelut
- setti
- setup
- Jaa:
- Kuori
- esitetty
- Näytä
- Yksinkertainen
- yksinkertaisesti
- single
- Koko
- So
- ratkaisu
- jonkin verran
- jännevälien
- erikoistunut
- määritelty
- nopeus
- Kierre
- Alkaa
- alkoi
- Osavaltio
- Tila
- Askeleet
- Levytila
- vahva
- jättämisestä
- antaa
- toimitettu
- aliverkon
- aliverkkoon
- Onnistuneesti
- niin
- Huippukokouksissa
- supertietokone
- Tuetut
- järjestelmä
- vie
- Elektroniikka
- tensorflow
- terminaali
- texas
- -
- heidän
- siten
- Kautta
- suoritusteho
- aika
- kertaa
- että
- tänään
- työkalu
- työkalut
- Yhteensä
- Juna
- koulutus
- Kääntäminen
- tyypillisesti
- Ubuntu
- yliopisto
- tuleva
- Päivitykset
- URL
- Käyttö
- käyttää
- käyttäjä
- arvo
- lajike
- todentaa
- versio
- kautta
- Näytä
- Virtual
- viikkoa
- joka
- vaikka
- leveä
- tulee
- sisällä
- ilman
- Referenssit
- olisi
- kääri
- yaml
- Voit
- Sinun
- zephyrnet
- nolla-
- alueet