KT Corporation er en af de største telekommunikationsudbydere i Sydkorea, der tilbyder en bred vifte af tjenester, herunder fastnettelefon, mobilkommunikation og internet og AI-tjenester. KT's AI Food Tag er en AI-baseret diætstyringsløsning, der identificerer madens type og næringsindhold på billeder ved hjælp af en computervisionsmodel. Denne visionsmodel udviklet af KT er afhængig af en model, der er forudtrænet med en stor mængde umærkede billeddata til at analysere næringsindholdet og kalorieindholdet i forskellige fødevarer. AI Food Tag kan hjælpe patienter med kroniske sygdomme som diabetes med at styre deres diæter. KT brugte AWS og Amazon SageMaker at træne denne AI Food Tag-model 29 gange hurtigere end før og optimere den til produktionsimplementering med en modeldestillationsteknik. I dette indlæg beskriver vi KTs modeludviklingsrejse og succes ved at bruge SageMaker.
Introduktion af KT-projektet og problemformulering
AI Food Tag-modellen, som er foruddannet af KT, er baseret på vision transformers (ViT) arkitekturen og har flere modelparametre end deres tidligere visionsmodel for at forbedre nøjagtigheden. For at formindske modelstørrelsen til produktion bruger KT en videndestillationsteknik (KD) til at reducere antallet af modelparametre uden væsentlig indflydelse på nøjagtigheden. Med vidensdestillation kaldes den fortrænede model for en lærer model, og en letvægts-outputmodel er trænet som en elev model, som illustreret i den følgende figur. Den lette elevmodel har færre modelparametre end læreren, hvilket reducerer hukommelseskravene og giver mulighed for implementering på mindre, billigere instanser. Eleven bevarer en acceptabel nøjagtighed, selvom den er mindre ved at lære af lærermodellens output.
Lærermodellen forbliver uændret under KD, men elevmodellen trænes ved at bruge lærermodellens outputlogitter som etiketter til at beregne tab. Med dette KD-paradigme skal både læreren og eleven være på en enkelt GPU-hukommelse til træning. KT brugte oprindeligt to GPU'er (A100 80 GB) i deres interne, lokale miljø til at træne elevmodellen, men processen tog omkring 40 dage at dække 300 epoker. For at accelerere træningen og generere en elevmodel på kortere tid, samarbejdede KT med AWS. Sammen reducerede holdene markant modeltræningstiden. Dette indlæg beskriver, hvordan holdet brugte Amazon SageMaker træning, SageMaker Data Parallelism Library, Amazon SageMaker Debuggerog Amazon SageMaker Profiler med succes at udvikle en letvægts AI Food Tag-model.
Opbygning af et distribueret træningsmiljø med SageMaker
SageMaker Training er et managed machine learning (ML) træningsmiljø på AWS, der giver en række funktioner og værktøjer til at forenkle træningsoplevelsen og kan være nyttig i distribueret computing, som illustreret i følgende diagram.
SageMaker-kunder kan også få adgang til indbyggede Docker-billeder med forskellige forudinstallerede deep learning-rammer og de nødvendige Linux-, NCCL- og Python-pakker til modeltræning. Dataforskere eller ML-ingeniører, der ønsker at køre modeltræning, kan gøre det uden byrden med at konfigurere træningsinfrastruktur eller administrere Docker og kompatibiliteten af forskellige biblioteker.
I løbet af en 1-dags workshop var vi i stand til at opsætte en distribueret træningskonfiguration baseret på SageMaker inden for KTs AWS-konto, accelerere KTs træningsscripts ved hjælp af SageMaker Distributed Data Parallel (DDP) biblioteket og endda teste et træningsjob ved hjælp af to ml. p4d.24xlarge forekomster. I dette afsnit beskriver vi KTs erfaring med at arbejde med AWS-teamet og bruge SageMaker til at udvikle deres model.
I proof of concept ønskede vi at fremskynde et træningsjob ved at bruge SageMaker DDP-biblioteket, som er optimeret til AWS-infrastruktur under distribueret træning. For at skifte fra PyTorch DDP til SageMaker DDP skal du blot erklære torch_smddp
pakke og ændre backend til smddp
, som vist i følgende kode:
For at lære mere om SageMaker DDP-biblioteket, se SageMakers Data Parallelism Library.
Analyse af årsagerne til langsom træningshastighed med SageMaker Debugger og Profiler
Det første skridt i at optimere og accelerere en træningsarbejdsmængde involverer forståelse og diagnosticering af, hvor flaskehalse opstår. Til KT's træningsjob målte vi træningstiden pr. iteration af dataindlæseren, fremadgående og baglæns gennemløb:
1 iter tid – dataindlæser: 0.00053 sek., frem: 7.77474 sek., baglæns: 1.58002 sek |
2 iter tid – dataindlæser: 0.00063 sek., frem: 0.67429 sek., baglæns: 24.74539 sek |
3 iter tid – dataindlæser: 0.00061 sek., frem: 0.90976 sek., baglæns: 8.31253 sek |
4 iter tid – dataindlæser: 0.00060 sek., frem: 0.60958 sek., baglæns: 30.93830 sek |
5 iter tid – dataindlæser: 0.00080 sek., frem: 0.83237 sek., baglæns: 8.41030 sek |
6 iter tid – dataindlæser: 0.00067 sek., frem: 0.75715 sek., baglæns: 29.88415 sek |
Ved at se på klokkeslættet i standardoutputtet for hver iteration, så vi, at baglænspassets køretid svingede betydeligt fra iteration til iteration. Denne variation er usædvanlig og kan påvirke den samlede træningstid. For at finde årsagen til denne inkonsekvente træningshastighed forsøgte vi først at identificere ressourceflaskehalse ved at bruge System Monitor (SageMaker Debugger UI), som giver dig mulighed for at fejlsøge træningsjob på SageMaker Training og se status for ressourcer såsom den administrerede træningsplatforms CPU, GPU, netværk og I/O inden for et bestemt antal sekunder.
SageMaker Debugger UI giver detaljerede og væsentlige data, der kan hjælpe med at identificere og diagnosticere flaskehalse i et træningsjob. Specifikt fangede linjediagrammet for CPU-udnyttelse og CPU/GPU-udnyttelsesvarmekort pr. instans vores opmærksomhed.
I CPU-udnyttelseslinjediagrammet bemærkede vi, at nogle CPU'er blev brugt 100 %.
I varmekortet (hvor mørkere farver indikerer højere udnyttelse), bemærkede vi, at nogle få CPU-kerner havde høj udnyttelse gennem hele træningen, hvorimod GPU-udnyttelsen ikke var konsekvent høj over tid.
Herfra begyndte vi at mistænke, at en af årsagerne til den langsomme træningshastighed var en CPU-flaskehals. Vi gennemgik træningsscriptkoden for at se, om noget var årsag til CPU-flaskehalsen. Den mest mistænkelige del var den store værdi af num_workers
i dataindlæseren, så vi ændrede denne værdi til 0 eller 1 for at reducere CPU-udnyttelsen. Vi kørte derefter træningsjobbet igen og tjekkede resultaterne.
Følgende skærmbilleder viser linjediagrammet for CPU-udnyttelse, GPU-udnyttelse og varmekort efter afhjælpning af CPU-flaskehalsen.
Ved blot at ændre num_workers
, så vi et betydeligt fald i CPU-udnyttelsen og en samlet stigning i GPU-udnyttelsen. Dette var en vigtig ændring, der forbedrede træningshastigheden markant. Alligevel ville vi se, hvor vi kunne optimere GPU-udnyttelsen. Til dette brugte vi SageMaker Profiler.
SageMaker Profiler hjælper med at identificere optimeringsspor ved at give synlighed i brug ved operationer, herunder sporing af GPU- og CPU-udnyttelsesmetrikker og kerneforbrug af GPU/CPU i træningsscripts. Det hjælper brugerne med at forstå, hvilke operationer der optager ressourcer. Først, for at bruge SageMaker Profiler, skal du tilføje ProfilerConfig
til den funktion, der påkalder træningsjobbet ved hjælp af SageMaker SDK, som vist i følgende kode:
I SageMaker Python SDK har du fleksibiliteten til at tilføje annotate
funktioner for SageMaker Profiler til at vælge kode eller trin i træningsscriptet, der skal profileres. Følgende er et eksempel på den kode, som du skal deklarere for SageMaker Profiler i træningsscripts:
Efter tilføjelse af den foregående kode, hvis du kører et træningsjob ved hjælp af træningsscripts, kan du få information om de operationer, der forbruges af GPU-kernen (som vist i den følgende figur), efter træningen har kørt i en periode. I tilfælde af KT's træningsmanuskripter kørte vi det i én epoke og fik følgende resultater.
Da vi tjekkede de fem bedste driftsforbrugstider for GPU-kernen blandt resultaterne af SageMaker Profiler, fandt vi ud af, at for KT-træningsscriptet forbruges mest tid af matrixproduktoperationen, som er en generel matrixmultiplikationsoperation (GEMM) på GPU'er. Med denne vigtige indsigt fra SageMaker Profiler begyndte vi at undersøge måder til at accelerere disse operationer og forbedre GPU-udnyttelsen.
Fremskynder træningstiden
Vi gennemgik forskellige måder at reducere beregningstiden for matrixmultiplikation og anvendte to PyTorch-funktioner.
Shard optimizer tilstande med ZeroRedundancyOptimizer
Hvis du kigger på Zero Redundancy Optimizer (ZeRO), muliggør DeepSpeed/ZeRO-teknikken træning af en stor model effektivt med bedre træningshastighed ved at eliminere de redundanser i hukommelsen, der bruges af modellen. ZeroRedundancyOptimizer i PyTorch bruger teknikken til at sønderdele optimeringstilstanden for at reducere hukommelsesforbrug pr. proces i Distributed Data Parallel (DDP). DDP bruger synkroniserede gradienter i tilbageløbet, så alle optimeringsreplikaer itererer over de samme parametre og gradientværdier, men i stedet for at have alle modelparametrene, opretholdes hver optimeringstilstand ved kun at sønderdele for forskellige DDP-processer for at reducere hukommelsesforbrug.
For at bruge den kan du lade din eksisterende Optimizer være i optimizer_class
og erklære en ZeroRedundancyOptimizer
med resten af modelparametrene og indlæringshastigheden som parametre.
Automatisk blandet præcision
Automatisk blandet præcision (AMP) bruger datatypen torch.float32 til nogle operationer og torch.bfloat16 eller torch.float16 for andre, for nemheden af hurtig beregning og reduceret hukommelsesforbrug. Især fordi deep learning-modeller typisk er mere følsomme over for eksponentbits end fraktionsbits i deres beregninger, svarer torch.bfloat16 til eksponentbits af torch.float32, hvilket giver dem mulighed for at lære hurtigt med minimalt tab. torch.bfloat16 kører kun på instanser med A100 NVIDIA-arkitektur (Ampere) eller højere, såsom ml.p4d.24xlarge, ml.p4de.24xlarge og ml.p5.48xlarge.
For at anvende AMP kan du erklære torch.cuda.amp.autocast
i træningsscripts som vist i koden ovenfor og erklære dtype
som fakkel.bfloat16.
Resultater i SageMaker Profiler
Efter at have anvendt de to funktioner på træningsscripts og kørt et togjob i én epoke igen, tjekkede vi de fem øverste driftsforbrugstider for GPU-kernen i SageMaker Profiler. Følgende figur viser vores resultater.
Vi kan se, at GEMM-operationen, som var øverst på listen før anvendelse af de to Torch-funktioner, er forsvundet fra top fem operationer, erstattet af ReduceScatter-operationen, som typisk forekommer i distribueret træning.
Træningshastighedsresultater af den KT-destillerede model
Vi øgede træningsbatchstørrelsen med 128 mere for at tage højde for hukommelsesbesparelserne ved at anvende de to Torch-funktioner, hvilket resulterede i en endelig batchstørrelse på 1152 i stedet for 1024. Træningen af den endelige elevmodel var i stand til at køre 210 epoker pr. 1 dag ; træningstiden og speedup mellem KT's interne træningsmiljø og SageMaker er opsummeret i følgende tabel.
Træningsmiljø | Trænings GPU spec. | Antal GPU | Træningstid (timer) | Epoch | Timer pr. epoke | Reduktion Ratio |
KTs interne træningsmiljø | A100 (80 GB) | 2 | 960 | 300 | 3.20 | 29 |
Amazon SageMaker | A100 (40 GB) | 32 | 24 | 210 | 0.11 | 1 |
Skalerbarheden af AWS gjorde det muligt for os at fuldføre træningsopgaven 29 gange hurtigere end før ved at bruge 32 GPU'er i stedet for 2 på stedet. Som et resultat ville brug af flere GPU'er på SageMaker have reduceret træningstiden markant uden forskel i de samlede træningsomkostninger.
Konklusion
Park Sang-min (Vision AI Serving Technology Team Leader) fra AI2XL Lab i KT's Convergence Technology Center kommenterede samarbejdet med AWS om at udvikle AI Food Tag-modellen:
"For nylig, efterhånden som der er flere transformer-baserede modeller i synsfeltet, er modelparametrene og den nødvendige GPU-hukommelse stigende. Vi bruger letvægtsteknologi til at løse dette problem, og det tager meget tid, omkring en måned at lære én gang. Gennem denne PoC med AWS var vi i stand til at identificere ressourceflaskehalsene ved hjælp af SageMaker Profiler og Debugger, løse dem og derefter bruge SageMakers dataparallelismebibliotek til at gennemføre træningen på cirka én dag med optimeret modelkode på fire ml.p4d. 24xstore forekomster."
SageMaker hjalp med at spare Sang-mins hold ugers tid i modeltræning og udvikling.
Baseret på dette samarbejde om visionsmodellen vil AWS og SageMaker-teamet fortsætte med at samarbejde med KT om forskellige AI/ML-forskningsprojekter for at forbedre modeludvikling og serviceproduktivitet ved at anvende SageMaker-kapaciteter.
For at lære mere om relaterede funktioner i SageMaker, tjek følgende:
Om forfatterne
Youngjoon ChoiAI/ML Expert SA, har erfaret virksomheds-IT i forskellige brancher såsom fremstilling, højteknologi og finans som udvikler, arkitekt og dataforsker. Han forskede i maskinlæring og deep learning, specifikt om emner som hyperparameteroptimering og domænetilpasning, og præsenterede algoritmer og papirer. Hos AWS har han specialiseret sig i AI/ML på tværs af brancher og leverer teknisk validering ved hjælp af AWS-tjenester til distribueret træning/modeller i stor skala og opbygning af MLO'er. Han foreslår og gennemgår arkitekturer med det formål at bidrage til udvidelsen af AI/ML-økosystemet.
Jung Hoon Kim er en konto SA hos AWS Korea. Baseret på erfaringer inden for design af applikationsarkitektur, udvikling og systemmodellering i forskellige industrier såsom hi-tech, fremstilling, finans og den offentlige sektor, arbejder han på AWS Cloud-rejse og optimering af arbejdsbelastninger på AWS for virksomhedskunder.
Rock Sakong er forsker ved KT R&D. Han har udført forskning og udvikling for vision AI på forskellige områder og hovedsageligt udført ansigtsegenskaber (køn/briller, hatte osv.)/ansigtsgenkendelsesteknologi relateret til ansigtet. I øjeblikket arbejder han på letvægtsteknologi til vision-modellerne.
Manoj Ravi er Senior Product Manager for Amazon SageMaker. Han brænder for at bygge næste generations AI-produkter og arbejder på software og værktøjer for at gøre maskinlæring i stor skala nemmere for kunderne. Han har en MBA fra Haas School of Business og en Master i Information Systems Management fra Carnegie Mellon University. I sin fritid nyder Manoj at spille tennis og dyrke landskabsfotografering.
Robert Van Dusen er Senior Product Manager hos Amazon SageMaker. Han leder rammer, compilere og optimeringsteknikker til dyb læringstræning.
- SEO Powered Content & PR Distribution. Bliv forstærket i dag.
- PlatoData.Network Vertical Generative Ai. Styrk dig selv. Adgang her.
- PlatoAiStream. Web3 intelligens. Viden forstærket. Adgang her.
- PlatoESG. Kulstof, CleanTech, Energi, Miljø, Solenergi, Affaldshåndtering. Adgang her.
- PlatoHealth. Bioteknologiske og kliniske forsøgs intelligens. Adgang her.
- Kilde: https://aws.amazon.com/blogs/machine-learning/kts-journey-to-reduce-training-time-for-a-vision-transformers-model-using-amazon-sagemaker/
- :har
- :er
- :hvor
- $OP
- 1
- 10
- 100
- 11
- 12
- 15 %
- 22
- 29
- 32
- 378
- 40
- 7
- 710
- 80
- a
- I stand
- Om
- over
- fremskynde
- accelererende
- acceptabel
- adgang
- Konto
- nøjagtighed
- tværs
- tilpasning
- tilføje
- tilføje
- Efter
- igen
- AI
- AI-tjenester
- AI / ML
- sigter
- algoritmer
- Alle
- tilladt
- tillade
- tillader
- også
- Amazon
- Amazon SageMaker
- Amazon Web Services
- blandt
- beløb
- amp
- an
- analysere
- ,
- noget
- applikationer
- anvendt
- Indløs
- Anvendelse
- arkitektur
- ER
- AS
- At
- attributter
- AWS
- Bagende
- baseret
- BE
- fordi
- før
- begyndte
- være
- Bedre
- mellem
- både
- flaskehalse
- Bygning
- indbygget
- byrde
- virksomhed
- men
- by
- beregne
- kaldet
- CAN
- Kan få
- kapaciteter
- Carnegie Mellon
- tilfælde
- fanget
- Årsag
- årsager
- forårsager
- center
- lave om
- ændret
- skiftende
- Chart
- kontrollere
- afkrydset
- Cloud
- kode
- samarbejde
- samarbejde
- kommenteret
- Kommunikation
- kompatibilitet
- fuldføre
- beregning
- beregninger
- computer
- Computer Vision
- computing
- Konceptet
- gennemført
- Konfiguration
- konsekvent
- forbruges
- forbrugende
- forbrug
- indhold
- fortsæt
- bidrage
- bekvemmelighed
- Konvergens
- Omkostninger
- kunne
- dæksel
- For øjeblikket
- Kunder
- mørkere
- data
- dataforsker
- dag
- Dage
- DDP
- falde
- dyb
- dyb læring
- definere
- implementering
- beskrive
- Design
- detaljeret
- udvikle
- udviklet
- Udvikler
- Udvikling
- Diabetes
- diagnosticering
- forskel
- forskellige
- sygdomme
- distribueret
- distribueret computing
- distribueret træning
- do
- Docker
- domæne
- i løbet af
- hver
- lettere
- økosystem
- effektivt
- eliminere
- aktiveret
- muliggør
- Ingeniører
- Enterprise
- Miljø
- epoke
- epoker
- Ækvivalent
- væsentlig
- etc.
- Endog
- eksempel
- eksisterende
- udvidelse
- dyrt
- erfaring
- erfarne
- Oplevelser
- ekspert
- øje
- Ansigtet
- ansigtsbehandling
- FAST
- hurtigere
- Funktionalitet
- få
- færre
- felt
- Fields
- Figur
- endelige
- finansiere
- Finde
- Fornavn
- fem
- Fleksibilitet
- svingede
- efter
- mad
- fødevarer
- Til
- Videresend
- fundet
- fire
- fraktion
- rammer
- fra
- funktion
- funktioner
- Generelt
- generere
- få
- fik
- GPU
- GPU'er
- gradienter
- havde
- Have
- have
- he
- hjælpe
- hjulpet
- hjælper
- link.
- hi-tech
- Høj
- højere
- hans
- besidder
- HOURS
- Hvordan
- HTML
- HTTPS
- Hyperparameter optimering
- identificerer
- identificere
- identificere
- if
- billede
- billeder
- KIMOs Succeshistorier
- importere
- vigtigt
- Forbedre
- forbedret
- in
- Herunder
- Forøg
- øget
- stigende
- angiver
- industrier
- oplysninger
- Informationssystemer
- Infrastruktur
- i første omgang
- indsigt
- instans
- i stedet
- interne
- Internet
- ind
- undersøge
- påberåber sig
- spørgsmål
- IT
- iteration
- Job
- Karriere
- rejse
- viden
- korea
- lab
- Etiketter
- landskab
- stor
- storstilet
- største
- leder
- Leads
- LÆR
- læring
- Forlade
- mindre
- biblioteker
- Bibliotek
- letvægt
- ligesom
- Line (linje)
- linux
- Liste
- loader
- Se
- off
- Lot
- maskine
- machine learning
- hovedsageligt
- fastholder
- lave
- administrere
- lykkedes
- ledelse
- Management Solution
- leder
- styring
- Produktion
- kort
- Matrix
- Mellon
- Hukommelse
- Metrics
- mindste
- formildende
- blandet
- ML
- MLOps
- Mobil
- model
- modellering
- modeller
- Overvåg
- Måned
- mere
- mest
- nødvendig
- Behov
- behov
- netværk
- ingen
- bemærkede
- nummer
- ernæringsmæssige
- Nvidia
- of
- tilbyde
- on
- engang
- ONE
- kun
- drift
- Produktion
- optimering
- Optimer
- optimeret
- optimering
- or
- Andre
- vores
- ud
- output
- udgange
- i løbet af
- samlet
- pakke
- pakker
- papirer
- paradigme
- Parallel
- parametre
- del
- særlig
- partnerskab
- passerer
- lidenskabelige
- patienter
- per
- periode
- fotografering
- pics
- Platforme
- plato
- Platon Data Intelligence
- PlatoData
- spiller
- PoC
- Indlæg
- Precision
- tidligere
- Problem
- behandle
- Processer
- Produkt
- produktchef
- produktion
- produktivitet
- Produkter
- profilering
- projekt
- projekter
- bevis
- Bevis for koncept
- foreslår
- udbydere
- giver
- leverer
- offentlige
- Python
- pytorch
- hurtigt
- F & U
- rækkevidde
- rangerer
- Sats
- årsager
- anerkendelse
- reducere
- Reduceret
- reducerer
- henvise
- relaterede
- resterne
- udskiftes
- påkrævet
- Krav
- forskning
- forskning og udvikling
- forsker
- løse
- ressource
- Ressourcer
- REST
- resultere
- resulterer
- Resultater
- revideret
- Anmeldelser
- Kør
- kører
- løber
- SA
- sagemaker
- samme
- Gem
- Besparelser
- så
- Skalerbarhed
- Scale
- Skole
- Videnskabsmand
- forskere
- screenshots
- script
- scripts
- SDK
- SEK
- sekunder
- Sektion
- sektor
- se
- senior
- følsom
- tjeneste
- Tjenester
- servering
- sæt
- sharding
- bør
- Vis
- vist
- Shows
- signifikant
- betydeligt
- forenkle
- ganske enkelt
- enkelt
- Størrelse
- langsom
- mindre
- So
- Software
- løsninger
- SOLVE
- nogle
- Syd
- Sydkorea
- specialiseret
- specifikt
- hastighed
- brugt
- standard
- Tilstand
- Stater
- Status
- Trin
- Steps
- Stadig
- studerende
- succes
- Succesfuld
- sådan
- suite
- mistænksom
- systemet
- Systemer
- bord
- TAG
- tager
- mål
- hold
- hold
- Teknisk
- teknik
- teknikker
- Teknologier
- telekommunikation
- prøve
- end
- at
- Matrix
- deres
- Them
- derefter
- Der.
- Disse
- denne
- selvom?
- Gennem
- hele
- tid
- gange
- til
- sammen
- tog
- værktøjer
- top
- Emner
- fakkel
- I alt
- Sporing
- Tog
- uddannet
- Kurser
- transformers
- forsøgte
- sand
- to
- typen
- typisk
- ui
- forstå
- forståelse
- universitet
- us
- Brug
- brug
- anvendte
- brugere
- bruger
- ved brug af
- Ved hjælp af
- validering
- værdi
- Værdier
- forskellige
- Specifikation
- synlighed
- vision
- ønsker
- ønskede
- var
- måder
- we
- web
- webservices
- uger
- var
- ud fra følgende betragtninger
- som
- WHO
- bred
- Bred rækkevidde
- Wikipedia
- vilje
- med
- inden for
- uden
- arbejder
- virker
- værksted
- ville
- Du
- Din
- zephyrnet
- nul