AI-modeller og plattformer

LoRa, QLoRA og QA-LoRA: Effektiv tilpasning i store språkmodeller gjennom lav-rang matrisefaktorisering

mm
Legg til Unite.AI blant dine foretrukne kilder på Google

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.

Parametre i LLM

https://huggingface.co/blog/hf-bitsandbytes-integration

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.

Transformers-arkitektur

Transformers-arkitektur

 

transformer oppmerksomhets-hoder

Transformer oppmerksomhets-hoder

Matematisk forklaring bak LoRA

La oss bryte ned matematikken bak LoRA:

  1. Forhåndstrente vekttallmatrise :
    • Den starter med en forhåndstrente vekttallmatrise av dimensjoner . Dette betyr at matrisen har rader og kolonner.
  2. 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.
  3. 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.
  4. 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.

LoRA-animasjon

LoRA

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 :

  1. 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.
  2. 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.

Som fremhevet i papiret med GPT-3 175B som eksempel. Å ha enkelteksemplarer av finjusterte modeller med 175B parametre hver er ganske dyrt. Men, med LoRA, reduseres de trenebare parameterne med 10 000 ganger, og GPU-minnebruk reduseres til en tredjedel.

LoRa påvirkning på GPT-3-justering

LoRa påvirkning på GPT-3-finjustering

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.

Kvantifisering

Kvantifisering

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.

Kvantifisering i LLM

Kvantifisering i LLM

Her er en enklere forklaring av QLoRA:

  1. Initial kvantisering: Først kvantiseres den store språkmodellen (LLM) ned til 4 biter, noe som reduserer minneavtrykket betydelig.
  2. 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.

Matrix

Matrix

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.

Jeg har brukt de siste fem årene på å dykke ned i den fasiniserende verden av Maskinlæring og Dypt Læring. Min lidenskap og ekspertise har ledet meg til å bidra til over 50 ulike programvareprosjekter, med særlig fokus på AI/ML. Min pågående nysgjørhet har også trukket meg mot Naturlig Språkbehandling, et felt jeg er ivrig etter å utforske videre.