De siste årene har vist en fantastisk vekst i deep learning neurale nettverk (DNN). Denne veksten kan sees i mer nøyaktige modeller og til og med åpne nye muligheter med generativ AI: store språkmodeller (LLM) som syntetiserer naturlig språk, tekst-til-bilde-generatorer og mer. Disse økte egenskapene til DNN-er kommer med kostnadene ved å ha massive modeller som krever betydelige beregningsressurser for å bli opplært. Distribuert opplæring adresserer dette problemet med to teknikker: dataparallellisme og modellparallellisme. Dataparallellisme brukes til å skalere opplæringsprosessen over flere noder og arbeidere, og modellparallellisme deler en modell og passer dem over den utpekte infrastrukturen. Amazon SageMaker distribuert opplæring jobber lar deg med ett klikk (eller ett API-kall) sette opp en distribuert dataklynge, trene en modell, lagre resultatet til Amazon enkel lagringstjeneste (Amazon S3), og slå av klyngen når du er ferdig. Videre har SageMaker kontinuerlig innovert i det distribuerte treningsrommet ved å lansere funksjoner som heterogene klynger og distribuerte opplæringsbibliotek for dataparallellisme og modell parallellisme.
Effektiv trening i et distribuert miljø krever justering av hyperparametre. Et vanlig eksempel på god praksis når du trener på flere GPUer, er å multiplisere batch (eller mini-batch) størrelse med GPU-nummeret for å beholde samme batchstørrelse per GPU. Imidlertid påvirker justering av hyperparametre ofte modellkonvergens. Derfor må distribuert trening balansere tre faktorer: distribusjon, hyperparametre og modellnøyaktighet.
I dette innlegget utforsker vi effekten av distribuert trening på konvergens og hvordan du bruker den Amazon SageMaker Automatisk modellinnstilling å finjustere modellhyperparametre for distribuert trening ved bruk av dataparallellisme.
Kildekoden nevnt i dette innlegget finner du på GitHub repository (en m5.xlarge-forekomst anbefales).
Skaler ut trening fra et enkelt til distribuert miljø
Dataparallellisme er en måte å skalere treningsprosessen til flere dataressurser og oppnå raskere treningstid. Med dataparallellisme partisjoneres data mellom beregningsnodene, og hver node beregner gradientene basert på deres partisjon og oppdaterer modellen. Disse oppdateringene kan gjøres ved å bruke en eller flere parameterservere på en asynkron, en-til-mange eller alt-til-alle-måte. En annen måte kan være å bruke en AllReduce-algoritme. For eksempel, i ring-all-reduce-algoritmen, kommuniserer hver node med bare to av sine nabonoder, og reduserer derved de totale dataoverføringene. For å lære mer om parameterservere og ring-allreduce, se Lansering av TensorFlow distribuert trening enkelt med Horovod eller Parameter Servers i Amazon SageMaker. Med hensyn til datapartisjonering, hvis det er n beregne noder, så skal hver node få en delmengde av dataene, omtrent 1/n i størrelse.
For å demonstrere effekten av å skalere ut trening på modellkonvergens, kjører vi to enkle eksperimenter:
Hver modelltrening kjørte to ganger: på en enkelt forekomst og fordelt på flere forekomster. For den distribuerte DNN-opplæringen, for å utnytte de distribuerte prosessorene fullt ut, multipliserte vi minibatchstørrelsen med antall forekomster (fire). Tabellen nedenfor oppsummerer oppsettet og resultatene.
Problemtype | Bildeklassifisering | Binær klassifisering | ||
Modell | DNN | Xgboost | ||
Forekomst | ml.c4.xlarge | ml.m5.2xlarge | ||
Datasett |
(merkede bilder) |
Direkte markedsføring (tabellformede, numeriske og vektoriserte kategorier) |
||
Valideringsberegning | Nøyaktighet | AUC | ||
Epoker/runder | 20 | 150 | ||
Antall forekomster | 1 | 4 | 1 | 3 |
Distribusjonstype | N / A | Parameter server | N / A | Alle Reduser |
Treningstid (minutter) | 8 | 3 | 3 | 1 |
Endelig valideringspoengsum | 0.97 | 0.11 | 0.78 | 0.63 |
For begge modellene ble treningstiden redusert nesten lineært av fordelingsfaktoren. Modellkonvergensen fikk imidlertid et betydelig fall. Denne oppførselen er konsistent for de to forskjellige modellene, de forskjellige beregningsforekomstene, de forskjellige distribusjonsmetodene og forskjellige datatyper. Så hvorfor påvirket distribusjon av opplæringsprosessen modellens nøyaktighet?
Det er en rekke teorier som prøver å forklare denne effekten:
- Når tensoroppdateringer er store i størrelse, kan trafikken mellom arbeidere og parameterserveren bli overbelastet. Derfor vil asynkrone parameterservere lide betydelig dårligere konvergens på grunn av forsinkelser i vektoppdateringer [1].
- Økende batchstørrelse kan føre til overtilpasning og dårlig generalisering, og dermed redusere valideringsnøyaktigheten [2].
- Når du asynkront oppdaterer modellparametere, kan det hende at enkelte DNN-er ikke bruker de siste oppdaterte modellvektene; derfor vil de beregne gradienter basert på vekter som ligger noen få iterasjoner bak. Dette fører til forfall i vekt [3] og kan være forårsaket av en rekke årsaker.
- Noen hyperparametre er modell- eller optimeringsspesifikke. For eksempel sier XGBoost offisielle dokumentasjon at
exact
verdi fortree_mode
hyperparameter støtter ikke distribuert opplæring fordi XGBoost bruker raddeling av datadistribusjon mensexact
tremetoden fungerer på et sortert kolonneformat. - Noen forskere foreslo at konfigurering av en større mini-batch kan føre til gradienter med mindre stokastisitet. Dette kan skje når tapsfunksjonen inneholder lokale minima og sadelpunkter og det ikke gjøres noen endring i trinnstørrelse, for at optimalisering setter seg fast i slike lokale minima eller sadelpunkt [4].
Optimaliser for distribuert trening
Hyperparameteroptimalisering (HPO) er prosessen med å søke og velge et sett med hyperparametere som er optimale for en læringsalgoritme. SageMaker Automatic Model Tuning (AMT) gir HPO som en administrert tjeneste ved å kjøre flere opplæringsjobber på det angitte datasettet. SageMaker AMT søker i områdene med hyperparametere som du spesifiserer, og returnerer de beste verdiene, målt med en beregning du velger. Du kan bruke SageMaker AMT med de innebygde algoritmene eller bruke dine egendefinerte algoritmer og beholdere.
Optimalisering for distribuert opplæring skiller seg imidlertid fra vanlig HPO fordi i stedet for å starte en enkelt forekomst per opplæringsjobb, starter hver jobb faktisk en klynge av forekomster. Dette betyr en større innvirkning på kostnadene (spesielt hvis du vurderer kostbare GPU-akselererte forekomster, som er typiske for DNN). I tillegg til AMT-grenser, kan du muligens treffe SageMaker kontogrenser for samtidig antall treningsinstanser. Endelig kan lanseringsklynger introdusere driftsoverhead på grunn av lengre starttid. SageMaker AMT har spesifikke funksjoner for å løse disse problemene. Hyperband med tidlig stopp sikrer at godt-ytende hyperparameterkonfigurasjoner finjusteres og de som underpresterer blir automatisk stoppet. Dette muliggjør effektiv bruk av treningstid og reduserer unødvendige kostnader. SageMaker AMT støtter også fullt ut bruken av Amazon EC2 Spot Instances, som kan optimere kostnad for trening opptil 90 % over on-demand-forekomster. Når det gjelder lange starttider, gjenbruker SageMaker AMT automatisk treningsforekomster innenfor hver tuningjobb, og reduserer dermed den gjennomsnittlige oppstartstiden for hver treningsjobb med 20 ganger. I tillegg bør du følge med AMT beste praksis, for eksempel å velge de relevante hyperparametrene, deres passende rekkevidder og skalaer, og det beste antallet samtidige treningsjobber, og sette et tilfeldig frø for å reprodusere resultater.
I neste avsnitt ser vi disse funksjonene i aksjon når vi konfigurerer, kjører og analyserer en AMT-jobb ved å bruke XGBoost-eksemplet vi diskuterte tidligere.
Konfigurer, kjør og analyser en innstillingsjobb
Som nevnt tidligere, kan kildekoden finnes på GitHub repo. I trinn 1–5 laster vi ned og klargjør dataene, oppretter xgb3
estimator (den distribuerte XGBoost-estimatoren er satt til å bruke tre forekomster), kjør treningsjobbene og observer resultatene. I denne delen beskriver vi hvordan du setter opp innstillingsjobben for den estimatoren, forutsatt at du allerede har gått gjennom trinn 1–5.
En innstillingsjobb beregner optimale hyperparametre for treningsjobbene den starter ved å bruke en beregning for å evaluere ytelsen. Du kan konfigurer din egen beregning, som SageMaker vil analysere basert på regex du konfigurerer og sender til stdout
, eller bruk beregningene til SageMaker innebygde algoritmer. I dette eksemplet bruker vi innebygd XGBoost objektiv metrikk, så vi trenger ikke å konfigurere et regulært uttrykk. For å optimalisere for modellkonvergens, optimaliserer vi basert på validerings-AUC-beregningen:
Vi stiller inn syv hyperparametre:
- num_round – Antall runder for boosting under treningen.
- eta – Krymping i trinnstørrelse brukt i oppdateringer for å forhindre overmontering.
- alpha – L1-regulariseringstermin på vekter.
- min_barnevekt – Minimum sum av instansvekt (hessian) som er nødvendig for et barn. Hvis trepartisjonstrinnet resulterer i en bladnode med summen av instansvekten mindre enn
min_child_weight
, gir byggeprosessen opp ytterligere partisjonering. - maks. dybde – Maksimal dybde på et tre.
- colsample_bylevel – Delprøveforhold av kolonner for hver del, i hvert nivå. Denne delprøven finner sted én gang for hvert nytt dybdenivå som nås i et tre.
- colsample_bytree – Delprøveforhold av kolonner ved konstruksjon av hvert tre. For hvert tre som er konstruert, skjer delprøven én gang.
For å lære mer om XGBoost-hyperparametere, se XGBoost hyperparametere. Følgende kode viser de syv hyperparametrene og deres områder:
Deretter gir vi konfigurasjon for Hyperband-strategien og tunerobjektkonfigurasjonen ved hjelp av SageMaker SDK. HyperbandStrategyConfig
kan bruke to parametere: max_resource
(valgfritt) for maksimalt antall iterasjoner som skal brukes for en treningsjobb for å oppnå målet, og min_resource
– minimum antall iterasjoner som skal brukes av en treningsjobb før treningen stoppes. Vi bruker HyperbandStrategyConfig
å konfigurere StrategyConfig
, som senere brukes av tuning-jobbdefinisjonen. Se følgende kode:
Nå lager vi en HyperparameterTuner
objekt, som vi sender følgende informasjon til:
- XGBoost-estimatoren, satt til å kjøre med tre forekomster
- Det objektive metriske navnet og definisjonen
- Våre hyperparametere varierer
- Justere ressurskonfigurasjoner som antall treningsjobber som skal kjøres totalt og hvor mange treningsjobber som kan kjøres parallelt
- Hyperbåndinnstillinger (strategien og konfigurasjonen vi konfigurerte i det siste trinnet)
- Tidlig stopp (
early_stopping_type
) satt tilOff
Hvorfor setter vi tidlig stopp til Off? Treningsjobber kan stoppes tidlig når det er usannsynlig at de vil forbedre den objektive metrikken til hyperparameterinnstillingsjobben. Dette kan bidra til å redusere beregningstiden og unngå overmontering av modellen. Hyperband bruker imidlertid en avansert innebygd mekanisme for å bruke tidlig stopp. Derfor parameteren early_stopping_type
må settes til Off
når du bruker Hyperbands interne tidlige stoppfunksjon. Se følgende kode:
Til slutt starter vi den automatiske modellinnstillingsjobben ved å ringe passer metode. Hvis du vil starte jobben på en asynkron måte, still inn wait
til False
. Se følgende kode:
Du kan følge jobbfremdriften og sammendraget på SageMaker-konsollen. I navigasjonsruten, under Kurs, velg Hyperparameter tuning jobber, og velg deretter den aktuelle innstillingsjobben. Følgende skjermbilde viser innstillingsjobben med detaljer om treningsjobbenes status og ytelse.
Når tuning-jobben er fullført, kan vi gjennomgå resultatene. I notatbokeksemplet viser vi hvordan du trekker ut resultater ved å bruke SageMaker SDK. Først undersøker vi hvordan innstillingsjobben økte modellkonvergensen. Du kan legge ved HyperparameterTuner
objekt ved å bruke jobbnavnet og kalle beskrive metode. Metoden returnerer en ordbok som inneholder metadata for justering av jobb og resultater.
I den følgende koden henter vi verdien av den best presterende treningsjobben, målt ved vår objektive beregning (validerings-AUC):
Resultatet er 0.78 i AUC på valideringssettet. Det er en betydelig forbedring i forhold til de opprinnelige 0.63!
La oss deretter se hvor raskt treningsjobben vår gikk. Til det bruker vi HyperparameterTuningJobAnalytics metode i SDK for å hente resultater om innstillingsjobben, og lese inn i en Pandas dataramme for analyse og visualisering:
La oss se den gjennomsnittlige tiden en treningsjobb tok med Hyperband-strategi:
Gjennomsnittlig tid tok omtrent 1 minutt. Dette er i samsvar med Hyperband-strategimekanismen som stopper underpresterende treningsjobber tidlig. Kostnadsmessig belastet tuningjobben oss for totalt 30 minutter treningstid. Uten tidlig stopp av Hyperband, var den totale fakturerbare opplæringsvarigheten forventet å være 90 minutter (30 jobber * 1 minutter per jobb * 3 tilfeller per jobb). Det er tre ganger bedre i kostnadsbesparelser! Til slutt ser vi at tuningjobben kjørte 30 treningsjobber og tok totalt 12 minutter. Det er nesten 50 % mindre av forventet tid (30 jobber/4 jobber parallelt * 3 minutter per jobb).
konklusjonen
I dette innlegget beskrev vi noen observerte konvergensproblemer ved opplæring av modeller med distribuerte miljøer. Vi så at SageMaker AMT ved bruk av Hyperband adresserte hovedproblemene som introduserte optimalisering av data parallelt distribuert trening: konvergens (som ble forbedret med mer enn 10 %), operasjonell effektivitet (innstillingsjobben tok 50 % kortere tid enn en sekvensiell, ikke-optimalisert jobb ville har tatt) og kostnadseffektivitet (30 vs. de 90 fakturerbare minuttene med treningsjobbtid). Følgende tabell oppsummerer resultatene våre:
Forbedringsmåling | Ingen Tuning/Naiv Model Tuning Implementering | SageMaker Hyperband Automatisk modellinnstilling | Målt forbedring |
Modellkvalitet (Målt ved validerings-AUC) |
0.63 | 0.78 | 15% |
Kostnad (Målt etter fakturerbare treningsminutter) |
90 | 30 | 66% |
Operasjonell effektivitet (Målt ved total kjøretid) |
24 | 12 | 50% |
For å finjustere med hensyn til skalering (klyngestørrelse), kan du gjenta innstillingsjobben med flere klyngekonfigurasjoner og sammenligne resultatene for å finne de optimale hyperparametrene som tilfredsstiller hastighet og modellnøyaktighet.
Vi inkluderte trinnene for å oppnå dette i den siste delen av bærbare.
Referanser
[1] Lian, Xiangru, et al. "Asynkron desentralisert parallell stokastisk gradientnedstigning." Internasjonal konferanse om maskinlæring. PMLR, 2018.
[2] Keskar, Nitish Shirish, et al. "Om store grupperinger for dyp læring: Generaliseringsgap og skarpe minima." arXiv preprint arXiv: 1609.04836 (2016).
[3] Dai, Wei, et al. "For å forstå virkningen av staleness i distribuert maskinlæring." arXiv preprint arXiv: 1810.03264 (2018).
[4] Dauphin, Yann N., et al. "Identifisere og angripe setepunktproblemet i høydimensjonal ikke-konveks optimalisering." Fremskritt i nevrale informasjonsbehandlingssystemer 27 (2014).
om forfatteren
Uri Rosenberg er AI & ML Specialist Technical Manager for Europa, Midtøsten og Afrika. Basert fra Israel jobber Uri for å gi bedriftskunder mulighet til å designe, bygge og drive ML-arbeidsmengder i stor skala. På fritiden liker han å sykle, gå på fotturer og klage på dataforberedelse.
- SEO-drevet innhold og PR-distribusjon. Bli forsterket i dag.
- PlatoData.Network Vertical Generative Ai. Styrk deg selv. Tilgang her.
- PlatoAiStream. Web3 Intelligence. Kunnskap forsterket. Tilgang her.
- PlatoESG. Bil / elbiler, Karbon, CleanTech, Energi, Miljø, Solenergi, Avfallshåndtering. Tilgang her.
- BlockOffsets. Modernisering av eierskap for miljøkompensasjon. Tilgang her.
- kilde: https://aws.amazon.com/blogs/machine-learning/effectively-solve-distributed-training-convergence-issues-with-amazon-sagemaker-hyperband-automatic-model-tuning/
- : har
- :er
- :ikke
- $OPP
- 1
- 10
- 100
- 12
- 15%
- 20
- 200
- 2014
- 2016
- 2018
- 24
- 27
- 30
- 7
- 8
- 9
- a
- Om oss
- Logg inn
- nøyaktighet
- nøyaktig
- Oppnå
- Handling
- faktisk
- tillegg
- I tillegg
- adresse
- adresser
- avansert
- påvirke
- afrika
- AI
- AL
- algoritme
- algoritmer
- Alpha
- allerede
- også
- utrolig
- Amazon
- Amazon EC2
- Amazon SageMaker
- Amazon Web Services
- blant
- an
- analyse
- analytics
- analysere
- og
- En annen
- api
- Påfør
- hensiktsmessig
- ca
- ER
- AS
- At
- feste
- angripe
- Automatisk
- automatisk
- gjennomsnittlig
- unngå
- AWS
- Balansere
- basert
- BE
- fordi
- før du
- atferd
- bak
- BEST
- Bedre
- mellom
- Stor
- øke
- både
- bygge
- Bygning
- innebygd
- by
- beregning
- ring
- ringer
- CAN
- Kan få
- evner
- kategorier
- forårsaket
- endring
- ladet
- barn
- Velg
- velge
- klikk
- Cluster
- kode
- Kolonne
- kolonner
- Kom
- Felles
- sammenligne
- fullføre
- Beregn
- bekymringer
- samtidig
- Konferanse
- Konfigurasjon
- konfigurert
- Vurder
- konsistent
- Konsoll
- konstruere
- Containere
- inneholder
- kontinuerlig
- Konvergens
- Kostnad
- kostbar
- Kostnader
- kunne
- skape
- skikk
- Kunder
- DAI
- dato
- Dataklargjøring
- desentralisert
- dyp
- dyp læring
- definisjon
- forsinkelser
- demonstrere
- dybde
- beskrive
- beskrevet
- utforming
- utpekt
- detaljer
- gJORDE
- forskjellig
- diskutert
- distribueres
- distribuert opplæring
- distribusjon
- distribusjon
- do
- dokumentasjon
- ikke
- gjort
- ikke
- ned
- nedlasting
- Drop
- to
- varighet
- under
- E&T
- hver enkelt
- Tidligere
- Tidlig
- lett
- øst
- effekt
- effektivt
- effektivitet
- effektiv
- anvender
- bemyndige
- muliggjøre
- muliggjør
- sikrer
- Enterprise
- Miljø
- miljøer
- spesielt
- Europa
- evaluere
- Selv
- Hver
- undersøke
- eksempel
- forventet
- eksperimenter
- Forklar
- utforske
- trekke ut
- faktor
- faktorer
- Mote
- FAST
- raskere
- Trekk
- Egenskaper
- Noen få
- Endelig
- Finn
- Først
- passer
- følge
- etter
- Til
- format
- funnet
- fire
- RAMME
- fra
- fullt
- funksjon
- videre
- Dess
- mellomrom
- generative
- Generativ AI
- generatorer
- få
- få
- gir
- god
- GPU
- GPU
- gradienter
- større
- Vekst
- skje
- Ha
- å ha
- he
- hjelpe
- hans
- hit
- Hvordan
- Hvordan
- Men
- HTML
- http
- HTTPS
- Innstilling av hyperparameter
- if
- bilder
- Påvirkning
- Konsekvenser
- forbedre
- forbedret
- forbedring
- in
- inkludert
- økt
- informasjon
- Infrastruktur
- innledende
- f.eks
- i stedet
- intern
- inn
- introdusere
- introdusert
- Israel
- saker
- IT
- gjentakelser
- DET ER
- Jobb
- Jobb
- Hold
- L1
- Språk
- stor
- større
- Siste
- seinere
- lansere
- lanseringer
- lansere
- føre
- Fører
- LÆRE
- læring
- mindre
- Nivå
- bibliotekene
- i likhet med
- lokal
- Lang
- lenger
- tap
- maskin
- maskinlæring
- laget
- Hoved
- fikk til
- leder
- mange
- massive
- maksimal
- Kan..
- midler
- mekanisme
- nevnt
- metadata
- metode
- metoder
- metrisk
- Metrics
- Middle
- Midtøsten
- kunne
- minimum
- minutt
- minutter
- ML
- modell
- modeller
- mer
- mest
- flere
- multiplisert
- må
- navn
- Naturlig
- Navigasjon
- Trenger
- nødvendig
- behov
- nettverk
- nevrale nettverk
- Ny
- neste
- Nei.
- node
- noder
- bærbare
- Antall
- objekt
- Målet
- observere
- of
- off
- offisiell
- ofte
- on
- På etterspørsel
- gang
- ONE
- bare
- åpning
- betjene
- operasjonell
- optimal
- optimalisering
- Optimalisere
- optimalisere
- or
- rekkefølge
- vår
- ut
- enn
- samlet
- egen
- pandaer
- brød
- Parallel
- parameter
- parametere
- passere
- for
- ytelse
- Sted
- plato
- Platon Data Intelligence
- PlatonData
- Point
- poeng
- dårlig
- muligheter
- muligens
- Post
- praksis
- forberedelse
- Forbered
- forebygge
- Problem
- prosess
- prosessering
- prosessorer
- Progress
- foreslått
- gi
- forutsatt
- gir
- tilfeldig
- ratio
- nådd
- Lese
- grunner
- nylig
- anbefales
- redusere
- Redusert
- reduserer
- redusere
- hilsen
- regex
- relevant
- gjenta
- krever
- Krever
- forskere
- ressurs
- Ressurser
- resultere
- Resultater
- avkastning
- anmeldelse
- runder
- RAD
- Kjør
- rennende
- sagemaker
- SageMaker Automatisk modellinnstilling
- samme
- Spar
- så
- sier
- SC
- Skala
- vekter
- skalering
- SDK
- søker
- Seksjon
- se
- seed
- sett
- velge
- Servere
- tjeneste
- Tjenester
- sett
- innstilling
- innstillinger
- oppsett
- syv
- skarpe
- bør
- Vis
- vist
- Viser
- Slå
- signifikant
- betydelig
- Enkelt
- enkelt
- Størrelse
- So
- LØSE
- noen
- kilde
- kildekoden
- Rom
- spesialist
- spesifikk
- fart
- splittet
- spagaten
- Spot
- Begynn
- Start
- oppstart
- status
- Trinn
- Steps
- stoppet
- stoppe
- Stopper
- lagring
- Strategi
- slik
- LED
- SAMMENDRAG
- støtte
- Støtter
- bord
- tatt
- tar
- Teknisk
- teknikker
- tensorflow
- begrep
- vilkår
- enn
- Det
- De
- Kilden
- deres
- Dem
- deretter
- Der.
- derved
- derfor
- Disse
- de
- denne
- De
- tre
- Gjennom
- tid
- ganger
- til
- tok
- Totalt
- trafikk
- Tog
- trent
- Kurs
- overføringer
- Treet
- prøve
- To ganger
- to
- typer
- typisk
- etter
- forståelse
- usannsynlig
- unødvendig
- oppdatert
- oppdateringer
- oppdatering
- us
- bruke
- brukt
- bruker
- ved hjelp av
- bruke
- validering
- verdi
- Verdier
- visualisering
- vs
- ønsker
- var
- Vei..
- we
- web
- webtjenester
- vekt
- gikk
- når
- mens
- hvilken
- hvorfor
- Wikipedia
- vil
- med
- innenfor
- uten
- arbeidere
- virker
- verre
- ville
- Xgboost
- år
- Du
- Din
- zephyrnet