AI-modeller og plattformer
LoRa, QLoRA og QA-LoRA: Effektiv tilpasning i store språkmodeller gjennom lav-rang matrisefaktorisering
Store språkmodeller (LLM) har skapt en unik nisje, og tilbyr utenfor sammenligning evner i å forstå og generere menneske-lignende tekst. Kraften til LLM kan spores tilbake til deres enorme størrelse, ofte med milliarder av parametre. Mens denne enorme skalaen driver deres ytelse, føder det også frem utfordringer, spesielt når det gjelder modelltilpasning for bestemte oppgaver eller domener. De konvensjonelle metodene for å håndtere LLM, som f.eks. finjustering av alle parametre, presenterer en tung beregnings- og finansiell byrde, og utgjør derfor en betydelig barriere for deres vidstrakte anvendelse i virkelige anvendelser.
I en tidligere artikkel, dykket vi ned i finjustering av store språkmodeller (LLM) for å tilpasse dem til bestemte krav. Vi utforsket ulike finjusteringsmetoder, som instruksjonsbasert finjustering, enkelt-oppgave finjustering og parameter-effektiv finjustering (PEFT), hver med sin unike tilnærming til å optimalisere LLM for ulike oppgaver. Sentral i diskusjonen var transformer-arkitekturen, ryggraden i LLM, og utfordringene som ble presentert av de beregnings- og minneskravene til å håndtere et stort antall parametre under finjustering.
Bildet over representerer skalaen av ulike store språkmodeller, sorteret etter antall parametre. Merkverdig: PaLM, BLOOM, osv.
Som dette året, har det vært fremsteg som har ført til enda større modeller. Likevel, å justere slike gigantiske, åpne modeller på standard systemer er urealistisk uten spesialiserte optimeringsteknikker.
Low-Rank Adaptation (LoRA) ble introdusert av Microsoft (MSFT ) i dette papiret, med mål om å mildne disse utfordringene og gjøre LLM mer tilgjengelig og tilpassbar.
Kjernen i LoRA ligger i dens tilnærming til modelltilpasning uten å gå inn i detaljene til å trene hele modellen. I motsetning til tradisjonell finjustering, hvor hver parameter er underlagt endring, bruker LoRA en smartere rute. Den fryser de forhåndstrente vekttallene og introduserer trenebare rang-dekomposisjonsmatriser i hver lag av transformer-arkitekturen. Dette tilnærmingen reduserer dramatisk antall trenebare parametre, og sikrer en mer effektiv tilpasningsprosess.
Utviklingen av LLM-justeringsstrategier
Når vi ser tilbake på reisen til LLM-justering, kan vi identifisere flere strategier som er blitt brukt av praktikere over årene. Først var fokuset på finjustering av forhåndstrente modeller, en strategi som innebærer en omfattende endring av modellparametre for å tilpasse seg den bestemte oppgaven. Likevel, da modellene vokste i størrelse og kompleksitet, økte også de beregningsmessige kravene til denne tilnærmingen.
Neste strategi som fikk oppmerksomhet var subset finjustering, en mer begrenset versjon av sin forgjenger. Her blir bare en delmengde av modellens parametre finjustert, og reduserer dermed de beregningsmessige kravene noe. Likevel, kunne subset finjustering ikke holde tritt med veksten i størrelse av LLM.
Da praktikere forsøkte å utforske mer effektive veier, oppstod full finjustering som en rigorøs, men belønning gir tilnærming.
Introduksjon til LoRA
Rangen til en matrise gir oss et glimt inn i dimensjonene skapt av dens kolonner, og bestemmes av antall unike rader eller kolonner den har.
- Full-rang matrise: Rangen matcher den mindre verdien mellom radene eller kolonnene.
- Lav-rang matrise: Med en rang som er betydelig mindre enn både rad- og kolonnantallet, fanger den færre trekk.
Nå, store modeller har en bred forståelse av sitt domene, som språk i språkmodeller. Men, finjustering av dem for bestemte oppgaver krever ofte bare å høydepunkte en liten del av disse forståelsene. Her er LoRA skinner. Den foreslår at matrisen som viser disse vekttallendringene kan være en lav-rang matrise, og dermed fange færre trekk.
LoRA begrenser smart rangen til denne oppdateringsmatrisen ved å splitte den i to mindre rangmatriser. Så, i stedet for å endre hele vekttallmatrisen, endrer den bare en del av den, og gjør dermed finjusteringsoppgaven mer effektiv.
LoRA på Transformers
LoRA hjelper med å minimere treningens belastning i neurale nettverk ved å fokusere på bestemte vekttallmatriser. Under transformer-arkitekturen er bestemte vekttallmatriser koblet til selv-oppmerksomhetsmekanismen, nemlig Wq, Wk, Wv og Wo, samt to flere i Multi-Layer Perceptron (MLP)-modulen.
Matematisk forklaring bak LoRA
La oss bryte ned matematikken bak LoRA:
- Forhåndstrente vekttallmatrise :
- Den starter med en forhåndstrente vekttallmatrise av dimensjoner . Dette betyr at matrisen har rader og kolonner.
- Lav-rang dekomposisjon:
- I stedet for å direkte oppdatere hele matrisen , som kan være beregningsmessig dyrt, foreslår metoden en lav-rang dekomposisjons tilnærming.
- Oppdateringen til kan representeres som en produkt av to matriser: og .
- har dimensjoner
- har dimensjoner
- Den viktigste punkten her er at rangen er mye mindre enn både og , noe som tillater en mer beregningsmessig effektiv representasjon.
- Trening:
- Under trening, forblir uendret. Dette kalles “frysing” av vekttallene.
- På den andre siden, er og de trenebare parameterne. Dette betyr at, under trening, justeringer gjøres til matrisene og for å forbedre modellens ytelse.
- Multiplikasjon og addisjon:
- Både og oppdateringen (som er produktet av og ) multipliseres med samme innputt (betegnet som ).
- Utdataene fra disse multiplikasjonene legges sammen.
- Dette prosessen summeres i ligningen: Her representerer den endelige utdata etter å ha anvendt oppdateringene til innputt .
Kort sagt, denne metoden tillater en mer effektiv måte å oppdatere en stor vekttallmatrise ved å representere oppdateringene ved hjelp av en lav-rang dekomposisjon, noe som kan være gunstig i forhold til beregningsmessig effektivitet og minnebruk.
Initialisering og skala:
Når vi trener modeller, kan måten vi initialiserer parameterne påvirke effektiviteten og effekten av læreprosessen. I sammenheng med vår vekttallmatriseoppdatering ved hjelp av og :
- Initialisering av matriser og :
- Matrise : Denne matrisen initialiseres med tilfeldige gaussiske verdier, også kjent som en normalfordeling. Grunnen til å bruke gaussisk initialisering er å bryte symmetrien: forskjellige nerver i samme lag vil lære forskjellige trekk når de har forskjellige initialvekter.
- Matrise : Denne matrisen initialiseres med nuller. Ved å gjøre dette, starter oppdateringen som null i begynnelsen av treningen. Det sikrer at det ikke er noen plutselig endring i modellens atferd i begynnelsen, og lar modellen tilpasse seg gradvis etterhvert som lærer passende verdier under trening.
- Skala utdata fra :
- Efter å ha beregnet oppdateringen , skaleres utdataene med en faktor av hvor er en konstant. Ved å skala, kontrolleres størrelsen på oppdateringene.
- Skaleringen er spesielt viktig når rangen endres. For eksempel, hvis du bestemmer deg for å øke rangen for mer nøyaktighet (til en pris av beregning), sikrer skaleringen at du ikke trenger å justere mange andre hyperparametere i prosessen. Det gir en viss stabilitet til modellen.
LoRA sin praktiske påvirkning
LoRA har demonstrert sin potensiale til å justere LLM til bestemte kunstneriske stiler effektivt av personer fra AI-samfunnet. Dette ble vist i tilpasningen av en modell til å etterligne den kunstneriske stilen til Greg Rutkowski.
LoRA-metodologien ikke bare representerer et betydelig skritt mot å gjøre LLM mer tilgjengelig, men understreker også potensialet til å brygge gapet mellom teoretiske fremsteg og praktiske anvendelser i AI-domene. Ved å mildne de beregningsmessige hindringene og fremme en mer effektiv modelltilpasningsprosess, er LoRA godt posisjonert til å spille en avgjørende rolle i den videre anvendelsen og utrullingen av LLM i virkelige scenarier.
QLoRA (Kvantifisert)
Mens LoRA er en game-changer i å redusere lagringsbehov, krever det fortsatt en kraftig GPU for å laste modellen for trening. Her kommer QLoRA, eller Kvantifisert LoRA, inn, som en blanding av LoRA og kvantisering for en smartere tilnærming.
Vanligvis lagres vekttallparametre i en 32-bits format (FP32), noe betyr at hver element i matrisen tar opp 32 biter plass. Tenk hvis vi kunne komprimere samme informasjon til bare 8 eller til og med 4 biter. Det er kjerneideen bak QLoRA. Kvantifisering refererer til prosessen med å kartlegge kontinuerlige, uendelige verdier til en mindre mengde diskrete, endelige verdier. I sammenheng med LLM, refererer det til prosessen med å konvertere vekttallene til modellen fra høyere presisjonsdatatyper til lavere presisjonsdatatyper.
Her er en enklere forklaring av QLoRA:
- Initial kvantisering: Først kvantiseres den store språkmodellen (LLM) ned til 4 biter, noe som reduserer minneavtrykket betydelig.
- LoRA-trening: Deretter utføres LoRA-trening, men i standard 32-bits presisjon (FP32).
Nå kan du lure på hvorfor gå tilbake til 32 biter for trening etter å ha komprimert ned til 4 biter? Vel, for å kunne trene LoRA-adaptere effektivt i FP32, må modellvekttallene også gå tilbake til FP32. Denne skifte frem og tilbake gjøres på en smart, stegvis måte for å unngå å overbelaste GPU-minnet.
LoRA finner sin praktiske anvendelse i Hugging Face Parameter Efficient Fine-Tuning (PEFT)-biblioteket, noe som forenkler dens anvendelse. For de som ønsker å bruke QLoRA, er det tilgjengelig gjennom en kombinasjon av bitsandbytes og PEFT-bibliotekene. I tillegg støtter HuggingFace Transformer Reinforcement Learning (TRL)-biblioteket overvåket finjustering med integrert støtte for LoRA. Disse tre bibliotekene utgjør sammen det essensielle verktøyet for å finjustere en valgt forhåndstrengt modell, og muliggjør generering av overbevisende og sammenhengende produktsbeskrivelser når de blir bedt om å følge bestemte instruksjoner.
Etter finjustering fra QLoRA, må vekttallene gå tilbake til et høytpresisjonsformat, noe som kan føre til nøyaktighetsTap og mangler optimalisering for å påskynde prosessen.
En foreslått løsning er å gruppere vekttallmatrisen i mindre segmenter og anvende kvantisering og lav-rang-tilpasning til hver gruppe individuelt. En ny metode, kalt QA-LoRA, forsøker å kombinere fordelen av kvantisering og lav-rang-tilpasning samtidig som den holder prosessen effektiv og modellen effektiv for de ønskede oppgavene.
Konklusjon
I denne artikkelen har vi berørt utfordringene som følger med deres enorme parameterstørrelse. Vi har dykket ned i tradisjonelle finjusteringspraksiser og deres tilhørende beregnings- og finansielle krav. Kjernen i LoRA ligger i dens evne til å modifisere forhåndstrengte modeller uten å trene dem helt, og reduserer dermed de trenebare parameterne og gjør tilpasningsprosessen mer kostnadseffektiv.
Vi har også berørt Kvantifisert LoRA (QLoRA), en blanding av LoRA og kvantisering som reduserer minneavtrykket til modellen samtidig som den beholder den essensielle presisjonen for trening. Med disse avanserte teknikkene er praktikere nå utstyrt med et robust bibliotek, som muliggjør en enklere anvendelse og utrullingen av LLM i en rekke virkelige scenarier.
Disse strategiene er utformet for å balansere mellom å gjøre LLM tilpassbare for bestemte oppgaver og sikre at finjusterings- og utrullingsprosessene ikke er for krevende i forhold til beregning og lagringsressurser.




















