I dag er vi glade for å kunngjøre forhåndsvisningen av Amazon SageMaker Profiler, en evne til Amazon SageMaker som gir en detaljert oversikt over AWS-beregningsressursene som ble levert under opplæring av dyplæringsmodeller på SageMaker. Med SageMaker Profiler kan du spore alle aktiviteter på CPU-er og GPU-er, for eksempel CPU- og GPU-bruk, kjernekjøringer på GPU-er, kjernelanseringer på CPU-er, synkroniseringsoperasjoner, minneoperasjoner på tvers av GPU-er, forsinkelser mellom kjernelanseringer og tilsvarende kjøringer, og dataoverføring mellom CPUer og GPUer. I dette innlegget leder vi deg gjennom egenskapene til SageMaker Profiler.
SageMaker Profiler tilbyr Python-moduler for å kommentere PyTorch- eller TensorFlow-treningsskript og aktivere SageMaker Profiler. Den tilbyr også et brukergrensesnitt (UI) som visualiserer profil, et statistisk sammendrag av profilerte hendelser, og tidslinjen for en treningsjobb for å spore og forstå tidsforholdet til hendelsene mellom GPUer og CPUer.
Behovet for profilering av opplæringsjobber
Med fremveksten av dyp læring (DL), har maskinlæring (ML) blitt data- og dataintensiv, og krever vanligvis multi-node, multi-GPU-klynger. Ettersom avanserte modeller vokser i størrelse i størrelsesorden billioner av parametere, øker deres beregningsmessige kompleksitet og kostnad også raskt. ML-utøvere må takle vanlige utfordringer med effektiv ressursutnyttelse når de trener så store modeller. Dette er spesielt tydelig i store språkmodeller (LLM), som vanligvis har milliarder av parametere og derfor krever store multi-node GPU-klynger for å trene dem effektivt.
Når vi trener disse modellene på store dataklynger, kan vi møte utfordringer med optimalisering av dataressurser som I/O-flaskehalser, kjernelanseringsforsinkelser, minnegrenser og lav ressursutnyttelse. Hvis konfigurasjonen av treningsjobben ikke er optimalisert, kan disse utfordringene resultere i ineffektiv maskinvareutnyttelse og lengre treningstider eller ufullstendige treningskjøringer, noe som øker de totale kostnadene og tidslinjene for prosjektet.
Forutsetninger
Følgende er forutsetningene for å begynne å bruke SageMaker Profiler:
- Et SageMaker-domene i AWS-kontoen din – For instruksjoner om å sette opp et domene, se Ombord på Amazon SageMaker Domain ved hjelp av hurtigoppsett. Du må også legge til domenebrukerprofiler for individuelle brukere for å få tilgang til SageMaker Profiler UI-applikasjonen. For mer informasjon, se Legg til og fjern SageMaker Domain-brukerprofiler.
- Tillatelser – Følgende liste er minimumssettet med tillatelser som bør tildeles utførelsesrollen for bruk av SageMaker Profiler UI-applikasjonen:
sagemaker:CreateApp
sagemaker:DeleteApp
sagemaker:DescribeTrainingJob
sagemaker:SearchTrainingJobs
s3:GetObject
s3:ListBucket
Forbered og kjør en treningsjobb med SageMaker Profiler
For å begynne å fange opp kjernekjøringer på GPUer mens treningsjobben kjører, endre treningsskriptet ditt ved å bruke SageMaker Profiler Python-modulene. Importer biblioteket og legg til start_profiling()
og stop_profiling()
metoder for å definere begynnelsen og slutten av profilering. Du kan også bruke valgfrie egendefinerte merknader for å legge til markører i opplæringsskriptet for å visualisere maskinvareaktiviteter under bestemte operasjoner i hvert trinn.
Det er to tilnærminger du kan bruke for å profilere treningsskriptene dine med SageMaker Profiler. Den første tilnærmingen er basert på profilering av fulle funksjoner; den andre tilnærmingen er basert på profilering av spesifikke kodelinjer i funksjoner.
For å profilere etter funksjoner, bruk kontekstbehandlingen smppy.annotate
for å kommentere fullstendige funksjoner. Følgende eksempelskript viser hvordan du implementerer kontekstbehandlingen for å omslutte treningsløkken og alle funksjoner i hver iterasjon:
Du kan også bruke smppy.annotation_begin()
og smppy.annotation_end()
for å kommentere spesifikke kodelinjer i funksjoner. For mer informasjon, se dokumentasjon.
Konfigurer SageMaker treningsjobbstarter
Etter at du er ferdig med å kommentere og konfigurere profileringsinitieringsmodulene, lagrer du opplæringsskriptet og forbereder SageMaker-rammeberegningen for opplæring med SageMaker Python SDK.
- Sett opp en
profiler_config
objekt ved hjelp avProfilerConfig
ogProfiler
moduler som følger: - Lag en SageMaker-estimator med
profiler_config
objekt opprettet i forrige trinn. Følgende kode viser et eksempel på å lage en PyTorch-estimator:
Hvis du vil lage en TensorFlow-estimator, importer sagemaker.tensorflow.TensorFlow
i stedet, og spesifiser en av TensorFlow-versjonene som støttes av SageMaker Profiler. For mer informasjon om støttede rammeverk og forekomsttyper, se Støttede rammer.
- Start treningsjobben ved å kjøre tilpasningsmetoden:
Start SageMaker Profiler UI
Når treningsjobben er fullført, kan du starte SageMaker Profiler UI for å visualisere og utforske profilen til treningsjobben. Du kan få tilgang til SageMaker Profiler UI-applikasjonen via SageMaker Profiler-landingssiden på SageMaker-konsollen eller gjennom SageMaker-domenet.
For å starte SageMaker Profiler UI-applikasjonen på SageMaker-konsollen, fullfør følgende trinn:
- Velg på SageMaker-konsollen Profiler i navigasjonsruten.
- Under KOM I GANG, velg domenet der du vil starte SageMaker Profiler UI-applikasjonen.
Hvis brukerprofilen din kun tilhører ett domene, vil du ikke se muligheten for å velge domene.
- Velg brukerprofilen du vil starte SageMaker Profiler UI-applikasjonen for.
Hvis det ikke er noen brukerprofil i domenet, velg Opprett brukerprofil. For mer informasjon om hvordan du oppretter en ny brukerprofil, se Legg til og fjern brukerprofiler.
- Velg Åpne Profiler.
Du kan også start SageMaker Profiler UI fra siden med domenedetaljer.
Få innsikt fra SageMaker Profiler
Når du åpner SageMaker Profiler UI, vil Velg og last inn en profil siden åpnes, som vist i følgende skjermbilde.
Du kan se en liste over alle treningsjobbene som har blitt sendt til SageMaker Profiler og søke etter en bestemt opplæringsjobb ved å bruke navnet, opprettelsestidspunktet og kjørestatusen (pågår, fullført, mislyktes, stoppet eller stoppet). For å laste en profil, velg treningsjobben du vil se og velg Laste. Jobbnavnet skal vises i Lastet profil seksjon øverst.
Velg jobbnavnet for å generere dashbordet og tidslinjen. Merk at når du velger jobben, åpner brukergrensesnittet automatisk dashbordet. Du kan laste inn og visualisere én profil om gangen. For å laste en annen profil, må du først laste ut den tidligere lastede profilen. For å laste ned en profil, velg søppelkasseikonet i Lastet profil seksjon.
For dette innlegget ser vi profilen til en ALBEF treningsjobb på to ml.p4d.24xlarge forekomster.
Etter at du er ferdig med å laste og velge treningsjobben, åpner brukergrensesnittet Dashbord side, som vist i følgende skjermbilde.
Du kan se plottene for nøkkelberegninger, nemlig GPU-aktiv tid, GPU-bruk over tid, CPU-aktiv tid og CPU-bruk over tid. Kakediagrammet for GPU-aktiv tid viser prosentandelen av GPU-aktiv tid vs. GPU-tomtid, noe som gjør det mulig for oss å sjekke om GPU-ene er mer aktive enn inaktive gjennom hele treningsjobben. Tidslinjegrafen for GPU-bruk over tid viser gjennomsnittlig GPU-bruksrate over tid per node, og samler alle nodene i et enkelt diagram. Du kan sjekke om GPU-ene har en ubalansert arbeidsbelastning, underutnyttelsesproblemer, flaskehalser eller inaktive problemer i løpet av visse tidsintervaller. For mer informasjon om tolkning av disse beregningene, se dokumentasjon.
Dashbordet gir deg flere plott, inkludert tid brukt av alle GPU-kjerner, tid brukt av de 15 beste GPU-kjernene, lanseringstall for alle GPU-kjerner og lanseringstall for de 15 beste GPU-kjernene, som vist i følgende skjermbilde.
Til slutt lar dashbordet deg visualisere ytterligere beregninger, for eksempel trinntidsfordelingen, som er et histogram som viser fordelingen av trinnvarighetene på GPUer, og kakediagrammet for kjernepresisjonsfordeling, som viser prosentandelen av tiden brukt på å kjøre kjerner i forskjellige datatyper som FP32, FP16, INT32 og INT8.
Du kan også få et kakediagram på GPU-aktivitetsfordelingen som viser prosentandelen av tiden brukt på GPU-aktiviteter, for eksempel kjørende kjerner, minne (memcpy
og memset
), og synkronisering (sync
). Du kan visualisere prosentandelen av tiden brukt på GPU-minneoperasjoner fra sektordiagrammet for distribusjon av GPU-minneoperasjoner.
Du kan også lage dine egne histogrammer basert på en egendefinert beregning som du har kommentert manuelt som beskrevet tidligere i dette innlegget. Når du legger til en egendefinert merknad i et nytt histogram, velger du eller skriver inn navnet på merknaden du la til i opplæringsskriptet.
Tidslinjegrensesnitt
SageMaker Profiler UI inkluderer også et tidslinjegrensesnitt, som gir deg en detaljert oversikt over dataressursene på operasjonsnivå og kjerner som er planlagt på CPU-ene og kjøres på GPU-ene. Tidslinjen er organisert i en trestruktur som gir deg informasjon fra vertsnivå til enhetsnivå, som vist i følgende skjermbilde.
For hver CPU kan du spore CPU-ytelsestellerne, som f.eks clk_unhalted_ref.tsc
og itlb_misses.miss_causes_a_walk
. For hver GPU på 2x p4d.24xlarge-forekomsten kan du se en vertstidslinje og en enhetstidslinje. Kjernelanseringer er på vertens tidslinje og kjernekjøringer er på enhetens tidslinje.
Du kan også zoome inn på de enkelte trinnene. I det følgende skjermbildet har vi zoomet inn til step_41. Tidslinjestripen valgt i følgende skjermbilde er AllReduce
drift, et viktig kommunikasjons- og synkroniseringstrinn i distribuert trening, kjøres på GPU-0. I skjermbildet, merk at kjernelanseringen i GPU-0-verten kobles til kjernekjøringen i GPU-0-enhetsstrøm 1, indikert med pilen i cyan.
Tilgjengelighet og hensyn
SageMaker Profiler er tilgjengelig i PyTorch (versjon 2.0.0 og 1.13.1) og TensorFlow (versjon 2.12.0 og 2.11.1). Tabellen nedenfor inneholder koblingene til de støttede AWS Deep Learning-beholdere for SageMaker.
Rammeverk | Versjon | AWS DLC-bilde-URI |
PyTorch | 2.0.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.0.0-gpu-py310-cu118-ubuntu20.04-sagemaker |
PyTorch | 1.13.1 | 763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:1.13.1-gpu-py39-cu117-ubuntu20.04-sagemaker |
tensorflow | 2.12.0 | 763104351884.dkr.ecr.<region>.amazonaws.com/tensorflow-training:2.12.0-gpu-py310-cu118-ubuntu20.04-sagemaker |
tensorflow | 2.11.1 | 763104351884.dkr.ecr.<region>.amazonaws.com/tensorflow-training:2.11.1-gpu-py39-cu112-ubuntu20.04-sagemaker |
SageMaker Profiler er for øyeblikket tilgjengelig i følgende regioner: US East (Ohio, N. Virginia), US West (Oregon) og Europa (Frankfurt, Irland).
SageMaker Profiler er tilgjengelig i treningsforekomsttypene ml.p4d.24xlarge, ml.p3dn.24xlarge og ml.g4dn.12xlarge.
For en fullstendig liste over støttede rammeverk og versjoner, se dokumentasjon.
SageMaker Profiler pådrar seg kostnader etter at SageMaker Free Tier eller den gratis prøveperioden for funksjonen avsluttes. For mer informasjon, se Amazon SageMaker-priser.
Ytelse til SageMaker Profiler
Vi sammenlignet overheaden til SageMaker Profiler med forskjellige åpen kildekode-profiler. Grunnlinjen som ble brukt for sammenligningen ble hentet fra å kjøre treningsjobben uten en profiler.
Vårt nøkkelfunn avslørte at SageMaker Profiler generelt resulterte i en kortere fakturerbar treningsvarighet fordi den hadde mindre overheadtid på ende-til-ende-treningsløpene. Det genererte også mindre profileringsdata (opptil 10 ganger mindre) sammenlignet med åpen kildekode-alternativer. De mindre profileringsartefaktene generert av SageMaker Profiler krever mindre lagring, og sparer dermed også kostnader.
konklusjonen
SageMaker Profiler lar deg få detaljert innsikt i bruken av dataressurser når du trener dyplæringsmodellene dine. Dette kan gjøre deg i stand til å løse ytelseshotspots og flaskehalser for å sikre effektiv ressursutnyttelse som til slutt vil redusere treningskostnadene og redusere den totale treningsvarigheten.
For å komme i gang med SageMaker Profiler, se dokumentasjon.
Om forfatterne
Roy Allela er senior AI/ML spesialistløsningsarkitekt ved AWS med base i München, Tyskland. Roy hjelper AWS-kunder – fra små startups til store bedrifter – med å trene og distribuere store språkmodeller effektivt på AWS. Roy er lidenskapelig opptatt av problemer med beregningsoptimalisering og forbedring av ytelsen til AI-arbeidsbelastninger.
Sushant Moon er en dataforsker ved AWS, India, og spesialiserer seg på å veilede kunder gjennom deres AI/ML-arbeid. Med en mangfoldig bakgrunn som omfatter detaljhandel, finans og forsikringsdomener, leverer han innovative og skreddersydde løsninger. Utover sitt profesjonelle liv, finner Sushant foryngelse i svømming og søker inspirasjon fra sine reiser til forskjellige steder.
Diksha Sharma er en AI/ML spesialistløsningsarkitekt i den verdensomspennende spesialistorganisasjonen. Hun jobber med kunder i offentlig sektor for å hjelpe dem med å bygge effektive, sikre og skalerbare maskinlæringsapplikasjoner, inkludert generative AI-løsninger på AWS. På fritiden elsker Diksha å lese, male og tilbringe tid med familien.
- 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.
- PlatoHelse. Bioteknologisk og klinisk etterretning. Tilgang her.
- ChartPrime. Hev handelsspillet ditt med ChartPrime. Tilgang her.
- BlockOffsets. Modernisering av eierskap for miljøkompensasjon. Tilgang her.
- kilde: https://aws.amazon.com/blogs/machine-learning/announcing-the-preview-of-amazon-sagemaker-profiler-track-and-visualize-detailed-hardware-performance-data-for-your-model-training-workloads/
- : har
- :er
- :ikke
- $OPP
- 1
- 10
- 100
- 11
- 12
- 125
- 13
- 15%
- 17
- 20
- 7
- 9
- a
- Om oss
- adgang
- tvers
- aktive
- aktiv
- Aktiviteter
- aktivitet
- legge til
- la til
- legge
- Ytterligere
- Etter
- mot
- aggregerer
- AI
- AI / ML
- Alle
- også
- alternativer
- Amazon
- Amazon SageMaker
- Amazon Web Services
- an
- og
- Kunngjøre
- Kunngjøring
- En annen
- noen
- vises
- Søknad
- søknader
- tilnærming
- tilnærminger
- ER
- AS
- tildelt
- At
- automatisk
- tilgjengelig
- gjennomsnittlig
- AWS
- bakgrunn
- basert
- Baseline
- BE
- fordi
- bli
- vært
- Begynnelsen
- tilhører
- mellom
- Beyond
- milliarder
- BIN
- by
- CAN
- evner
- evne
- fange
- viss
- utfordringer
- avgifter
- Figur
- sjekk
- Velg
- kode
- Felles
- Kommunikasjon
- sammenlignet
- sammenligning
- fullføre
- Terminado
- kompleksitet
- Beregn
- Konfigurasjon
- forbinder
- Konsoll
- Containere
- kontekst
- Tilsvarende
- Kostnad
- Kostnader
- tellere
- skape
- opprettet
- Opprette
- skaperverket
- I dag
- skikk
- Kunder
- cyan
- dashbord
- dato
- dataforsker
- dyp
- dyp læring
- definere
- leverer
- utplassere
- beskrevet
- detaljert
- detaljer
- enhet
- forskjellig
- distribueres
- distribuert opplæring
- distribusjon
- diverse
- domene
- domener
- gjort
- ned
- stasjonen
- varighet
- under
- hver enkelt
- Tidligere
- øst
- effektiv
- effektivt
- muliggjøre
- muliggjør
- slutt
- ende til ende
- bestrebelser
- slutter
- sikre
- Enter
- Hele
- entry
- epoke
- epoker
- avgjørende
- Europa
- hendelser
- tydelig
- eksempel
- gjennomføring
- utforske
- Mislyktes
- familie
- Trekk
- finansiere
- finne
- funn
- ferdig
- Først
- passer
- etter
- følger
- Til
- Forward
- Rammeverk
- rammer
- Gratis
- gratis prøveperiode
- fra
- fullt
- funksjoner
- generelt
- generere
- generert
- generative
- Generativ AI
- Tyskland
- få
- Giving
- GPU
- GPU
- graf
- Grow
- HAD
- maskinvare
- Ha
- he
- hjelpe
- hjelper
- her
- hans
- vert
- Hvordan
- Hvordan
- HTML
- http
- HTTPS
- i
- ICON
- Idle
- if
- bilde
- iverksette
- importere
- bedre
- in
- inkluderer
- Inkludert
- Øke
- india
- indikert
- individuelt
- ineffektiv
- informasjon
- innovative
- innganger
- innsikt
- inspirasjon
- f.eks
- i stedet
- instruksjoner
- forsikring
- Interface
- inn
- Irland
- saker
- IT
- køyring
- DET ER
- Jobb
- Jobb
- jpg
- nøkkel
- etiketter
- landing
- Språk
- stor
- lansere
- lanseringer
- læring
- mindre
- Nivå
- Bibliotek
- Life
- grenser
- linjer
- lenker
- Liste
- laste
- lasting
- lenger
- tap
- elsker
- Lav
- maskin
- maskinlæring
- leder
- manuelt
- Minne
- metode
- metoder
- metrisk
- Metrics
- minimum
- ML
- modell
- modeller
- modifisere
- Moduler
- mer
- må
- navn
- nemlig
- Navigasjon
- Trenger
- Ny
- Nei.
- node
- noder
- objekt
- få
- innhentet
- of
- Tilbud
- Ohio
- on
- ONE
- bare
- åpen
- åpen kildekode
- åpner
- drift
- Drift
- optimalisering
- optimalisert
- Alternativ
- or
- rekkefølge
- Oregon
- organisasjon
- Organisert
- enn
- samlet
- egen
- side
- brød
- parametere
- Spesielt
- spesielt
- lidenskapelig
- for
- prosent
- ytelse
- perioden
- tillatelser
- plato
- Platon Data Intelligence
- PlatonData
- fornøyd
- Point
- Post
- Precision
- Forbered
- forutsetninger
- Forhåndsvisning
- forrige
- tidligere
- problemer
- profesjonell
- Profil
- Profiler
- profilering
- Progress
- prosjekt
- gir
- offentlig
- Python
- pytorch
- Rask
- raskt
- Sats
- Lese
- redusere
- regioner
- foryngelse
- forholdet
- fjerne
- krever
- ressurs
- Ressurser
- resultere
- detaljhandel
- Avslørt
- Rise
- Rolle
- roy
- Kjør
- rennende
- går
- sagemaker
- Spar
- besparende
- skalerbar
- planlagt
- Forsker
- skript
- SDK
- Søk
- Sekund
- Seksjon
- sektor
- sikre
- se
- søker
- valgt
- velge
- senior
- Tjenester
- sett
- innstilling
- hun
- bør
- vist
- Viser
- enkelt
- Størrelse
- liten
- mindre
- Solutions
- kilde
- Spenning
- spesialist
- spesialisert
- spesifikk
- bruke
- brukt
- Begynn
- startet
- startups
- state-of-the-art
- statistisk
- status
- Trinn
- Steps
- stoppet
- stoppe
- lagring
- stream
- struktur
- innsendt
- slik
- SAMMENDRAG
- Støttes
- synkronisering
- bord
- skreddersydd
- Ta
- tensorflow
- enn
- Det
- De
- deres
- Dem
- Der.
- derved
- derfor
- Disse
- denne
- Gjennom
- hele
- nivået
- tid
- tidslinje
- tidslinjer
- ganger
- til
- topp
- spor
- Sporing
- Tog
- Kurs
- overføre
- reiser
- Treet
- prøve
- billioner
- to
- typer
- typisk
- ui
- Til syvende og sist
- forståelse
- us
- bruke
- brukt
- Bruker
- Brukergrensesnitt
- Brukere
- ved hjelp av
- ulike
- versjon
- versjoner
- Se
- Virginia
- vs
- ønsker
- var
- we
- web
- webtjenester
- Vest
- når
- hvilken
- mens
- vil
- med
- uten
- virker
- verdensomspennende
- ville
- vikle
- Du
- Din
- zephyrnet
- zoom