Idag är vi glada att kunna meddela förhandsvisningen av Amazon SageMaker Profiler, en förmåga av Amazon SageMaker som ger en detaljerad bild av AWS-beräkningsresurserna som tillhandahålls under utbildning av djupinlärningsmodeller på SageMaker. Med SageMaker Profiler kan du spåra alla aktiviteter på CPU:er och GPU:er, såsom CPU- och GPU-användning, kärnkörningar på GPU:er, kärnlanseringar på CPU:er, synkroniseringsoperationer, minnesoperationer över GPU:er, latenser mellan kärnlanseringar och motsvarande körningar och dataöverföring mellan CPU:er och GPU:er. I det här inlägget går vi igenom funktionerna i SageMaker Profiler.
SageMaker Profiler tillhandahåller Python-moduler för att kommentera PyTorch- eller TensorFlow-träningsskript och aktivera SageMaker Profiler. Den erbjuder också ett användargränssnitt (UI) som visualiserar profil, en statistisk sammanfattning av profilerade händelser och tidslinjen för ett träningsjobb för att spåra och förstå tidsförhållandet för händelserna mellan GPU:er och CPU:er.
Behovet av profilerande utbildningsjobb
Med framväxten av djupinlärning (DL) har maskininlärning (ML) blivit beräknings- och dataintensiv, vilket vanligtvis kräver multi-nod, multi-GPU-kluster. När toppmoderna modeller växer i storlek i storleksordningen biljoner parametrar, ökar också deras beräkningskomplexitet och kostnad snabbt. ML-utövare måste hantera vanliga utmaningar med effektivt resursutnyttjande när de utbildar så stora modeller. Detta är särskilt uppenbart i stora språkmodeller (LLM), som vanligtvis har miljarder parametrar och därför kräver stora multi-nod GPU-kluster för att träna dem effektivt.
När vi tränar dessa modeller på stora beräkningskluster kan vi stöta på utmaningar med optimering av beräkningsresurser som I/O-flaskhalsar, kärnlanseringsfördröjningar, minnesgränser och lågt resursutnyttjande. Om träningsjobbets konfiguration inte är optimerad kan dessa utmaningar resultera i ineffektivt hårdvaruanvändning och längre utbildningstider eller ofullständiga utbildningskörningar, vilket ökar de totala kostnaderna och tidslinjerna för projektet.
Förutsättningar
Följande är förutsättningarna för att börja använda SageMaker Profiler:
- En SageMaker-domän i ditt AWS-konto – För instruktioner om hur du konfigurerar en domän, se Ombord på Amazon SageMaker Domain med snabb installation. Du måste också lägga till domänanvändarprofiler för enskilda användare för att komma åt SageMaker Profiler UI-applikationen. För mer information, se Lägg till och ta bort SageMaker Domain användarprofiler.
- behörigheter – Följande lista är den minsta uppsättningen av behörigheter som ska tilldelas exekveringsrollen för att använda SageMaker Profiler UI-applikationen:
sagemaker:CreateApp
sagemaker:DeleteApp
sagemaker:DescribeTrainingJob
sagemaker:SearchTrainingJobs
s3:GetObject
s3:ListBucket
Förbered och kör ett träningsjobb med SageMaker Profiler
För att börja fånga kärnkörningar på GPU:er medan träningsjobbet körs, ändra ditt träningsskript med SageMaker Profiler Python-modulerna. Importera biblioteket och lägg till start_profiling()
och stop_profiling()
metoder för att definiera början och slutet av profilering. Du kan också använda valfria anpassade kommentarer för att lägga till markörer i träningsskriptet för att visualisera hårdvaruaktiviteter under särskilda operationer i varje steg.
Det finns två metoder som du kan använda för att profilera dina träningsskript med SageMaker Profiler. Det första tillvägagångssättet bygger på profilering av fulla funktioner; det andra tillvägagångssättet är baserat på profilering av specifika kodlinjer i funktioner.
Använd kontexthanteraren för att profilera efter funktioner smppy.annotate
för att kommentera fullständiga funktioner. Följande exempelskript visar hur man implementerar kontexthanteraren för att omsluta träningsslingan och alla funktioner i varje iteration:
Du kan också använda smppy.annotation_begin()
och smppy.annotation_end()
för att kommentera specifika kodrader i funktioner. För mer information, se dokumentation.
Konfigurera SageMaker utbildningsjobbstartare
När du är klar med att kommentera och konfigurera profileringsinitieringsmodulerna sparar du träningsskriptet och förbereder SageMaker-ramverkskalkylatorn för träning med SageMaker Python SDK.
- Ställ in en
profiler_config
objekt med hjälp avProfilerConfig
ochProfiler
moduler enligt följande: - Skapa en SageMaker estimator med
profiler_config
objekt som skapades i föregående steg. Följande kod visar ett exempel på att skapa en PyTorch-skattare:
Om du vill skapa en TensorFlow-uppskattare, importera sagemaker.tensorflow.TensorFlow
istället och ange en av TensorFlow-versionerna som stöds av SageMaker Profiler. För mer information om ramverk och instanstyper som stöds, se Ramverk som stöds.
- Starta träningsjobbet genom att köra tillpassningsmetoden:
Starta SageMaker Profiler UI
När träningsjobbet är klart kan du starta SageMaker Profiler UI för att visualisera och utforska profilen för utbildningsjobbet. Du kan komma åt SageMaker Profiler UI-applikationen via SageMaker Profilers målsida på SageMaker-konsolen eller via SageMaker-domänen.
Utför följande steg för att starta SageMaker Profiler UI-applikationen på SageMaker-konsolen:
- Välj på SageMaker-konsolen Profiler i navigeringsfönstret.
- Enligt KOM IGÅNG, välj den domän där du vill starta SageMaker Profiler UI-applikationen.
Om din användarprofil bara tillhör en domän, kommer du inte att se alternativet för att välja en domän.
- Välj den användarprofil för vilken du vill starta applikationen SageMaker Profiler UI.
Om det inte finns någon användarprofil i domänen, välj Skapa användarprofil. För mer information om att skapa en ny användarprofil, se Lägg till och ta bort användarprofiler.
- Välja Öppna Profiler.
Du kan också starta SageMaker Profiler UI från sidan med domändetaljer.
Få insikter från SageMaker Profiler
När du öppnar SageMaker Profiler UI, Välj och ladda en profil sidan öppnas, som visas i följande skärmdump.
Du kan se en lista över alla utbildningsjobb som har skickats till SageMaker Profiler och söka efter ett visst utbildningsjobb efter dess namn, skapandetid och körstatus (pågår, slutfört, misslyckats, stoppas eller stoppas). För att ladda en profil, välj det utbildningsjobb du vill se och välj Ladda. Jobbets namn ska visas i Laddad profil avsnittet överst.
Välj jobbnamnet för att generera instrumentpanelen och tidslinjen. Observera att när du väljer jobbet öppnar användargränssnittet automatiskt instrumentpanelen. Du kan ladda och visualisera en profil åt gången. För att ladda en annan profil måste du först ta bort den tidigare laddade profilen. För att ta bort en profil, välj papperskorgen i ikonen Laddad profil sektion.
För det här inlägget ser vi profilen för en ALBEF träningsjobb på två ml.p4d.24xlarge instanser.
När du har laddat och valt träningsjobbet, öppnar användargränssnittet Dashboard sida, som visas i följande skärmdump.
Du kan se diagrammen för nyckelmått, nämligen GPU:s aktiva tid, GPU-användning över tid, CPU-aktiv tid och CPU-användning över tid. Cirkeldiagrammet för GPU:s aktiva tid visar procentandelen GPU:s aktiva tid kontra GPU:s vilotid, vilket gör att vi kan kontrollera om GPU:erna är mer aktiva än inaktiva under hela träningsjobbet. Tidslinjediagrammet för GPU-användning över tid visar den genomsnittliga GPU-användningshastigheten över tid per nod, och samlar alla noder i ett enda diagram. Du kan kontrollera om GPU:erna har en obalanserad arbetsbelastning, underutnyttjandeproblem, flaskhalsar eller inaktiva problem under vissa tidsintervall. För mer information om hur du tolkar dessa mätvärden, se dokumentation.
Instrumentpanelen ger dig ytterligare plotter, inklusive tid som spenderas av alla GPU-kärnor, tid spenderad av de 15 bästa GPU-kärnorna, starträkningar för alla GPU-kärnor och starträkningar för de 15 bästa GPU-kärnorna, som visas i följande skärmdump.
Slutligen låter instrumentpanelen dig visualisera ytterligare mätvärden, såsom stegtidsfördelningen, som är ett histogram som visar fördelningen av steglängderna på GPU:er, och cirkeldiagrammet för kärnprecisionsfördelning, som visar procentandelen av tiden som spenderas på att köra kärnor i olika datatyper som FP32, FP16, INT32 och INT8.
Du kan också erhålla ett cirkeldiagram på GPU-aktivitetsfördelningen som visar procentandelen av tiden som spenderas på GPU-aktiviteter, som att köra kärnor, minne (memcpy
och memset
), och synkronisering (sync
). Du kan visualisera hur stor andel av tiden som spenderas på GPU-minnesoperationer från diagrammet för distribution av GPU-minnesoperationer.
Du kan också skapa dina egna histogram baserat på ett anpassat mått som du kommenterade manuellt enligt beskrivningen tidigare i det här inlägget. När du lägger till en anpassad anteckning till ett nytt histogram, välj eller skriv in namnet på anteckningen du lade till i träningsskriptet.
Tidslinjegränssnitt
SageMaker Profiler UI inkluderar också ett tidslinjegränssnitt, som ger dig en detaljerad vy av beräkningsresurserna på nivån för operationer och kärnor som är schemalagda på CPU:erna och körs på GPU:erna. Tidslinjen är organiserad i en trädstruktur som ger dig information från värdnivå till enhetsnivå, som visas i följande skärmdump.
För varje CPU kan du spåra CPU-prestandaräknare, som t.ex clk_unhalted_ref.tsc
och itlb_misses.miss_causes_a_walk
. För varje GPU på 2x p4d.24xlarge-instansen kan du se en värdtidslinje och en enhetstidslinje. Kärnlanseringar finns på värdens tidslinje och kärnkörningar finns på enhetens tidslinje.
Du kan även zooma in på de enskilda stegen. I följande skärmdump har vi zoomat in till step_41. Tidslinjeremsan som väljs i följande skärmdump är AllReduce
drift, ett viktigt kommunikations- och synkroniseringssteg i distribuerad utbildning, körs på GPU-0. I skärmdumpen, notera att kärnlanseringen i GPU-0-värden ansluter till kärnkörningen i GPU-0-enhetsström 1, indikerad med pilen i cyan.
Tillgänglighet och överväganden
SageMaker Profiler finns i PyTorch (version 2.0.0 och 1.13.1) och TensorFlow (version 2.12.0 och 2.11.1). Följande tabell innehåller länkar till de stödda AWS Deep Learning-behållare för SageMaker.
Ramverk | version | AWS DLC-bild-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 är för närvarande tillgänglig i följande regioner: USA East (Ohio, N. Virginia), USA West (Oregon) och Europa (Frankfurt, Irland).
SageMaker Profiler finns i träningsinstanstyperna ml.p4d.24xlarge, ml.p3dn.24xlarge och ml.g4dn.12xlarge.
För den fullständiga listan över ramverk och versioner som stöds, se dokumentation.
SageMaker Profiler ådrar sig avgifter efter att SageMaker Free Tier eller den kostnadsfria provperioden för funktionen slutar. För mer information, se Amazon SageMaker Prissättning.
Prestanda för SageMaker Profiler
Vi jämförde omkostnaderna för SageMaker Profiler med olika profiler med öppen källkod. Baslinjen som användes för jämförelsen erhölls från att köra träningsjobbet utan en profilerare.
Vårt viktigaste fynd avslöjade att SageMaker Profiler i allmänhet resulterade i en kortare fakturerbar träningslängd eftersom den hade mindre omkostnadstid på träningskörningarna från början till slut. Det genererade också mindre profileringsdata (upp till 10 gånger mindre) jämfört med alternativ med öppen källkod. De mindre profileringsartefakterna som genereras av SageMaker Profiler kräver mindre lagring och sparar därmed också kostnader.
Slutsats
SageMaker Profiler gör att du kan få detaljerade insikter i användningen av beräkningsresurser när du tränar dina djupinlärningsmodeller. Detta kan göra det möjligt för dig att lösa prestationshotspots och flaskhalsar för att säkerställa ett effektivt resursutnyttjande som i slutändan skulle minska utbildningskostnaderna och minska den totala utbildningstiden.
För att komma igång med SageMaker Profiler, se dokumentation.
Om författarna
Roy Allela är Senior AI/ML Specialist Solutions Architect på AWS baserad i München, Tyskland. Roy hjälper AWS-kunder – från små startups till stora företag – att träna och distribuera stora språkmodeller effektivt på AWS. Roy brinner för problem med beräkningsoptimering och att förbättra prestanda för AI-arbetsbelastningar.
Sushant Moon är en dataforskare vid AWS, Indien, specialiserad på att vägleda kunder genom deras AI/ML-strävanden. Med en mångsidig bakgrund som spänner över detaljhandels-, finans- och försäkringsdomäner, levererar han innovativa och skräddarsydda lösningar. Utöver sitt yrkesliv finner Sushant föryngring i simning och söker inspiration från sina resor till olika platser.
Diksha Sharma är en AI/ML Specialist Solutions Architect i Worldwide Specialist Organization. Hon arbetar med kunder i den offentliga sektorn för att hjälpa dem att skapa effektiva, säkra och skalbara maskininlärningsapplikationer inklusive generativa AI-lösningar på AWS. På fritiden älskar Diksha att läsa, måla och umgås med sin familj.
- SEO-drivet innehåll och PR-distribution. Bli förstärkt idag.
- PlatoData.Network Vertical Generative Ai. Styrka dig själv. Tillgång här.
- PlatoAiStream. Web3 Intelligence. Kunskap förstärkt. Tillgång här.
- Platoesg. Fordon / elbilar, Kol, CleanTech, Energi, Miljö, Sol, Avfallshantering. Tillgång här.
- PlatoHealth. Biotech och kliniska prövningar Intelligence. Tillgång här.
- ChartPrime. Höj ditt handelsspel med ChartPrime. Tillgång här.
- BlockOffsets. Modernisera miljökompensation ägande. Tillgång här.
- Källa: 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
- :är
- :inte
- $UPP
- 1
- 10
- 100
- 11
- 12
- 125
- 13
- 15%
- 17
- 20
- 7
- 9
- a
- Om Oss
- tillgång
- tvärs
- aktivering
- aktiv
- aktiviteter
- aktivitet
- lägga till
- lagt till
- tillsats
- Annat
- Efter
- mot
- aggregerande
- AI
- AI / ML
- Alla
- också
- alternativ
- amason
- Amazon SageMaker
- Amazon Web Services
- an
- och
- Meddela
- Vi presenterar
- Annan
- vilken som helst
- visas
- Ansökan
- tillämpningar
- tillvägagångssätt
- tillvägagångssätt
- ÄR
- AS
- delad
- At
- automatiskt
- tillgänglig
- genomsnitt
- AWS
- bakgrund
- baserat
- Baslinje
- BE
- därför att
- blir
- varit
- Börjar
- tillhör
- mellan
- Bortom
- miljarder
- SOPTUNNA
- by
- KAN
- kapacitet
- kapacitet
- Fångande
- vissa
- utmaningar
- avgifter
- Diagram
- ta
- Välja
- koda
- Gemensam
- Kommunikation
- jämfört
- jämförelse
- fullborda
- Avslutade
- Komplexiteten
- Compute
- konfiguration
- ansluter
- Konsol
- Behållare
- sammanhang
- Motsvarande
- Pris
- Kostar
- räknare
- skapa
- skapas
- Skapa
- skapande
- För närvarande
- beställnings
- Kunder
- cyan
- instrumentbräda
- datum
- datavetare
- djup
- djupt lärande
- definiera
- levererar
- distribuera
- beskriven
- detaljerad
- detaljer
- anordning
- olika
- distribueras
- distribuerad utbildning
- fördelning
- flera
- domän
- domäner
- gjort
- ner
- driv
- varaktighet
- under
- varje
- Tidigare
- öster
- effektiv
- effektivt
- möjliggöra
- möjliggör
- änden
- början till slut
- strävanden
- slutar
- säkerställa
- ange
- Hela
- inträde
- epok
- epoker
- väsentlig
- Europa
- händelser
- uppenbart
- exempel
- utförande
- utforska
- Misslyckades
- familj
- Leverans
- finansiering
- finna
- fynd
- slut
- Förnamn
- passa
- efter
- följer
- För
- Framåt
- Ramverk
- ramar
- Fri
- fri rättegång
- från
- full
- funktioner
- allmänhet
- generera
- genereras
- generativ
- Generativ AI
- Tyskland
- skaffa sig
- Ge
- GPU
- GPUs
- diagram
- Väx
- hade
- hårdvara
- Har
- he
- hjälpa
- hjälper
- här
- hans
- värd
- Hur ser din drömresa ut
- How To
- html
- http
- HTTPS
- i
- IKON
- Idle
- if
- bild
- genomföra
- importera
- förbättra
- in
- innefattar
- Inklusive
- Öka
- indien
- indikerade
- individuellt
- ineffektiv
- informationen
- innovativa
- ingångar
- insikter
- Inspiration
- exempel
- istället
- instruktioner
- försäkring
- Gränssnitt
- in
- irland
- problem
- IT
- iteration
- DESS
- Jobb
- Lediga jobb
- jpg
- Nyckel
- Etiketter
- landning
- språk
- Large
- lansera
- lanserar
- inlärning
- mindre
- Nivå
- Bibliotek
- livet
- gränser
- rader
- länkar
- Lista
- läsa in
- läser in
- längre
- förlust
- älskar
- Låg
- Maskinen
- maskininlärning
- chef
- manuellt
- Minne
- metod
- metoder
- metriska
- Metrics
- minsta
- ML
- modell
- modeller
- modifiera
- Moduler
- mer
- måste
- namn
- nämligen
- Navigering
- Behöver
- Nya
- Nej
- nod
- noder
- objektet
- få
- erhållna
- of
- Erbjudanden
- Ohio
- on
- ONE
- endast
- öppet
- öppen källkod
- öppnas
- drift
- Verksamhet
- optimering
- optimerad
- Alternativet
- or
- beställa
- Oregon
- organisation
- Organiserad
- över
- övergripande
- egen
- sida
- panelen
- parametrar
- särskilt
- särskilt
- brinner
- för
- procentuell
- prestanda
- perioden
- behörigheter
- plato
- Platon Data Intelligence
- PlatonData
- nöjd
- Punkt
- Inlägg
- Precision
- Förbered
- förutsättningar
- Förhandsvisning
- föregående
- tidigare
- problem
- professionell
- Profil
- Profiler
- profilering
- Framsteg
- projektet
- ger
- allmän
- Python
- pytorch
- Snabbt
- snabbt
- Betygsätta
- Läsa
- minska
- regioner
- föryngring
- relation
- ta bort
- kräver
- resurs
- Resurser
- resultera
- detaljhandeln
- avslöjade
- Rise
- Roll
- roy
- Körning
- rinnande
- kör
- sagemaker
- Save
- sparande
- skalbar
- planerad
- Forskare
- skript
- sDK
- Sök
- Andra
- §
- sektor
- säkra
- se
- Söker
- vald
- väljer
- senior
- Tjänster
- in
- inställning
- hon
- skall
- visas
- Visar
- enda
- Storlek
- Small
- mindre
- Lösningar
- Källa
- spänning
- specialist
- specialiserat
- specifik
- spendera
- spent
- starta
- igång
- Startups
- state-of-the-art
- statistisk
- status
- Steg
- Steg
- slutade
- stoppa
- förvaring
- ström
- struktur
- lämnats
- sådana
- SAMMANFATTNING
- Som stöds
- synkronisering
- bord
- skräddarsydd
- Ta
- tensorflow
- än
- den där
- Smakämnen
- deras
- Dem
- Där.
- vari
- därför
- Dessa
- detta
- Genom
- hela
- djur
- tid
- tidslinje
- tidslinjer
- gånger
- till
- topp
- spår
- Spårning
- Tåg
- Utbildning
- överföring
- reser
- träd
- rättegång
- biljoner
- två
- typer
- typiskt
- ui
- Ytterst
- förståelse
- us
- användning
- Begagnade
- Användare
- Användargränssnitt
- användare
- med hjälp av
- olika
- version
- versioner
- utsikt
- Virginia
- vs
- vill
- var
- we
- webb
- webbservice
- väster
- när
- som
- medan
- kommer
- med
- utan
- fungerar
- inom hela sverige
- skulle
- linda
- Om er
- Din
- zephyrnet
- zoom