Artificiell intelligens
LoRa, QLoRA och QA-LoRA: Effektiv anpassningsförmåga i stora språkmodeller genom låg-rankad matrisfaktorisering

Large Language Models (LLMs) har skapat en unik nisch som erbjuder oöverträffade möjligheter att förstå och generera människoliknande text. Kraften hos LLM kan spåras tillbaka till deras enorma storlek, som ofta har miljarder parametrar. Även om denna enorma skala ger energi till deras prestanda, föder den samtidigt utmaningar, särskilt när det kommer till modellanpassning för specifika uppgifter eller domäner. De konventionella vägarna för att hantera LLM:er, som att finjustera alla parametrar, uppvisar en tung beräknings- och finansiell avgift, vilket utgör ett betydande hinder för deras utbredda användning i verkliga tillämpningar.
I en tidigare artikel, grävde vi i finjustering av stora språkmodeller (LLM) för att skräddarsy dem efter specifika krav. Vi utforskade olika finjusteringsmetoder som instruktionsbaserad finjustering, enkeluppgiftsfinjustering och Parameter Efficient Fine-Tuning (PEFT), var och en med sitt unika tillvägagångssätt för att optimera LLM:er för distinkta uppgifter. Centralt i diskussionen var transformatorarkitekturen, ryggraden i LLM:er och utmaningarna från beräknings- och minneskraven för att hantera ett stort antal parametrar under finjustering.
Bilden ovan representerar skalan för olika stora språkmodeller, sorterade efter deras antal parametrar. I synnerhet: Handflatan, BLOMMA, och så vidare
Från och med i år har det skett framsteg som lett till ännu mycket större modeller. Att justera sådana gigantiska modeller med öppen källkod på standardsystem är dock omöjligt utan specialiserade optimeringstekniker.
Enter Low-Rank Adaptation (LoRA) introducerades av Microsoft i detta papper, som syftar till att mildra dessa utmaningar och göra LLM mer tillgängliga och anpassningsbara.
Kärnan i LoRA ligger i dess inställning till modellanpassning utan att fördjupa sig i krångligheterna med att träna om hela modellen. Till skillnad från traditionell finjustering, där varje parameter kan ändras, antar LoRA en smartare väg. Den fryser de förtränade modellvikterna och introducerar träningsbara ranknedbrytningsmatriser i varje lager av transformatorarkitekturen. Detta tillvägagångssätt minskar drastiskt antalet inlärningsbara parametrar, vilket säkerställer en mer effektiv anpassningsprocess.
Utvecklingen av LLM-tuningstrategier
Genom att reflektera över resan med LLM-inställning kan man identifiera flera strategier som använts av utövare under åren. Inledningsvis låg fokus på att finjustera de förtränade modellerna, en strategi som innebär en omfattande ändring av modellparametrar för att passa den specifika uppgiften. Men i takt med att modellerna växte i storlek och komplexitet, ökade även beräkningskraven för detta tillvägagångssätt.
Nästa strategi som fick dragkraft var finjustering av subset, en mer återhållsam version av sin föregångare. Här finjusteras endast en delmängd av modellens parametrar, vilket minskar beräkningsbördan till viss del. Trots dess fördelar kunde finjustering av undergrupper fortfarande inte hålla jämna steg med tillväxttakten i storleken på LLM.
När utövare vågade utforska mer effektiva vägar, uppstod full finjustering som ett rigoröst men ändå givande tillvägagångssätt.
Introduktion till LoRA
Rangen på en matris ger oss en inblick i dimensionerna som skapas av dess kolumner, som bestäms av antalet unika rader eller kolumner den har.
- Full-Rank Matrix: Dess rankning matchar det lägsta numret mellan dess rader eller kolumner.
- Lågrankad matris: Med en rankning som är avsevärt lägre än både rad- och kolumnantal, fångar den färre funktioner.
Nu förstår stora modeller en bred förståelse av sin domän, som språk i språkmodeller. Men att finjustera dem för specifika uppgifter behöver ofta bara belysa en liten del av dessa förståelser. Här lyser LoRA. Det tyder på att matrisen som visar dessa viktjusteringar kan vara en låg rankad, och därmed fånga färre funktioner.
LoRA begränsar smart rankningen av denna uppdateringsmatris genom att dela upp den i två mindre rankmatriser. Så istället för att ändra hela viktmatrisen ändrar den bara en del av den, vilket gör finjusteringsuppgiften mer effektiv.
Tillämpa LoRA på transformatorer
LoRA hjälper till att minimera träningsbelastningen i neurala nätverk genom att fokusera på specifika viktmatriser. Under transformatorarkitektur är vissa viktmatriser kopplade till självuppmärksamhetsmekanismen, nämligen Wq, Wk, Wv och Wo, förutom två till i Multi-Layer Perceptron (MLP)-modulen.
Matematisk förklaring behing LoRA
Låt oss bryta ner matematiken bakom LoRA:
- Förtränad viktmatris :
- Det börjar med en förtränad viktmatris av dimensioner . Detta betyder att matrisen har rader och kolumner.
- Nedbrytning av låg rang:
- Istället för att direkt uppdatera hela matrisen , vilket kan vara beräkningsmässigt dyrt, föreslår metoden en nedbrytningsmetod med låg rangordning.
- Uppdateringen till kan representeras som en produkt av två matriser: och .
- har dimensioner
- har dimensioner
- Det viktiga här är att rangen är mycket mindre än båda och , vilket möjliggör en mer beräkningseffektiv representation.
- Utbildning:
- Under utbildningsprocessen, förblir oförändrad. Detta kallas för att "frysa" vikterna.
- Å andra sidan, och är de träningsbara parametrarna. Det innebär att man under träningen gör justeringar av matriserna och för att förbättra modellens prestanda.
- Multiplikation och addition:
- Både och uppdateringen (som är produkten av och ) multipliceras med samma indata (betecknas som ).
- Utgångarna från dessa multiplikationer adderas sedan.
- Denna process sammanfattas i ekvationen: Här, representerar den slutliga utmatningen efter applicering av uppdateringarna på ingången .
Kort sagt, den här metoden möjliggör ett mer effektivt sätt att uppdatera en stor viktmatris genom att representera uppdateringarna med en nedbrytning av låg rangordning, vilket kan vara fördelaktigt när det gäller beräkningseffektivitet och minnesanvändning.
Initiering och skalning:
När vi tränar modeller, hur vi initialiserar parametrarna kan avsevärt påverka effektiviteten och effektiviteten i inlärningsprocessen. I samband med vår viktmatrisuppdatering med hjälp av och :
- Initialisering av matriser och :
- Matris : Denna matris initieras med slumpmässiga gaussiska värden, även känd som en normalfördelning. Grunden bakom att använda Gaussisk initiering är att bryta symmetrin: olika neuroner i samma lager kommer att lära sig olika egenskaper när de har olika initialvikt.
- Matris : Denna matris initieras med nollor. Genom att göra detta, uppdateringen börjar som noll i början av träningen. Det säkerställer att det inte sker någon plötslig förändring i modellens beteende i början, vilket gör att modellen gradvis kan anpassa sig allteftersom lär sig lämpliga värderingar under träningen.
- Skala utdata från :
- Efter att ha beräknat uppdateringen , skalas dess produktion med en faktor på var är en konstant. Genom skalning styrs storleken på uppdateringarna.
- Skalningen är särskilt avgörande när rangen ändringar. Om du till exempel bestämmer dig för att öka rankningen för mer noggrannhet (på bekostnad av beräkning), säkerställer skalningen att du inte behöver justera många andra hyperparametrar i processen. Det ger en nivå av stabilitet till modellen.
LoRAs praktiska inverkan
LoRA har visat sin potential att ställa in LLM till specifika konstnärliga stilar effektivt av människor från AI-gemenskapen. Detta visades särskilt i anpassningen av en modell för att efterlikna den konstnärliga stilen Greg Rutkowski.
Lika högt i tidningen med GPT-3 175B som exempel. Att ha individuella instanser av finjusterade modeller med vardera 175B parametrar är ganska kostsamt. Men med LoRA sjunker de inlärningsbara parametrarna med 10,000 XNUMX gånger och GPU-minnesanvändningen trimmas ner till en tredjedel.
LoRA-metoden förkroppsligar inte bara ett betydande steg mot att göra LLM mer tillgängliga utan understryker också potentialen att överbrygga gapet mellan teoretiska framsteg och praktiska tillämpningar inom AI-domänen. Genom att lindra beräkningshindren och främja en effektivare modellanpassningsprocess är LoRA redo att spela en avgörande roll i den bredare adoptionen och distributionen av LLM i verkliga scenarier.
QLoRA (kvantiserad)
Även om LoRA är en spelväxlare när det gäller att minska lagringsbehoven, kräver den fortfarande en rejäl GPU för att ladda modellen för träning. Här går QLoRA, eller Quantized LoRA, in och blandar LoRA med Quantization för ett smartare tillvägagångssätt.
Normalt lagras viktparametrar i ett 32-bitars format (FP32), vilket innebär att varje element i matrisen tar upp 32 bitars utrymme. Tänk om vi kunde pressa in samma information till bara 8 eller till och med 4 bitar. Det är kärntanken bakom QLoRA. Kvantisering hänvisar till processen att kartlägga kontinuerliga oändliga värden till en mindre uppsättning diskreta ändliga värden. I samband med LLM hänvisar det till processen att konvertera modellens vikter från datatyper med högre precision till lägre precision.
Här är en enklare uppdelning av QLoRA:
- Initial kvantisering: För det första kvantiseras Large Language Model (LLM) ner till 4 bitar, vilket avsevärt minskar minnesfotavtrycket.
- LoRA utbildning: Sedan utförs LoRA-träning, men i standard 32-bitars precision (FP32).
Nu kanske du undrar, varför gå tillbaka till 32 bitar för träning efter att ha krympt ner till 4 bitar? Tja, för att effektivt träna LoRA-adaptrar i FP32 måste modellvikterna också återgå till FP32. Denna växling fram och tillbaka görs på ett smart, steg-för-steg-sätt för att undvika att överväldiga GPU-minnet.
LoRA hittar sin praktiska tillämpning i Hugging Face Parameter Effektiv finjustering (PEFT) bibliotek, vilket förenklar dess användning. För dem som vill använda QLoRA är det tillgängligt genom en kombination av bitsandbyte och PEFT-bibliotek. Dessutom HuggingFace Transformer Reinforcement Learning (TRL) bibliotek underlättar övervakad finjustering med ett integrerat stöd för LoRA. Tillsammans tillhandahåller dessa tre bibliotek den viktiga verktygslådan för att finjustera en utvald förutbildad modell, vilket möjliggör generering av övertygande och sammanhängande produktbeskrivningar när du uppmanas med specifika attributinstruktioner.
Efter finjustering från QLoRA måste vikterna återgå till ett högprecisionsformat, vilket kan leda till precisionsförlust och saknar optimering för att påskynda processen.
En föreslagen lösning är att gruppera viktmatrisen i mindre segment och tillämpa kvantisering och lågrankad anpassning till varje grupp individuellt. En ny metod, heter QA-LoRA, försöker blanda fördelarna med kvantisering och lågrankad anpassning samtidigt som processen är effektiv och modellen effektiv för de önskade uppgifterna.
Slutsats
I den här artikeln berörde vi de utmaningar som deras enorma parameterstorlek utgör. Vi fördjupade oss i traditionella finjusteringsmetoder och deras tillhörande beräknings- och ekonomiska krav. Kärnan i LoRA ligger i dess förmåga att modifiera förtränade modeller utan att helt omskola dem, och därigenom minska de träningsbara parametrarna och göra anpassningsprocessen mer kostnadseffektiv.
Vi fördjupade oss också kort i Quantized LoRA (QLoRA), en blandning av LoRA och Quantization som minskar modellens minnesfotavtryck samtidigt som den nödvändiga precisionen för träningen bibehålls. Med dessa avancerade tekniker är utövare nu utrustade med ett robust bibliotek, vilket underlättar antagandet och distributionen av LLM:er över ett spektrum av verkliga scenarier.
Dessa strategier är utformade för att balansera mellan att göra LLM:er anpassningsbara för specifika uppgifter och att säkerställa att finjusterings- och distributionsprocesserna inte är alltför krävande när det gäller beräknings- och lagringsresurser.