AI-modeller och plattformar
LoRa, QLoRA och QA-LoRA: Effektiv anpassning i stora språkmodeller genom låg-rankmatrisfaktorisering
Stora språkmodeller (LLM) har skapat en unik nisch och erbjuder enastående förmågor att förstå och generera mänsklig text. Styrkan i LLM ligger i deras enorma storlek, ofta med miljarder parametrar. Medan denna enorma skala driver deras prestanda, föder den också utmaningar, särskilt när det gäller modellanpassning för specifika uppgifter eller domäner. De traditionella metoderna för att hantera LLM, som finjustering av alla parametrar, presenterar en tung beräkningsmässig och ekonomisk börda, vilket utgör ett betydande hinder för deras breda antagande i realvärldens tillämpningar.
I en tidigare artikel gick vi igenom finjustering av stora språkmodeller (LLM) för att anpassa dem till specifika krav. Vi undersökte olika finjusteringsmetoder, såsom instruktionsbaserad finjustering, enkelt uppgiftsfinjustering och parameter-effektiv finjustering (PEFT), var och en med sin unika tillvägagångssätt för att optimera LLM för olika uppgifter. Centralt för diskussionen var transformer-arkitekturen, ryggraden i LLM, och de utmaningar som orsakades av de beräkningsmässiga och minneskraven för att hantera ett stort antal parametrar under finjustering.
Bilden ovan representerar storleken på olika stora språkmodeller, sorterade efter antalet parametrar. Noterbart: PaLM, BLOOM etc.
Sedan i år har det funnits framsteg som lett till ännu större modeller. Men att justera sådana enorma, öppen källkodsmodeller på standard system är inte möjligt utan specialiserade optimeringstekniker.
Det är här Låg-rank anpassning (LoRA) introducerades av Microsoft (MSFT ) i denna artikel, i syfte att mildra dessa utmaningar och göra LLM mer tillgängliga och anpassningsbara.
Kärnan i LoRA ligger i dess tillvägagångssätt för modellanpassning utan att gå in på detaljerna i omträning av hela modellen. Till skillnad från traditionell finjustering, där varje parameter är föremål för ändring, använder LoRA en smartare väg. Den fryser de förtränade modellvikterna och introducerar tränbara rangdekompositionsmatriser i varje lager av transformerarkitekturen. Detta tillvägagångssätt minskar drastiskt antalet tränbara parametrar, vilket säkerställer en mer effektiv anpassningsprocess.
Utvecklingen av LLM-justeringsstrategier
När man ser tillbaka på resan för LLM-justering kan man identifiera flera strategier som praktiker har använt sig av under åren. Initialt var fokus på finjustering av förtränade modeller, en strategi som innebär en omfattande ändring av modellparametrar för att passa den specifika uppgiften. Men när modellerna växte i storlek och komplexitet, ökade också de beräkningsmässiga kraven för denna strategi.
Nästa strategi som fick uppmärksamhet var delmängdjustering, en mer återhållsam version av sin föregångare. Här justeras endast en delmängd av modellens parametrar, vilket minskar de beräkningsmässiga kraven något. Trots dess fördelar kunde delmängdjustering inte hänga med i tillväxten av LLM-storlek.
När praktiker försökte utforska mer effektiva vägar, uppstod fullständig finjustering som en rigorös men belönande strategi.
Introduktion till LoRA
Rangen för en matris ger oss en glimt av dimensionerna som skapas av dess kolumner, som bestäms av antalet unika rader eller kolumner den har.
- Full-rank matris: Dess rang matchar det mindre antalet mellan dess rader eller kolumner.
- Låg-rank matris: Med en rang som är betydligt mindre än både dess rad- och kolumnantal, fångar den färre funktioner.
Stora modeller har en bred förståelse av sin domän, som språk i språkmodeller. Men att finjustera dem för specifika uppgifter kräver ofta bara att man belyser en liten del av dessa förståelser. Här lyser LoRA. Det föreslår att matrisen som visar dessa viktsjusteringar kan vara en låg-rank matris, vilket fångar färre funktioner.
LoRA begränsar smart rangen för denna uppdateringsmatris genom att dela den i två mindre rangmatriser. Så istället för att ändra hela viktsmatrisen, ändras bara en del av den, vilket gör finjusteringsuppgiften mer effektiv.
Tillämpning av LoRA på transformer
LoRA hjälper till att minimera träningsbördan i neurala nätverk genom att fokusera på specifika viktsmatriser. Under transformerarkitekturen är vissa viktsmatriser kopplade till självuppmärksamhetsmekanismen, nämligen Wq, Wk, Wv och Wo, samt två fler i multi-lagerperceptron (MLP)-modulen.
Matematisk förklaring bakom LoRA
Låt oss bryta ner matematiken bakom LoRA:
- Förtränad viktsmatris :
- Den börjar med en förtränad viktsmatris av dimensioner . Detta betyder att matrisen har rader och kolumner.
- Låg-rank dekomposition:
- Istället för att direkt uppdatera hela matrisen , som kan vara beräkningsmässigt dyrt, föreslår metoden en låg-rank dekompositionstillvägagångssätt.
- Uppdateringen till kan representeras som en produkt av två matriser: och .
- har dimensioner
- har dimensioner
- Den viktiga punkten här är att rangen är mycket mindre än både och , vilket möjliggör en mer beräkningsmässigt effektiv representation.
- Träning:
- Under träningsprocessen förblir oförändrad. Detta kallas “frysning” av vikterna.
- och är de tränbara parametrarna. Detta betyder att under träningsprocessen görs justeringar av matriserna och för att förbättra modellens prestanda.
- Multiplication och addition:
- Både och uppdateringen (som är produkten av och ) multipliceras med samma ingång (betecknad som ).
- Utdata från dessa multiplikationer adderas sedan.
- Denna process sammanfattas i ekvationen: Här representerar den slutliga utdatan efter att uppdateringarna har tillämpats på ingången .
I korthet tillåter denna metod en mer effektiv väg att uppdatera en stor viktsmatris genom att representera uppdateringarna med en låg-rank dekomposition, vilket kan vara fördelaktigt i termer av beräkningsmässig effektivitet och minnesanvändning.
Initiering och skalning:
När modeller tränas kan initieringen av parametrarna ha en betydande inverkan på effektiviteten och effekterna av inlärningsprocessen. I sammanhanget med vår viktsmatrisuppdatering med och :
- Initiering av matriser och :
- Matris : Denna matris initieras med slumpmässiga Gaussiska värden, även känd som en normalfördelning. Rationalet bakom att använda Gaussisk initiering är att bryta symmetrin: olika neuroner i samma lager kommer att lära sig olika funktioner när de har olika initialvärden.
- Matris : Denna matris initieras med nollor. Genom att göra detta startar uppdateringen som noll i början av träningsprocessen. Det säkerställer att det inte sker någon plötslig förändring i modellens beteende i början, vilket tillåter modellen att gradvis anpassa sig när lär sig lämpliga värden under träningsprocessen.
- Skalning av utdatat från :
- Efter beräkning av uppdateringen , skalas dess utdata med en faktor av där är en konstant. Genom skalning kontrolleras storleken på uppdateringarna.
- Skalningen är särskilt viktig när rangen ändras. Till exempel, om du bestämmer dig för att öka rangen för mer exakthet (till priset av beräkningar), säkerställer skalningen att du inte behöver justera många andra hyperparametrar i processen. Det ger en viss stabilitet till modellen.
LoRAs praktiska påverkan
LoRA har visat sin potential att anpassa LLM till specifika konstnärliga stilar effektivt av personer inom AI-gemenskapen. Detta visades särskilt i anpassningen av en modell för att efterlikna den konstnärliga stilen hos Greg Rutkowski.
LoRA-metodiken inte bara utgör ett betydande steg mot att göra LLM mer tillgängliga, utan den understryker också potentialen att överbrygga gapet mellan teoretiska framsteg och praktiska tillämpningar inom AI-området. Genom att lindra de beräkningsmässiga hindren och främja en mer effektiv modellanpassningsprocess, är LoRA redo att spela en avgörande roll i den bredare antagandet och distributionen av LLM i realvärldsscenarier.
QLoRA (Kvantiserad)
Medan LoRA är en spelväxlare i att minska lagringsbehoven, kräver den fortfarande en kraftfull GPU för att ladda modellen för träningsprocessen. Här kommer QLoRA, eller Kvantiserad LoRA, som kombinerar LoRA med kvantisering för en smartare strategi.
Normalt lagras viktparametrar i ett 32-bitarsformat (FP32), vilket innebär att varje element i matrisen tar upp 32 bitar av utrymme. Tänk om vi kunde komprimera samma information till bara 8 eller till och med 4 bitar. Det är kärnan i QLoRA. Kvantisering refererar till processen att mappa kontinuerliga oändliga värden till en mindre uppsättning diskreta ändliga värden. I sammanhanget med LLM refererar det till processen att konvertera modellens vikter från högre precisionstyper till lägre precisionstyper.
Här är en enklare sammanfattning av QLoRA:
- Inledande kvantisering: Först kvantiseras den stora språkmodellen (LLM) ned till 4 bitar, vilket betydligt minskar minnesavtrycket.
- LoRA-träning: Därefter utförs LoRA-träning, men i standard 32-bitars precision (FP32).
Nu undrar du kanske varför man återgår till 32 bitar för träning efter att ha krympt ner till 4 bitar? Jo, för att effektivt träna LoRA-adapter i FP32, måste modellvikterna också återgå till FP32. Denna växling fram och tillbaka görs på ett smart, stegvis sätt för att undvika att överbelasta GPU-minnet.
LoRA hittar sin praktiska tillämpning i Hugging Faces Parameter Efficient Fine-Tuning (PEFT) bibliotek, vilket förenklar dess användning. För de som vill använda QLoRA är det tillgängligt genom en kombination av bitsandbytes och PEFT-biblioteken. Dessutom underlättar HuggingFace Transformer Reinforcement Learning (TRL) biblioteket övervakad finjustering med integrerat stöd för LoRA. Tillsammans utgör dessa tre bibliotek det väsentliga verktyget för finjustering av en vald förtränad modell, vilket möjliggör generering av övertygande och sammanhängande produktsbeskrivningar när de tillfrågas med specifika attributinstruktioner.
Efter finjustering från QLoRA måste vikterna återgå till ett högprecisionsformat, vilket kan leda till förlust av exakthet och saknar optimering för att påskynda processen.
En föreslagen lösning är att gruppera viktsmatrisen i mindre segment och tillämpa kvantisering och låg-rank anpassning på varje grupp individuellt. En ny metod, kallad QA-LoRA, försöker kombinera fördelarna med kvantisering och låg-rank anpassning samtidigt som den håller processen effektiv och modellen effektiv för de önskade uppgifterna.
Slutsats
I denna artikel berörde vi utmaningarna som orsakas av deras enorma storlek. Vi gick igenom traditionella finjusteringspraxis och deras associerade beräkningsmässiga och ekonomiska krav. Kärnan i LoRA ligger i dess förmåga att modifiera förtränade modeller utan att omträna dem helt, vilket minskar de tränbara parametrarna och gör anpassningsprocessen mer kostnadseffektiv.
Vi berörde också Kvantiserad LoRA (QLoRA), en kombination av LoRA och kvantisering som minskar modellens minnesavtryck samtidigt som den behåller den nödvändiga precisionen för träning. Med dessa avancerade tekniker är praktiker nu utrustade med robusta bibliotek, vilket underlättar en enklare antagande och distribution av LLM i en bred spektrum av realvärldsscenarier.
Dessa strategier är utformade för att balansera mellan att göra LLM anpassningsbara för specifika uppgifter och säkerställa att finjusterings- och distributionsprocesserna inte är alltför krävande i termer av beräkning och lagringsresurser.




















