Større språkmodeller som GPT-3, Llama-2 og Mistral blir stadig mer kraftige - men også mer tunge. Å finetune en 70 milliarder parameter modell på en vanlig datamaskin var for noen år siden umulig. I dag er det ikke bare mulig, det er vanlig. Det har blitt mulig fordi forskere har funnet en smartere måte å tilpasse modeller på: LoRA og adapter-lag. Disse teknikkene lar deg endre hvordan en modell tenker - uten å måtte lagre eller trene hele modellen på nytt.
Hvorfor trenger vi nye metoder for å tilpasse språkmodeller?
Tenk deg at du vil lage en modell som kan svare på spørsmål om medisinsk diagnostikk. Du har en ferdig modell som er trent på millioner av nettsteder, bøker og artikler. Men den vet ikke hva en "myokardinfarkt" er. Du kan ikke bare legge til noen ord - du må lære den hvordan den skal tenke på nytt. Tradisjonell fine-tuning betyr å endre alle 70 milliarder parametrene i modellen. Det krever flere GPU-er, minst 200 GB minne, og kan ta dager. Og hvis du vil ha en annen versjon for juridiske spørsmål? Da må du trene en ny modell fra bunnen av. Det er dyrt, ressurskrevende og uhåndterlig. Her kommer PEFT - Parameter-Efficient Fine-Tuning - inn. I stedet for å endre hele modellen, legger du til små, smarte moduler som bare endrer hva som trengs. To av de mest brukte metodene er LoRA og adapter-lag. Begge lar deg tilpasse modeller med mindre enn 1% av de opprinnelige parametrene.Hvordan fungerer LoRA?
LoRA står for Low-Rank Adaptation. Den ble presentert i en forskningsartikkel i juni 2021 og har siden blitt standard i både forskning og industri. Prinsippet er enkelt: istedenfor å endre vektene i modellen, legger du til små matriser som justerer output-en. I en vanlig transformer-lag har du en vektmatrise, f.eks. 1024x1024. Det er over én million parametre. Med LoRA erstatter du ikke denne. I stedet legger du til to små matriser: A (1024x8) og B (8x1024). Når du multipliserer dem sammen, får du en endring på 8x1024x2 = 16.384 parametre. Det er 0,2% av det opprinnelige antallet. Disse små matrisene trener du under fine-tuning. Vektene i den opprinnelige modellen forblir låst. Det betyr at du bare lagrer de to små matrisene - ikke hele modellen. En Llama-2-7B modell som er fine-tuned med LoRA kan lagres i 80 MB, istedenfor 14 GB. LoRA fokuserer typisk på attentionslager - spesielt query- og value-projeksjoner. Men nyere versjoner som QLoRA går lenger. QLoRA kombinerer LoRA med 4-bit kvantisering. Det betyr at du kan fine-tune en 65 milliarder parameter modell på en enkelt RTX 4090 med 24 GB VRAM. Det var umulig for bare ett år siden.Hva er adapter-lag?
Adapter-lag er en annen måte å legge til små moduler. I stedet for å legge til matriser, legger du til hele små nevrale nettverk mellom eksisterende lag i transformer-modellen. Et standard adapter-lag har tre deler: en nedre projeksjon (f.eks. fra 768 til 64 dimensjoner), en ikke-lineær funksjon (som ReLU), og en oppreisning (fra 64 tilbake til 768). Det legger til omtrent 3-4% ekstra parametre per transformer-lag. Fordelen med adapter-lag er at de er modulære. Du kan ha en adapter for medisinsk språk, en for juridisk, en for kundeservice - og bytte mellom dem uten å laste inn nye modeller. Det er veldig nyttig hvis du skal drive flere spesialiserte tjenester på samme infrastruktur. Men det har en pris: inferenshastighet. Fordi adapter-lag legger til ekstra beregninger i kjeden, blir inferensen 15-25% langsommere. I en ekte applikasjon som en kundeservicebot, kan det bety at brukere må vente ekstra sekunder - noe som påvirker opplevelsen.
LoRA vs. adapter-lag: Hva skal du velge?
Det finnes ingen enkelt svar. Det handler om hva du trenger.| Feature | LoRA | Adapter-lag |
|---|---|---|
| Ekstra parametre | 0,1-0,7% | 3-4% |
| Inferenshastighet | Uendret (kan merges inn) | 15-25% langsommere |
| Minnebruk under trening | 3x lavere enn full fine-tuning | 2x lavere enn full fine-tuning |
| Multi-task støtte | God med LoRAX eller andre batching-løsninger | Utmærket - bytt adapter på kjøring |
| Quantization-støtte | Utmærket (QLoRA fungerer med 4-bit) | Mye vanskeligere |
| Oppbevaring av modell | 8-16 MB per adapter | 50-100 MB per adapter |
Hvordan kommer du i gang med LoRA?
Du trenger ikke en superdatamaskin. Med Hugging Face PEFT-biblioteket (versjon 0.8.0 eller nyere) kan du tilpasse en 7B-modell på en RTX 3090 på under 8 timer. Her er hva du trenger:- Installer PEFT:
pip install peft - Last inn modellen din (f.eks. Llama-2-7B) med Hugging Face Transformers
- Definer LoRA-konfigurasjonen: velg rank (r=8 er god start), alpha (r=16), og hvilke lag du vil tilpasse (vanligvis q_proj og v_proj)
- Kjør fine-tuning med vanlig PyTorch-trainingsløkke - ingenting endres i din kode, bare legger du til en linje med
get_peft_model() - Lagre bare adapteren - ikke hele modellen
Hva er vanlige feil og hvordan unngår du dem?
Mange som starter med LoRA gjør tre feil:- For lav rank: r=1 eller r=2 gir dårlig prestande. Start med r=8. Bare hvis modellen ikke lærer noe, øk til r=32.
- For mange lag: Det er ikke nødvendig å tilpasse alle lineære lag. Fokuser på attention-lagene. QLoRA og nyere forskning viser at alle lag kan gi bedre resultat - men det øker minnebruket.
- Glemt å lagre bare adapteren: Hvis du lagrer hele modellen, har du ingen fordel. Bare lagre
adapter_model.binogadapter_config.json.
Hva er fremtiden for disse teknikkene?
Forskningen går raskt. QLoRA 1.1 fra november 2023 reduserte ytelsestapet til full presisjon til bare 0,7%. Det betyr at du nå kan ha en modell som er nesten like god som en 175B GPT-3 - men kjører på en $1000 GPU. Nye retninger inkluderer:- Dynamisk rank: Algoritmer som justerer r-verdien under trening, basert på hvor mye modellen trenger å endre seg i hvert lag.
- Hybrid metoder: Kombinasjon av LoRA og prompt-tuning - spesielt nyttig for språk med lite data.
- Multimodale adaptere: For modeller som forstår både tekst og bilder - som GPT-4V.
Er det noen grenser?
Ja. LoRA og adapter-lag fungerer ikke alltid perfekt. I en case-studie fra desember 2023, forsøkte en gruppe å fine-tune en modell for å diagnostisere sjeldne sykdommer. De brukte r=64 - og det var fortsatt 12% dårligere enn full fine-tuning. Noen oppgaver krever virkelig dypt læring - ikke bare små justeringer. Det er også et problem med forståelse. Hvis du tilpasser en modell til å skrive juridiske dokumenter, men ikke forklarer hva du har gjort - kan det bli et problem med EU AI Act. De krever dokumentasjon av modellendringer. LoRA og adapter-lag er transparente - du vet nøyaktig hva som er endret. Det er en fordel.Sluttresultat: Hva bør du gjøre i dag?
Hvis du er en enkelt forsker, utvikler en app, eller et lite firma: Start med LoRA. Bruk QLoRA hvis du har en moderne GPU. Lagre bare adapteren. Test med r=8. Det er den enkleste, raskeste og billigste måten å få en høykvalitets modell til å fungere for deg. Hvis du er i et stort selskap med mange spesialiserte tjenester: Bruk adapter-lag for multi-task**, men kombiner med LoRAX eller lignende løsninger for å holde inferenshastigheten lav. Det er ikke lenger nødvendig med millioner av dollar og store datacentre for å tilpasse store språkmodeller. Med LoRA og adapter-lag har vi fått verktøy som gjør det mulig for enhver med en god GPU og litt kunnskap - å bygge sin egen AI.Hva er forskjellen mellom LoRA og full fine-tuning?
Full fine-tuning endrer alle parametrene i en modell - for eksempel 70 milliarder i Llama-2-70B. LoRA legger bare til små matriser (typisk 16.000 parametre) som justerer output-en. Du trenger ikke å lagre eller trene hele modellen på nytt - bare de små tilleggene. Det gjør LoRA 10.000 ganger mer effektivt i minne og beregning.
Kan jeg bruke LoRA på en vanlig PC?
Ja, med QLoRA. Den kombinerer LoRA med 4-bit kvantisering, og lar deg fine-tune modeller med opptil 65 milliarder parametre på en enkelt RTX 4090 med 24 GB VRAM. Det var umulig før 2023. Du trenger ikke en server med 8 A100-er.
Hvorfor er inferenshastigheten lavere med adapter-lag?
Adapter-lag legger til ekstra nevrale lag som må kjøres i sekvens under inferens. Hver gang modellen går gjennom et lag, må den også gå gjennom adapteren - noe som legger til 15-25% ekstra tid. LoRA kan merges inn i de opprinnelige vektene, så inferens skjer like raskt som med den opprinnelige modellen.
Hva er QLoRA, og hvorfor er det viktig?
QLoRA er en forbedret versjon av LoRA som bruker 4-bit normalFloat (NF4) kvantisering. Det reduserer minnebruket ytterligere, og lar deg fine-tune modeller som 30B-65B på en enkelt GPU. Den har vist 99% av ytelsen til full-precision fine-tuning - og er den mest tilgjengelige metoden for individuelle utviklere og små firmaer.
Er LoRA bedre enn adapter-lag?
Det avhenger av brukstilfellet. LoRA er bedre for enkeltoppgaver, rask inferens og lav lagring. Adapter-lag er bedre hvis du må kjøre mange spesialiserte modeller på samme server og kan akseptere litt lengre svar. De fleste bedrifter velger LoRA - men adapter-lag har fortsatt en viktig rolle i kontinuerlig læring og multi-task miljøer.
Hvor mye minne trenger jeg for å bruke LoRA?
For en 7B modell med LoRA (r=8) trenger du omtrent 12-16 GB VRAM under trening. Under inferens trenger du bare minne for den opprinnelige modellen - fordi adapteren er minimal. Du kan kjøre LoRA på en RTX 3090 eller RTX 4090 uten problemer.
Hva er det beste verktøyet for å starte med LoRA?
Hugging Face PEFT-biblioteket er det mest brukte og best dokumenterte verktøyet. Det integrerer seg direkte med Transformers og gir deg en enkel funksjon - get_peft_model() - som gjør om en vanlig modell til en LoRA-modell med én linje kode. Det er det enkleste punktet å starte fra.
Post Comments (1)
LoRA er ikke magi. Det er bare en bedre måte å svindle på med minne.
Vi tar en modell som skal lære å tenke, og sier: "Hey, la oss bare lime på noen små plater og håpe det holder."
Det er som å prøve å fikse en bil med duct tape og håp.
Det fungerer... til en viss grad.
Men vi glemmer at AI ikke er en maskin, den er et uttrykk for vår egen forståelse.
Hvis vi ikke forstår hva vi lærer, så er det bare en bedre form for illusion.
Vi skal ikke bare gjøre det billigere - vi skal gjøre det riktig.