Store opmærksomhedsbaserede transformatormodeller har opnået enorme gevinster på naturlig sprogbehandling (NLP). Men at træne disse gigantiske netværk fra bunden kræver en enorm mængde data og computer. For mindre NLP-datasæt er en enkel, men effektiv strategi at bruge en forudtrænet transformer, normalt trænet på en uovervåget måde på meget store datasæt, og finjustere det på datasættet af interesse. Knusende ansigt opretholder en stor model zoo af disse fortrænede transformere og gør dem let tilgængelige selv for nybegyndere.
Men finjustering af disse modeller kræver stadig ekspertviden, fordi de er ret følsomme over for deres hyperparametre, såsom indlæringshastighed eller batchstørrelse. I dette indlæg viser vi, hvordan man optimerer disse hyperparametre med open source-rammerne Syne Tune til distribueret hyperparameteroptimering (HPO). Syne Tune giver os mulighed for at finde en bedre hyperparameterkonfiguration, der opnår en relativ forbedring mellem 1-4 % sammenlignet med standard hyperparametre på populære lIM benchmark datasæt. Selve valget af den fortrænede model kan også betragtes som en hyperparameter og derfor automatisk vælges af Syne Tune. På et tekstklassificeringsproblem fører dette til et yderligere boost i nøjagtigheden på cirka 5 % sammenlignet med standardmodellen. Vi kan dog automatisere flere beslutninger, som en bruger skal træffe; vi demonstrerer dette ved også at afsløre typen af instans som en hyperparameter, som vi senere bruger til at implementere modellen. Ved at vælge den rigtige instanstype kan vi finde konfigurationer, der optimalt afvejer omkostninger og latens.
For en introduktion til Syne Tune henvises til Kør distribuerede hyperparameter- og neuralarkitekturjusteringsjob med Syne Tune.
Hyperparameteroptimering med Syne Tune
Vi vil bruge lIM benchmark suite, som består af ni datasæt til naturlige sprogforståelsesopgaver, såsom tekstgenkendelse eller sentimentanalyse. Til det tilpasser vi Hugging Face's run_lim.py træningsmanuskript. GLUE-datasæt leveres med et foruddefineret trænings- og evalueringssæt med etiketter samt et hold-out-testsæt uden etiketter. Derfor opdeler vi træningssættet i et trænings- og valideringssæt (70%/30% split) og bruger evalueringssættet som vores holdout-testdatasæt. Desuden tilføjer vi endnu en tilbagekaldsfunktion til Hugging Face's Trainer API, der rapporterer valideringsydelsen efter hver epoke tilbage til Syne Tune. Se følgende kode:
Vi starter med at optimere typiske træningshyperparametre: indlæringshastigheden, opvarmningsforholdet for at øge indlæringshastigheden og batchstørrelsen til finjustering af en fortrænet BERT (bert-base-hylster) model, som er standardmodellen i Hugging Face-eksemplet. Se følgende kode:
Som vores HPO-metode bruger vi ASHA, som sampler hyperparameterkonfigurationer ensartet tilfældigt og iterativt stopper evalueringen af dårligt ydende konfigurationer. Selvom mere sofistikerede metoder bruger en probabilistisk model for den objektive funktion, såsom BO eller MoBster eksisterer, bruger vi ASHA til dette indlæg, fordi det kommer uden nogen antagelser om søgeområdet.
I den følgende figur sammenligner vi den relative forbedring i testfejl i forhold til Hugging Faces' standard hyperparameterkonfiguration.
For nemheds skyld begrænser vi sammenligningen til MRPC, COLA og STSB, men vi observerer også lignende forbedringer også for andre GLUE-datasæt. For hvert datasæt kører vi ASHA på en enkelt ml.g4dn.xlarge Amazon SageMaker instans med et kørselsbudget på 1,800 sekunder, hvilket svarer til henholdsvis cirka 13, 7 og 9 fuldfunktionsevalueringer på disse datasæt. For at tage højde for den iboende tilfældighed af træningsprocessen, for eksempel forårsaget af mini-batch-sampling, kører vi både ASHA og standardkonfigurationen for fem gentagelser med et uafhængigt frø til tilfældig talgeneratoren og rapporterer gennemsnittet og standardafvigelsen af relativ forbedring på tværs af gentagelserne. Vi kan se, at vi på tværs af alle datasæt faktisk kan forbedre den prædiktive ydeevne med 1-3 % i forhold til ydeevnen af den nøje udvalgte standardkonfiguration.
Automatiser valg af den fortrænede model
Vi kan bruge HPO til ikke kun at finde hyperparametre, men også automatisk vælge den rigtige præ-trænede model. Hvorfor vil vi gøre dette? Fordi ingen enkelt model klarer sig bedre på tværs af alle datasæt, er vi nødt til at vælge den rigtige model til et specifikt datasæt. For at demonstrere dette vurderer vi en række populære transformermodeller fra Hugging Face. For hvert datasæt rangerer vi hver model efter dens testydelse. Rangeringen på tværs af datasæt (se følgende figur) ændres og ikke én enkelt model, der scorer højest på hvert datasæt. Som reference viser vi også den absolutte testydelse for hver model og datasæt i den følgende figur.
For automatisk at vælge den rigtige model, kan vi caste valget af modellen som kategoriske parametre og tilføje dette til vores hyperparameter søgeområde:
Selvom søgerummet nu er større, betyder det ikke nødvendigvis, at det er sværere at optimere. Den følgende figur viser testfejlen for den bedst observerede konfiguration (baseret på valideringsfejlen) på MRPC-datasættet for ASHA over tid, når vi søger i det originale rum (blå linje) (med en BERT-baseret præ-trænet model ) eller i det nye udvidede søgeområde (orange linje). Med det samme budget er ASHA i stand til at finde en meget bedre ydende hyperparameterkonfiguration i det udvidede søgeområde end i det mindre rum.
Automatiser valg af instanstype
I praksis er vi måske ikke bare interesserede i at optimere prædiktiv ydeevne. Vi kan også bekymre os om andre mål, såsom træningstid, (dollar) omkostninger, latens eller retfærdighedsmålinger. Vi skal også træffe andre valg ud over modellens hyperparametre, for eksempel at vælge instanstypen.
Selvom instanstypen ikke har indflydelse på prædiktiv ydeevne, har den stor indflydelse på (dollar) omkostningerne, træningstiden og forsinkelsen. Det sidste bliver særligt vigtigt, når modellen implementeres. Vi kan formulere HPO som et multi-objektivt optimeringsproblem, hvor vi sigter mod at optimere flere mål samtidigt. Ingen enkelt løsning optimerer dog alle målinger på samme tid. I stedet sigter vi efter at finde et sæt konfigurationer, der optimalt afvejer det ene mål i forhold til det andet. Dette kaldes Pareto sæt.
For at analysere denne indstilling yderligere tilføjer vi valget af instanstypen som en ekstra kategorisk hyperparameter til vores søgeområde:
Vi anvender MO-ASHA, som tilpasser ASHA til multi-objektiv scenariet ved at bruge ikke-domineret sortering. I hver iteration vælger MO-ASHA også for hver konfiguration også den type instans, vi ønsker at evaluere den på. For at køre HPO på et heterogent sæt af instanser, leverer Syne Tune SageMaker-backend. Med denne backend bliver hvert forsøg evalueret som et uafhængigt SageMaker-træningsjob for sig selv. Antallet af arbejdere definerer, hvor mange SageMaker-job vi kører parallelt på et givet tidspunkt. Selve optimizeren, MO-ASHA i vores tilfælde, kører enten på den lokale maskine, en Sagemaker notesbog eller på et separat SageMaker træningsjob. Se følgende kode:
Følgende figurer viser latens vs testfejl til venstre og latenstid vs pris til højre for tilfældige konfigurationer, der er samplet af MO-ASHA (vi begrænser aksen for synlighed) på MRPC-datasættet efter at have kørt det i 10,800 sekunder på fire arbejdere. Farve angiver instanstypen. Den stiplede sorte linje repræsenterer Pareto-sættet, hvilket betyder det sæt af punkter, der dominerer alle andre punkter i mindst ét mål.
Vi kan observere en afvejning mellem latenstid og testfejl, hvilket betyder, at den bedste konfiguration med den laveste testfejl ikke opnår den laveste latenstid. Baseret på dine præferencer kan du vælge en hyperparameterkonfiguration, der ofrer testydelsen, men som kommer med en mindre latenstid. Vi ser også afvejningen mellem ventetid og omkostninger. Ved at bruge en mindre ml.g4dn.xlarge instans, for eksempel, øger vi kun marginalt latency, men betaler en fjerdedel af prisen på en ml.g4dn.8xlarge instans.
Konklusion
I dette indlæg diskuterede vi hyperparameteroptimering til finjustering af fortrænede transformermodeller fra Hugging Face baseret på Syne Tune. Vi så, at ved at optimere hyperparametre såsom indlæringshastighed, batchstørrelse og opvarmningsforhold, kan vi forbedre den omhyggeligt valgte standardkonfiguration. Vi kan også udvide dette ved automatisk at vælge den præ-trænede model via hyperparameteroptimering.
Ved hjælp af Syne Tunes SageMaker-backend kan vi behandle instanstypen som en hyperparameter. Selvom instanstypen ikke påvirker ydeevnen, har den en betydelig indflydelse på latens og omkostninger. Derfor, ved at caste HPO som et multi-objektiv optimeringsproblem, er vi i stand til at finde et sæt konfigurationer, der optimalt afvejer det ene mål i forhold til det andet. Hvis du vil prøve dette selv, så tjek vores eksempel notesbog.
Om forfatterne
Aaron Klein er en anvendt videnskabsmand ved AWS.
Matthias Seeger er Principal Applied Scientist hos AWS.
David Salinas er Sr Applied Scientist ved AWS.
Emily Webber sluttede sig til AWS lige efter SageMaker lancerede, og har forsøgt at fortælle verden om det lige siden! Ud over at bygge nye ML-oplevelser for kunder, nyder Emily at meditere og studere tibetansk buddhisme.
Cedric Archambeau er Principal Applied Scientist ved AWS og Fellow of European Lab for Learning and Intelligent Systems.
- Coinsmart. Europas bedste Bitcoin og Crypto Exchange.
- Platoblokkæde. Web3 Metaverse Intelligence. Viden forstærket. FRI ADGANG.
- CryptoHawk. Altcoin radar. Gratis prøveversion.
- Kilde: https://aws.amazon.com/blogs/machine-learning/hyperparameter-optimization-for-fine-tuning-pre-trained-transformer-models-from-hugging-face/
- "
- 10
- 100
- 7
- 9
- a
- Om
- absolutte
- tilgængelig
- Konto
- opnå
- tværs
- Yderligere
- påvirke
- Alle
- tillader
- Skønt
- Amazon
- beløb
- analyse
- analysere
- En anden
- api
- anvendt
- cirka
- arkitektur
- augmented
- automatisere
- automatisk
- gennemsnit
- AWS
- Axis
- fordi
- benchmark
- BEDSTE
- Bedre
- mellem
- Beyond
- Sort
- pin
- boost
- budget
- Bygning
- hvilken
- tilfælde
- forårsagede
- valg
- valg
- valgt
- klasse
- klassificering
- kode
- Kom
- sammenlignet
- Compute
- Konfiguration
- kontrol
- Kunder
- data
- afgørelser
- demonstrere
- indsætte
- indsat
- distribueret
- Er ikke
- Dollar
- hver
- nemt
- Effektiv
- europæisk
- evaluere
- evaluering
- eksempel
- Oplevelser
- ekspert
- udvide
- Ansigtet
- Mode
- Figur
- efter
- Framework
- fra
- fuld
- funktion
- yderligere
- Endvidere
- generator
- hjælpe
- link.
- Hvordan
- How To
- Men
- HTTPS
- KIMOs Succeshistorier
- vigtigt
- Forbedre
- Forøg
- uafhængig
- indflydelse
- instans
- Intelligent
- interesse
- IT
- selv
- Job
- Karriere
- sluttede
- viden
- lab
- Etiketter
- Sprog
- stor
- større
- lanceret
- Leads
- læring
- GRÆNSE
- Line (linje)
- lokale
- maskine
- lave
- maerker
- massive
- betyder
- metoder
- Metrics
- måske
- ML
- model
- modeller
- mere
- flere
- Natural
- nødvendigvis
- behov
- net
- notesbog
- nummer
- målsætninger
- opnået
- optimering
- Optimer
- optimering
- original
- Andet
- egen
- især
- Betal
- ydeevne
- udfører
- Vær venlig
- punkter
- Populær
- praksis
- Main
- Problem
- behandle
- forarbejdning
- giver
- rækkevidde
- Ranking
- indberette
- reporter
- Rapporter
- repræsenterer
- Kræver
- Resultater
- Kør
- kører
- samme
- Videnskabsmand
- Søg
- sekunder
- frø
- valgt
- stemningen
- sæt
- indstilling
- Vis
- signifikant
- lignende
- Simpelt
- enkelt
- Størrelse
- løsninger
- sofistikeret
- Space
- specifikke
- delt
- standard
- starte
- Tilstand
- Stadig
- Strategi
- Systemer
- opgaver
- prøve
- verdenen
- derfor
- tid
- handle
- Kurser
- behandle
- enorm
- retssag
- forståelse
- us
- brug
- brugere
- sædvanligvis
- udnytte
- validering
- synlighed
- Wikipedia
- uden
- arbejdere
- world
- Din