Stora uppmärksamhetsbaserade transformatormodeller har uppnått enorma vinster på naturlig språkbehandling (NLP). Men att träna dessa gigantiska nätverk från grunden kräver en enorm mängd data och beräkning. För mindre NLP-datauppsättningar är en enkel men effektiv strategi att använda en förtränad transformator, vanligtvis tränad på ett oövervakat sätt på mycket stora datauppsättningar, och finjustera den på datauppsättningen av intresse. Kramande ansikte upprätthåller en stor modellzoo av dessa förutbildade transformatorer och gör dem lättillgängliga även för nybörjare.
Men att finjustera dessa modeller kräver fortfarande expertkunskap, eftersom de är ganska känsliga för sina hyperparametrar, såsom inlärningshastighet eller batchstorlek. I det här inlägget visar vi hur man optimerar dessa hyperparametrar med ramverket med öppen källkod Syne Tune för distribuerad hyperparameteroptimering (HPO). Syne Tune låter oss hitta en bättre hyperparameterkonfiguration som uppnår en relativ förbättring mellan 1-4 % jämfört med standardhyperparametrar på populär LIM referensdatauppsättningar. Valet av den förtränade modellen i sig kan också betraktas som en hyperparameter och väljs därför automatiskt av Syne Tune. På ett textklassificeringsproblem leder detta till en ytterligare ökning av noggrannheten på cirka 5 % jämfört med standardmodellen. Däremot kan vi automatisera fler beslut som en användare behöver fatta; vi visar detta genom att även exponera typen av instans som en hyperparameter som vi senare använder för att distribuera modellen. Genom att välja rätt instanstyp kan vi hitta konfigurationer som optimalt balanserar kostnad och latens.
För en introduktion till Syne Tune, se Kör distribuerade hyperparameter- och neuralarkitekturjusteringar med Syne Tune.
Hyperparameteroptimering med Syne Tune
Vi kommer att använda LIM benchmark-svit, som består av nio datauppsättningar för naturliga språkförståelseuppgifter, såsom textigenkänning eller sentimentanalys. För det anpassar vi Hugging Face's run_glue.py träningsmanus. GLUE-datauppsättningar levereras med en fördefinierad utbildnings- och utvärderingsuppsättning med etiketter samt en uthållig testuppsättning utan etiketter. Därför delar vi upp träningsuppsättningen i en tränings- och valideringsuppsättning (70%/30% uppdelning) och använder utvärderingsuppsättningen som vår holdout-testdatauppsättning. Dessutom lägger vi till ytterligare en återuppringningsfunktion till Hugging Faces Trainer API som rapporterar valideringsprestanda efter varje epok tillbaka till Syne Tune. Se följande kod:
Vi börjar med att optimera typiska träningshyperparametrar: inlärningshastigheten, uppvärmningsförhållandet för att öka inlärningshastigheten och batchstorleken för att finjustera en förtränad BERT (bert-bas-hölje) modell, som är standardmodellen i exemplet Hugging Face. Se följande kod:
Som vår HPO-metod använder vi ASHA, som samplar hyperparameterkonfigurationer enhetligt slumpmässigt och iterativt stoppar utvärderingen av dåligt presterande konfigurationer. Även om mer sofistikerade metoder använder en probabilistisk modell av den objektiva funktionen, som BO eller MoBster existerar, använder vi ASHA för det här inlägget eftersom det kommer utan några antaganden om sökutrymmet.
I följande figur jämför vi den relativa förbättringen av testfel jämfört med Hugging Faces standardhyperparameterkonfiguration.
För enkelhetens skull begränsar vi jämförelsen till MRPC, COLA och STSB, men vi observerar också liknande förbättringar även för andra GLUE-datauppsättningar. För varje dataset kör vi ASHA på en enda ml.g4dn.xlarge Amazon SageMaker instans med en körtidsbudget på 1,800 13 sekunder, vilket motsvarar cirka 7, 9 respektive 1 fullfunktionsutvärderingar på dessa datamängder. För att ta hänsyn till den inneboende slumpmässigheten i utbildningsprocessen, till exempel orsakad av mini-batch-samplingen, kör vi både ASHA och standardkonfigurationen för fem repetitioner med ett oberoende frö för slumptalsgeneratorn och rapporterar genomsnittet och standardavvikelsen för relativ förbättring över repetitionerna. Vi kan se att vi, över alla datamängder, faktiskt kan förbättra den prediktiva prestandan med 3-XNUMX % i förhållande till prestandan för den noggrant utvalda standardkonfigurationen.
Automatisera valet av den förutbildade modellen
Vi kan använda HPO för att inte bara hitta hyperparametrar, utan även automatiskt välja rätt förtränad modell. Varför vill vi göra detta? Eftersom ingen enskild modell överträffar alla datauppsättningar måste vi välja rätt modell för en specifik datauppsättning. För att demonstrera detta utvärderar vi en rad populära transformatormodeller från Hugging Face. För varje datamängd rangordnar vi varje modell efter dess testprestanda. Rangordningen över datauppsättningar (se följande figur) ändras och inte en enda modell som får högst poäng på varje datauppsättning. Som referens visar vi också den absoluta testprestanda för varje modell och datauppsättning i följande figur.
För att automatiskt välja rätt modell kan vi använda valet av modellen som kategoriska parametrar och lägga till detta i vårt sökutrymme för hyperparameter:
Även om sökutrymmet nu är större, betyder det inte nödvändigtvis att det är svårare att optimera. Följande figur visar testfelet för den bäst observerade konfigurationen (baserat på valideringsfelet) på MRPC-datauppsättningen för ASHA över tid när vi söker i det ursprungliga utrymmet (blå linje) (med en BERT-baserad förtränad modell ) eller i det nya utökade sökutrymmet (orange linje). Med samma budget kan ASHA hitta en mycket bättre presterande hyperparameterkonfiguration i det utökade sökutrymmet än i det mindre utrymmet.
Automatisera val av instanstyp
I praktiken kanske vi inte bara bryr oss om att optimera prediktiv prestanda. Vi kanske också bryr oss om andra mål, såsom utbildningstid, (dollar) kostnad, latens eller rättvisa mätvärden. Vi måste också göra andra val utöver modellens hyperparametrar, till exempel att välja instanstyp.
Även om instanstypen inte påverkar prediktiv prestanda, påverkar den kraftigt (dollar-)kostnaden, träningstiden och latensen. Det senare blir särskilt viktigt när modellen används. Vi kan formulera HPO som ett multiobjektivt optimeringsproblem, där vi strävar efter att optimera flera mål samtidigt. Men ingen enskild lösning optimerar alla mätvärden samtidigt. Istället strävar vi efter att hitta en uppsättning konfigurationer som optimalt byter ut ett mål mot det andra. Detta kallas Pareto set.
För att analysera denna inställning ytterligare lägger vi till valet av instanstyp som en ytterligare kategorisk hyperparameter till vårt sökutrymme:
Vi använder MO-ASHA, som anpassar ASHA till multi-objektiv scenario genom att använda icke-dominerad sortering. I varje iteration väljer MO-ASHA även för varje konfiguration vilken typ av instans vi vill utvärdera den på. För att köra HPO på en heterogen uppsättning instanser tillhandahåller Syne Tune SageMaker-backend. Med denna backend utvärderas varje försök som ett oberoende SageMaker-utbildningsjobb på sin egen instans. Antalet arbetare definierar hur många SageMaker-jobb vi kör parallellt vid en given tidpunkt. Själva optimeraren, MO-ASHA i vårt fall, körs antingen på den lokala maskinen, en Sagemaker-anteckningsbok eller på ett separat SageMaker-utbildningsjobb. Se följande kod:
Följande figurer visar latens vs testfel till vänster och latens vs kostnad till höger för slumpmässiga konfigurationer samplade av MO-ASHA (vi begränsar axeln för synlighet) på MRPC-datauppsättningen efter att ha kört den i 10,800 XNUMX sekunder på fyra arbetare. Färg anger instanstypen. Den streckade svarta linjen representerar Pareto-uppsättningen, vilket betyder den uppsättning punkter som dominerar alla andra punkter i minst ett mål.
Vi kan observera en kompromiss mellan latens och testfel, vilket innebär att den bästa konfigurationen med det lägsta testfelet inte uppnår den lägsta latensen. Baserat på dina preferenser kan du välja en hyperparameterkonfiguration som offras på testprestanda men kommer med en mindre latens. Vi ser också avvägningen mellan latens och kostnad. Genom att använda en mindre ml.g4dn.xlarge-instans, till exempel, ökar vi bara marginellt latensen, men betalar en fjärdedel av kostnaden för en ml.g4dn.8xlarge-instans.
Slutsats
I det här inlägget diskuterade vi hyperparameteroptimering för finjustering av förtränade transformatormodeller från Hugging Face baserat på Syne Tune. Vi såg att genom att optimera hyperparametrar som inlärningshastighet, batchstorlek och uppvärmningsförhållande, kan vi förbättra den noggrant utvalda standardkonfigurationen. Vi kan också utöka detta genom att automatiskt välja den förtränade modellen via hyperparameteroptimering.
Med hjälp av Syne Tunes SageMaker-backend kan vi behandla instanstypen som en hyperparameter. Även om instanstypen inte påverkar prestandan har den en betydande inverkan på latensen och kostnaden. Därför, genom att gjuta HPO som ett optimeringsproblem med flera mål, kan vi hitta en uppsättning konfigurationer som optimalt byter ut det ena målet mot det andra. Om du vill prova detta själv, kolla in vår exempel anteckningsbok.
Om författarna
Aaron Klein är en tillämpad forskare vid AWS.
Matthias Seeger är Principal Applied Scientist vid AWS.
David Salinas är Sr Applied Scientist vid AWS.
Emily Webber gick med i AWS precis efter att SageMaker lanserades, och har försökt berätta för världen om det sedan dess! Förutom att bygga nya ML-upplevelser för kunder tycker Emily om att meditera och studera tibetansk buddhism.
Cedric Archambeau är en Principal Applied Scientist vid AWS och fellow vid European Lab for Learning and Intelligent Systems.
- Myntsmart. Europas bästa bitcoin- och kryptobörs.
- Platoblockchain. Web3 Metaverse Intelligence. Kunskap förstärkt. FRI TILLGÅNG.
- CryptoHawk. Altcoin radar. Gratis provperiod.
- Källa: 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 oss
- Absolut
- tillgänglig
- Konto
- Uppnå
- tvärs
- Annat
- påverka
- Alla
- tillåter
- Även
- amason
- mängd
- analys
- analysera
- Annan
- api
- tillämpas
- cirka
- arkitektur
- augmented
- automatisera
- automatiskt
- genomsnitt
- AWS
- Axis
- därför att
- riktmärke
- BÄST
- Bättre
- mellan
- Bortom
- Svart
- nål
- lyft
- budget
- Byggnad
- vilken
- Vid
- orsakas
- val
- val
- valda
- klass
- klassificering
- koda
- komma
- jämfört
- Compute
- konfiguration
- kontroll
- Kunder
- datum
- beslut
- demonstrera
- distribuera
- utplacerade
- distribueras
- inte
- Dollar
- varje
- lätt
- Effektiv
- Giltigt körkort
- utvärdera
- utvärdering
- exempel
- Erfarenheter
- expert
- förlänga
- Ansikte
- Mode
- Figur
- efter
- Ramverk
- från
- full
- fungera
- ytterligare
- Vidare
- Generatorn
- hjälpa
- här.
- Hur ser din drömresa ut
- How To
- Men
- HTTPS
- Inverkan
- med Esport
- förbättra
- förbättring
- Öka
- oberoende
- påverka
- exempel
- Intelligent
- intresse
- IT
- sig
- Jobb
- Lediga jobb
- fogade
- kunskap
- lab
- Etiketter
- språk
- Large
- större
- lanserades
- Leads
- inlärning
- BEGRÄNSA
- linje
- lokal
- Maskinen
- göra
- GÖR
- massiv
- betyder
- metoder
- Metrics
- kanske
- ML
- modell
- modeller
- mer
- multipel
- Natural
- nödvändigtvis
- behov
- nätverk
- anteckningsbok
- antal
- mål
- erhållna
- optimering
- Optimera
- optimera
- ursprungliga
- Övriga
- egen
- särskilt
- Betala
- prestanda
- utför
- snälla du
- poäng
- Populära
- praktiken
- Principal
- Problem
- process
- bearbetning
- ger
- område
- Rankning
- rapport
- reportern
- Rapport
- representerar
- Kräver
- Resultat
- Körning
- rinnande
- Samma
- Forskare
- Sök
- sekunder
- frö
- vald
- känsla
- in
- inställning
- show
- signifikant
- liknande
- Enkelt
- enda
- Storlek
- lösning
- sofistikerade
- Utrymme
- specifik
- delas
- standard
- starta
- Ange
- Fortfarande
- Strategi
- System
- uppgifter
- testa
- Smakämnen
- världen
- därför
- tid
- handla
- Utbildning
- behandla
- enorm
- rättegång
- förståelse
- us
- användning
- användare
- vanligen
- utnyttja
- godkännande
- synlighet
- wikipedia
- utan
- arbetare
- världen
- Din