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 (9)
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.
Det er imponerende hvordan teknologien har utviklet seg til å gjøre det mulig for så mange å tilpasse store modeller uten å trenge ekstreme ressurser.
Denne utviklingen har potensialet til å demokratisere tilgangen til avansert kunstig intelligens, og det er en viktig sosial og etisk fremgang.
Det er viktig at vi fortsetter å dokumentere og være gjennomsiktig med hvilke endringer som gjøres, spesielt i sensitive områder som helse og rettsvesen.
Det er ikke bare et teknisk spørsmål - det er et menneskelig ansvar.
hei jeg prøvde lora i går med en 7b modell og det fungerte veldig bra!!
men jeg glemte å lagre bare adapteren og måtte laste ned alt på nytt 😅
husk å sjekk om du har adapter_model.bin og ikke bare hele modellen!
og r=8 er perfekt for start, r=64 var bare for mye og tok 3 ganger lengre.
hugging face peft er helt fantastisk, bare en linje kode og så er du i gang!!
Det er uansett en feilaktig forståelse å hevde at LoRA er en effektiv metode. Det er en kompromiss. En modell som ikke har blitt fullt fine-tuned, er ikke fullt lært. Det er ikke effektivitet - det er redusert presisjon.
Denne tilnærmingen skaper en illusjon av kapasitet, mens den i virkeligheten skjuler mangler.
Hvis du trenger 100% nøyaktighet i en kritisk applikasjon, er LoRA ikke et alternativ - det er en risiko.
Det er ikke teknologi som løser problemer. Det er forståelse. Og forståelse krever full trening.
De vil ikke at du skal kunne kjøre store modeller på din egen PC.
De vil ha deg til å betale for cloud-tjenester.
LoRA? QLoRA? Det er bare en smokescreen.
De lar deg tro du har frihet - men de eier fremdeles modellen.
Se på Hugging Face - de er ikke en nonprofit, de er en bedrift.
De vil ha deg til å bruke deres API, ikke din egen GPU.
De vil ha deg avhengig.
Det er ikke teknologi. Det er kontroll.
Åh, LoRA - den nye kulten for utviklere som ikke har råd til å forstå hva de gjør.
Det er så sjarmant å tro at du kan "tilpasse" en modell med noen små matriser og så tro at du har "forstått" AI.
Det er som å legge på en skjorte over en naken kropp og kalle det en klær.
Vi er på vei mot en verden der folk tror de kan bygge AI med 10 linjer kode og så kalle seg "AI-eksperter".
Det er ikke kunnskap. Det er performanse.
Det er en skikkelig kulturkrise.
OG JA - jeg vet at du tror du er smart fordi du bruker PEFT.
Du er ikke. Du er bare populær.
Det er viktig å understreke at LoRA og adapter-lag ikke er utvekslingsbare - de har ulike styrker og svakheter basert på anvendelsesområdet.
LoRA er optimal for enkeltspesialiserte oppgaver med lav minnebruk og høy inferenshastighet.
Adapter-lag er mer egnet for miljøer med flere parallellt kjørende spesialiserte tjenester, selv om de påvirker latency.
Det er også viktig å merke seg at QLoRA har revolutionert tilgjengeligheten - men krever nøye valg av kvantiseringsteknikker for å unngå presisjons tap.
For de som starter, anbefales det sterkt å bruke Hugging Face PEFT med r=8 og kun attentionslager, som nevnt i posten.
Dette er en solid, dokumentert og reproducerbar tilnærming.
LOL jeg kjørte QLoRA på min gamle RTX 3060 og den tok bare 4 timer og sparte 12 GB minne!!
Det er som å ha en superhelt i lommeformat 🤯
prøvde r=32 fordi jeg trodde jeg var smart - men den gikk fortere enn jeg trodde og ble bare litt bedre, ikke 10x bedre.
det er som å kjøre en Ferrari med 30 km/h - det er ikke nødvendig å gass hele tiden.
hugging face peft er enkelt som å bake kake - bare copy-paste og kjør.
hvis du ikke prøver dette nå så er du bak i tid bro 😎
hei jeg bare måtte si at dette var så hjelpsomt!!
jeg prøvde lora for første gang og trodde jeg måtte ha en super pc men neiiii det funket med min 2080!!
men jeg glemte å skrive get_peft_model() og det var en kraftig feil hahah
men nå er alt i gang og modellen svarer på spørsmål om kaffe som en barista 😄
og ja r=8 er perfekt, r=64 var bare for mye for meg
takk for den gode forklaringen!!