Etter hvert som maskinlæringsmodeller (ML) har blitt bedre, har dataforskere, ML-ingeniører og forskere flyttet mer oppmerksomhet til å definere og forbedre datakvaliteten. Dette har ført til fremveksten av en datasentrisk tilnærming til ML og ulike teknikker for å forbedre modellytelsen ved å fokusere på datakrav. Ved å bruke disse teknikkene kan ML-utøvere redusere mengden data som kreves for å trene en ML-modell.
Som en del av denne tilnærmingen har avanserte teknikker for valg av dataundersett dukket opp for å øke hastigheten på treningen ved å redusere inndatamengden. Denne prosessen er basert på å automatisk velge et gitt antall punkter som tilnærmer fordelingen av et større datasett og bruke det til trening. Bruk av denne typen teknikk reduserer tiden som kreves for å trene en ML-modell.
I dette innlegget beskriver vi bruk av datasentriske AI-prinsipper med Amazon SageMaker Ground Truth, hvordan implementere teknikker for valg av dataundersett ved hjelp av KORDER depot på Amazon SageMaker for å redusere mengden data som kreves for å trene en innledende modell, og hvordan du kjører eksperimenter ved å bruke denne tilnærmingen med Amazon SageMaker-eksperimenter.
En datasentrisk tilnærming til maskinlæring
Før du dykker inn i mer avanserte datasentriske teknikker som valg av dataundersett, kan du forbedre datasettene dine på flere måter ved å bruke et sett med underliggende prinsipper på datamerkingsprosessen. For dette støtter Ground Truth ulike mekanismer for å forbedre etikettkonsistens og datakvalitet.
Etikettkonsistens er viktig for å forbedre modellens ytelse. Uten det kan ikke modeller produsere en beslutningsgrense som skiller hvert punkt som tilhører forskjellige klasser. En måte å sikre konsistens på er å bruke merknadskonsolidering i Ground Truth, som lar deg vise et gitt eksempel til flere etiketter og bruke den aggregerte etiketten som er oppgitt som grunnsannheten for det eksemplet. Divergens i etiketten måles av konfidenspoengsummen generert av Ground Truth. Når det er divergens i etikettene, bør du se om det er tvetydighet i merkeinstruksjonene som er gitt til etikettene dine, som kan fjernes. Denne tilnærmingen reduserer effektene av skjevheter fra individuelle etiketter, noe som er sentralt for å gjøre etiketter mer konsistente.
En annen måte å forbedre modellytelsen ved å fokusere på data involverer å utvikle metoder for å analysere feil i etiketter når de kommer opp for å identifisere den viktigste undergruppen av data å forbedre. du kan gjøre dette for treningsdatasettet ditt med en kombinasjon av manuell innsats som involverer dykking i merkede eksempler og bruk av Amazon CloudWatch logger og beregninger generert av Ground Truth-merkejobber. Det er også viktig å se på feil modellene gjør på slutningstidspunktet for å drive neste iterasjon av merking for datasettet vårt. I tillegg til disse mekanismene, Amazon SageMaker Clarify lar dataforskere og ML-ingeniører kjøre algoritmer som KernelSHAP for å la dem tolke spådommer laget av modellen deres. Som nevnt kan en dypere forklaring av modellens spådommer relateres tilbake til den innledende merkingsprosessen for å forbedre den.
Til slutt kan du vurdere å kaste ut støyende eller altfor overflødige eksempler. Ved å gjøre dette kan du redusere treningstiden ved å fjerne eksempler som ikke bidrar til å forbedre modellens ytelse. Imidlertid er det vanskelig og tidkrevende å identifisere et nyttig undersett av et gitt datasett manuelt. Ved å bruke teknikkene for valg av dataundersett beskrevet i dette innlegget kan du automatisere denne prosessen langs etablerte rammer.
Bruk saken
Som nevnt fokuserer datasentrisk AI på å forbedre modellinndata i stedet for arkitekturen til selve modellen. Når du har brukt disse prinsippene under datamerking eller funksjonsutvikling, kan du fortsette å fokusere på modellinndata ved å bruke dataundersettvalg på treningstidspunktet.
For dette innlegget bruker vi generaliseringsbasert dataundersettvalg for effektiv og robust læring (GLISTER), som er en av mange teknikker for valg av dataundersett implementert i CORDS-depotet, til treningsalgoritmen til en ResNet-18 modell for å minimere tiden det tar å trene en modell til å klassifisere CIFAR-10 Bilder. Følgende er noen eksempelbilder med deres respektive etiketter hentet fra CIFAR-10-datasettet.
ResNet-18 brukes ofte til klassifiseringsoppgaver. Det er et 18-lags dypt konvolusjonelt nevralt nettverk. CIFAR-10-datasettet brukes ofte til å evaluere gyldigheten av ulike teknikker og tilnærminger i ML. Den er sammensatt av 60,000 32 32×10 fargebilder merket på tvers av XNUMX klasser.
I de følgende avsnittene viser vi hvordan GLISTER til en viss grad kan hjelpe deg med å svare på følgende spørsmål:
Hvor mange prosent av et gitt datasett kan vi bruke og fortsatt oppnå god modellytelse under trening?
Hvis du bruker GLISTER på treningsalgoritmen din, introduseres brøk som en hyperparameter i treningsalgoritmen. Dette representerer prosentandelen av det gitte datasettet du ønsker å bruke. Som med alle hyperparametere, kreves justering for å finne verdien som gir det beste resultatet for modellen og dataene dine. Vi går ikke i dybden på hyperparameterinnstilling i dette innlegget. For mer informasjon, se Optimaliser hyperparametre med Amazon SageMaker Automatic Model Tuning.
Vi kjører flere tester med SageMaker Experiments for å måle effekten av tilnærmingen. Resultatene vil variere avhengig av det opprinnelige datasettet, så det er viktig å teste tilnærmingen mot dataene våre ved forskjellige undersettstørrelser.
Selv om vi diskuterer bruk av GLISTER på bilder, kan du også bruke det på treningsalgoritmer som arbeider med strukturerte eller tabellformede data.
Valg av dataundersett
Hensikten med valg av dataundersett er å akselerere opplæringsprosessen samtidig som effektene på nøyaktigheten minimeres og modellens robusthet økes. Mer spesifikt velger GLISTER-ONLINE et delsett etter hvert som modellen lærer ved å forsøke å maksimere loggsannsynligheten for det treningsdataundersettet på valideringssettet du spesifiserer. Optimalisering av utvalg av dataundersett på denne måten reduserer støyen og klasseubalansen som ofte finnes i datasett i den virkelige verden, og lar undergruppens valgstrategi tilpasse seg etter hvert som modellen lærer.
Den opprinnelige GLISTER papir beskriver en avveining mellom hastighet og nøyaktighet ved forskjellige dataundersettstørrelser som fulgt ved å bruke en LeNet modell:
Delsettstørrelse | speedup | Nøyaktighet |
10% | 6x | -3% |
30% | 2.5x | -1.20% |
50% | 1.5x | -0.20% |
For å trene modellen kjører vi en SageMaker treningsjobb ved hjelp av et tilpasset opplæringsskript. Vi har også allerede lastet opp vårt bildedatasett til Amazon enkel lagringstjeneste (Amazon S3). Som med enhver SageMaker treningsjobb, må vi definere en Estimator
gjenstand. PyTorch-estimatoren fra sagemaker.pytorch
pakken lar oss kjøre vårt eget treningsskript i en administrert PyTorch-beholder. De inputs
variabel sendt til estimatorens .fit
funksjonen inneholder en ordbok over trenings- og valideringsdatasettets S3-plassering.
De train.py
skript kjøres når en treningsjobb startes. I dette skriptet importerer vi ResNet-18-modellen fra CORDS-biblioteket og gir den antallet klasser i datasettet vårt som følger:
Deretter bruker vi gen_dataset
funksjon fra CORDS for å lage opplærings-, validerings- og testdatasett:
Fra hvert datasett lager vi en tilsvarende PyTorch-datalaster:
Til slutt bruker vi disse datalasterne til å lage en GLISTERDataLoader
fra CORDS-biblioteket. Den bruker en implementering av GLISTER-ONLINE-seleksjonsstrategien, som bruker delsettvalg når vi oppdaterer modellen under trening, som diskutert tidligere i dette innlegget.
For å lage objektet sender vi seleksjonsstrategiens spesifikke argumenter som en DotMap
objekt sammen med train_loader
, validation_loader
og logger
:
De GLISTERDataLoader
kan nå brukes som en vanlig datalaster til en treningssløyfe. Den vil velge dataundersett for neste treningsbatch etter hvert som modellen lærer basert på den modellens tap. Som vist i den foregående tabellen, kan vi ved å legge til en strategi for valg av dataundersett oss redusere treningstiden betydelig, selv med det ekstra trinnet med valg av dataundersett, med liten avveining i nøyaktighet.
Dataforskere og ML-ingeniører trenger ofte å evaluere gyldigheten av en tilnærming ved å sammenligne den med en grunnlinje. Vi viser hvordan du gjør dette i neste avsnitt.
Eksperimentsporing
Du kan bruke SageMaker-eksperimenter til å måle gyldigheten til tilnærmingen til valg av dataundersett. For mer informasjon, se Neste generasjon Amazon SageMaker-eksperimenter – Organiser, spor og sammenlign maskinlæringstreningene dine i stor skala.
I vårt tilfelle utfører vi fire eksperimenter: en grunnlinje uten å bruke dataundersettvalg, og tre andre med forskjellig fraction
parametere, som representerer størrelsen på delsettet i forhold til det totale datasettet. Naturligvis bruker en mindre fraction
parameter bør resultere i reduserte treningstider, men lavere modellnøyaktighet også.
For dette innlegget er hvert treningsløp representert som en Run
i SageMaker Experiments. Kjøringene knyttet til eksperimentet vårt er alle gruppert under ett Experiment
gjenstand. Kjøringer kan knyttes til et vanlig eksperiment når du oppretter Estimator
med SDK. Se følgende kode:
Som en del av det tilpassede treningsskriptet ditt kan du samle inn løpsmålinger ved å bruke load_run
:
Deretter, ved å bruke run-objektet som ble returnert av forrige operasjon, kan du samle datapunkter per epoke ved å ringe run.log_metric(name, value, step)
og oppgi metrisk navn, verdi og gjeldende epokenummer.
For å måle gyldigheten til tilnærmingen vår, samler vi inn beregninger som tilsvarer treningstap, treningsnøyaktighet, valideringstap, valideringsnøyaktighet og tid til å fullføre en epoke. Så, etter å ha kjørt treningsjobbene, kan vi gjennomgå resultatene av eksperimentet vårt in Amazon SageMaker Studio eller gjennom SageMaker Experiments SDK.
For å se valideringsnøyaktighetene i Studio, velg Analyser på eksperimentet Kjører side.
Legg til et diagram, angi diagramegenskapene, og velg Opprett. Som vist i det følgende skjermbildet, vil du se et plott av valideringsnøyaktigheter ved hver epoke for alle kjøringer.
SDK-en lar deg også hente eksperimentrelatert informasjon som en Pandas-dataramme:
Eventuelt kan treningsjobbene sorteres. For eksempel kan vi legge til "metrics.validation:accuracy.max"
som verdien av sort_by
parameter sendt til ExperimentAnalytics
for å returnere resultatet sortert etter valideringsnøyaktighet.
Som forventet viser våre eksperimenter at bruk av GLISTER og dataundersettvalg på treningsalgoritmen reduserer treningstiden. Når du kjører vår baseline-treningsalgoritme, svinger mediantiden for å fullføre en enkelt epoke rundt 27 sekunder. Hvis du derimot bruker GLISTER for å velge et undersett tilsvarende 50 %, 30 % og 10 % av det totale datasettet, resulterer det i tider for å fullføre en epoke på henholdsvis 13, 8.5 og 2.75 sekunder på ml.p3.2xlarge forekomster .
Vi observerer også en relativt minimal innvirkning på valideringsnøyaktigheten, spesielt når du bruker dataundersett på 50 %. Etter trening i 100 epoker, gir grunnlinjen en valideringsnøyaktighet på 92.72 %. I motsetning til dette vil bruk av GLISTER for å velge et undersett tilsvarende 50 %, 30 % og 10 % av det totale datasettet resultere i valideringsnøyaktigheter på henholdsvis 91.42 %, 89.76 % og 82.82 %.
konklusjonen
SageMaker Ground Truth og SageMaker Experiments muliggjør en datasentrisk tilnærming til maskinlæring ved å la dataforskere og ML-ingeniører produsere mer konsistente datasett og spore virkningen av mer avanserte teknikker når de implementerer dem i modellbyggingsfasen. Ved å implementere en datasentrisk tilnærming til ML kan du redusere mengden data som kreves av modellen din og forbedre robustheten.
Prøv det, og la oss få vite hva du synes i kommentarfeltet.
Om forfatterne
Nicolas Bernier er en løsningsarkitekt, en del av det kanadiske offentlige sektorteamet ved AWS. Han gjennomfører for tiden en mastergrad med et forskningsområde i Deep Learning og har fem AWS-sertifiseringer, inkludert ML Specialty Certification. Nicolas er lidenskapelig opptatt av å hjelpe kunder med å utdype kunnskapen om AWS ved å samarbeide med dem for å oversette deres forretningsutfordringer til tekniske løsninger.
Givanildo Alves er en Prototyping Architect med Prototyping and Cloud Engineering-teamet hos Amazon Web Services, og hjelper kunder med å innovere og akselerere ved å vise kunsten mulig på AWS, etter å ha implementert flere prototyper rundt kunstig intelligens. Han har en lang karriere innen programvareteknikk og har tidligere jobbet som programvareutviklingsingeniør hos Amazon.com.br.
- SEO-drevet innhold og PR-distribusjon. Bli forsterket i dag.
- Platoblokkkjede. Web3 Metaverse Intelligence. Kunnskap forsterket. Tilgang her.
- kilde: https://aws.amazon.com/blogs/machine-learning/use-a-data-centric-approach-to-minimize-the-amount-of-data-required-to-train-amazon-sagemaker-models/
- :er
- $OPP
- 000
- 1
- 10
- 100
- 7
- 8
- a
- Om oss
- akselerere
- nøyaktighet
- Oppnå
- tvers
- tilpasse
- tillegg
- Ytterligere
- avansert
- Etter
- mot
- AI
- algoritme
- algoritmer
- Alle
- tillate
- tillater
- allerede
- Amazon
- Amazon SageMaker
- Amazon Web Services
- Amazon.com
- tvetydighet
- beløp
- analytics
- analysere
- og
- besvare
- anvendt
- Påfør
- påføring
- tilnærming
- tilnærminger
- arkitektur
- ER
- AREA
- argumenter
- rundt
- Kunst
- kunstig
- kunstig intelligens
- AS
- At
- forsøker
- oppmerksomhet
- automatisere
- Automatisk
- automatisk
- AWS
- tilbake
- basert
- Baseline
- BE
- BEST
- Bias
- Bygning
- virksomhet
- by
- ringer
- CAN
- Canadian
- Karriere
- saken
- sentral
- sertifisering
- sertifiseringer
- utfordringer
- Figur
- Velg
- klasse
- klasser
- klassifisering
- Klassifisere
- klienter
- Cloud
- kode
- samle
- farge
- COM
- kombinasjon
- Kom
- kommentarer
- Felles
- forholdsvis
- sammenligne
- sammenligne
- fullføre
- komponert
- gjennomføre
- selvtillit
- Vurder
- konsistent
- konsolidering
- Container
- inneholder
- fortsette
- kontrast
- bidra
- Tilsvarende
- kunne
- skape
- Opprette
- Gjeldende
- I dag
- skikk
- Kunder
- dato
- datapunkter
- datasett
- avgjørelse
- dyp
- dyp læring
- utdype
- dypere
- definere
- Grad
- demonstrere
- demonstrert
- avhengig
- dybde
- beskrive
- beskrevet
- utvikle
- Utvikling
- forskjellig
- ulik
- vanskelig
- diskutere
- diskutert
- distribusjon
- Divergens
- gjør
- ikke
- stasjonen
- under
- hver enkelt
- Tidligere
- effekter
- effektiv
- innsats
- veksten
- muliggjøre
- ingeniør
- Ingeniørarbeid
- Ingeniører
- sikre
- epoke
- epoker
- Tilsvarende
- feil
- spesielt
- etablert
- evaluere
- Selv
- Hver
- eksempel
- eksempler
- forventet
- eksperiment
- forklaring
- Trekk
- finne
- Fokus
- fokuserer
- fokusering
- fulgt
- etter
- følger
- Til
- funnet
- brøkdel
- rammer
- fra
- funksjon
- generert
- generasjonen
- gitt
- Go
- god
- Ground
- Ha
- å ha
- hjelpe
- hjelpe
- holder
- Hvordan
- Hvordan
- Men
- HTML
- http
- HTTPS
- Innstilling av hyperparameter
- identifisere
- identifisering
- bilde
- bilder
- ubalanse
- Påvirkning
- iverksette
- gjennomføring
- implementert
- implementere
- importere
- viktig
- forbedre
- forbedret
- bedre
- in
- Inkludert
- økende
- individuelt
- informasjon
- innledende
- innovere
- inngang
- f.eks
- instruksjoner
- Intelligens
- introdusere
- IT
- køyring
- DET ER
- selv
- Jobb
- Jobb
- Vet
- kunnskap
- Etiketten
- merking
- etiketter
- større
- lansert
- læring
- Led
- Bibliotek
- i likhet med
- Liste
- lite
- plassering
- Lang
- Se
- tap
- maskin
- maskinlæring
- laget
- GJØR AT
- Making
- fikk til
- håndbok
- manuelt
- mange
- mestere
- max
- Maksimer
- måle
- nevnt
- metoder
- metrisk
- Metrics
- minimal
- minimere
- ML
- modell
- modeller
- mer
- mest
- flere
- navn
- Trenger
- nettverk
- nevrale nettverket
- neste
- Nicolas
- Bråk
- Antall
- objekt
- observere
- of
- on
- ONE
- drift
- optimalisere
- andre
- samlet
- egen
- pakke
- side
- pandaer
- parameter
- parametere
- del
- bestått
- lidenskapelig
- prosent
- Utfør
- ytelse
- fase
- plato
- Platon Data Intelligence
- PlatonData
- Point
- poeng
- mulig
- Post
- Spådommer
- forrige
- tidligere
- prinsipper
- prosess
- produsere
- egenskaper
- prototyper
- prototyping
- forutsatt
- offentlig
- formål
- pytorch
- kvalitet
- kvantitet
- spørsmål
- heller
- virkelige verden
- redusere
- Redusert
- reduserer
- redusere
- region
- regelmessig
- i slekt
- fjernet
- fjerne
- Repository
- representert
- representerer
- påkrevd
- Krav
- Krever
- forskning
- forskere
- de
- resultere
- Resultater
- retur
- robust
- robusthet
- Kjør
- rennende
- sagemaker
- forskere
- SDK
- sekunder
- Seksjon
- seksjoner
- sektor
- velge
- utvalg
- betjene
- Tjenester
- Session
- sett
- flere
- bør
- Vis
- vist
- betydelig
- Enkelt
- enkelt
- Størrelse
- størrelser
- mindre
- So
- Software
- programvareutvikling
- software engineering
- Solutions
- noen
- kilde
- Spesialitet
- spesifikk
- spesielt
- fart
- Trinn
- Still
- lagring
- Strategi
- strukturert
- studio
- forsyne
- Støtter
- bord
- tar
- oppgaver
- lag
- Teknisk
- teknikker
- test
- tester
- Det
- De
- deres
- Dem
- Disse
- tre
- Gjennom
- tid
- ganger
- til
- lommelykt
- toronto
- spor
- Tog
- Kurs
- treninger
- oversette
- etter
- underliggende
- Oppdater
- lastet opp
- us
- bruke
- validering
- verdi
- ulike
- Se
- Vei..
- måter
- web
- webtjenester
- VI VIL
- Hva
- hvilken
- mens
- vil
- med
- innenfor
- uten
- arbeidet
- arbeid
- Du
- Din
- zephyrnet