Ga naar hoofdinhoud
50% korting alle plannen, beperkte tijd. Vanaf $2.48/mo
15 min left
AI en machine learning

LoRA vs. QLoRA vs. Full Fine-Tuning: welke methode moet je gebruiken?

B Door Brian 15 min leestijd
LoRA vs QLoRA vs full fine-tuning compared by VRAM use, quality, and when each method wins

Je hebt besloten om een 7B-model te fine-tunen op je eigen data. Dan stuit je op het eerste echte splitsingspunt: drie methodenamen, elk met een ander antwoord. De docs van Unsloth zeggen begin met QLoRA. Axolotl zegt dat het van je hardware afhangt. De helft van de blogposts die je hebt doorgenomen zegt "gebruik LoRA voor de meeste dingen" en gaat verder. Ondertussen staar je naar een enkele GPU, niet zeker of die er zelfs maar één kan draaien.

Dit is de beslissing die aan alles voorafgaat. De methode die je kiest bepaalt je VRAM-budget, het VRAM-budget bepaalt je hardware, en de hardware bepaalt je kosten. Kies je de verkeerde methode, dan verbrand je geld aan GPU-geheugen dat je niet nodig had, of besteed je een weekend aan het jagen op out-of-memory crashes op een kaart die de klus toch al nooit had aangekund.

Dus laten we het uitzoeken. Dit is wat LoRA, QLoRA en full fine-tuning daadwerkelijk van elkaar onderscheidt, wat elk je kost aan geheugen en kwaliteit, en een regel om jouw eigen situatie naar één ervan te leiden.

De korte versie

  • De standaard is QLoRA. Voor de meeste single-GPU fine-tunings begin je met QLoRA. De tabel van Axolotl zet een 7-8B QLoRA-run op ongeveer 10-14 GB VRAM, uitgaande van korte context en kleine micro-batches. Dat past op veel consumenten- of prosumer-kaarten van 12-24 GB, maar niet op elke kaart met weinig VRAM. Grijp naar gewone LoRA als je geheugen over hebt en snellere stappen wilt; reserveer full fine-tuning voor de zeldzame gevallen die het echt nodig hebben.
  • Het VRAM-verschil is groot. Het fine-tunen van een 7B-model kost ongeveer 60-80 GB voor full fine-tuning, 16-24 GB voor LoRA, en 10-14 GB voor QLoRA, volgens de gepubliceerde cijfers van Axolotl. Dat verschil is precies de reden waarom de parameter-efficiënte methoden bestaan.
  • Kwaliteitsverlies is taakafhankelijk, niet constant. Bij de meeste taken voor het volgen van instructies en gestructureerde output liggen LoRA en QLoRA binnen een paar procent van volledige fine-tuning. Het verschil wordt groter bij complex redeneren, zoals wiskunde. Daar verdient volledige fine-tuning zijn kosten nog terug.
  • Volledige fine-tuning is de uitzondering, niet de standaard. Je stapt hier pas naartoe bij grote distributieverschuivingen, wijzigingen op pre-training-schaal, of redeneerkritische taken waar benchmarks het verschil laten zien, niet als veilige standaardkeuze.

Wat deze gids niet behandelt

Dit is een gids voor methodekeuze, geen implementatiehandleiding. Een paar dingen vallen bewust buiten de scope:

  • LoRA-varianten (DoRA, VeRA, LoRA+). De drie kernmethoden zijn de beslissing die er eerst toe doet; de varianten zijn verfijningen waar je later naar grijpt.
  • Stap-voor-stap code. Hier geen installatiecommando's of trainingsscripts. Dat is een aparte praktische handleiding, die hier niet aan de orde komt.
  • Multi-GPU-training (FSDP, DeepSpeed ZeRO) en datasetvoorbereiding: allebei zijn het op zichzelf al grote onderwerpen.
  • RLHF, DPO en voorkeursoptimalisatie. Dit is een andere doelklasse dan supervised fine-tuning.
  • Of je überhaupt moet finetunen. Als je niet zeker weet of finetunen het juiste middel is versus retrieval, dan verdient die vergelijking een eigen antwoord voordat je hier een methode kiest.

Wat verschilt er nu echt tussen LoRA, QLoRA en volledige finetuning?

Three ways to adapt a model, each with a different training footprint: full fine-tuning updates all weights with the highest training footprint, LoRA freezes the base model and trains small adapter matrices, and QLoRA trains adapters on a quantized 4-bit frozen base for the lowest VRAM use

Volledige finetuning werkt elke parameter in het model bij. LoRA bevriest het basismodel en trained in plaats daarvan kleine low-rank adaptermatrices (ongeveer 0,1-2% van het aantal parameters). QLoRA voegt daar nog een stap aan LoRA toe: het kwantiseert het bevroren basismodel tot 4-bit precisie (met een datatype genaamd NF4, NormalFloat), zodat de basis veel minder geheugen inneemt terwijl je de adapters trained.

De duidelijkste manier om de drie in je hoofd te houden, is als een ladder, waarbij elke trede één kostenpost wegneemt van de trede daaronder.

Volledige fine-tuning is de onderste sport, en de zwaarste. Elk gewicht is trainbaar, dus de optimizer moet voor elke parameter in het model een gradiënt en optimizer-status bijhouden. Daar gaat het geheugen naartoe, en we komen in de volgende sectie bij de wiskunde.

LoRA (Low-Rank Adaptation) bevriest de originele gewichten en injecteert kleine trainbare matrices in de lagen van het model. Alleen die matrices leren; het basismodel rijdt gewoon mee. Het LoRA-paper meldt dat dit de trainbare parameters bij een 175B-model met tot 10.000x vermindert en het GPU-geheugen op die schaal ongeveer 3x verlaagt, terwijl het presteert "op gelijk niveau of beter dan fine-tuning wat modelkwaliteit betreft" op de modellen die de auteurs testten. Omdat er zo weinig parameters veranderen, is het getrainde resultaat piepklein. De PEFT-blog geeft twee nuttige referentiepunten: een volledig checkpoint van 40 GB voor bigscience/mt0-xxl, en een apart LoRA-voorbeeld waarbij de opgeslagen adapter maar 19 MB is. Het punt blijft hetzelfde: PEFT-checkpoints zijn meestal piepklein vergeleken met volledige modelcheckpoints.

QLoRA neemt LoRA en verkleint het deel dat LoRA onaangeroerd liet: de bevroren basis. Die gewichten kwantiseren naar 4-bit NF4 betekent dat het basismodel maar een fractie inneemt van het geheugen dat het bij 16-bit zou innemen, terwijl de adapters daarboven nog steeds met volledige precisie trainen. Het QLoRA-paper beschrijft NF4 als "informatietheoretisch optimaal voor normaal verdeelde gewichten", wat een precieze manier is om te zeggen dat de 4-bit representatie is gekozen om aan te sluiten bij hoe modelgewichten daadwerkelijk verdeeld zijn, zodat je minder verliest dan een naïeve 4-bit afronding zou kosten.

Dat is de complete conceptuele stack: volledige fine-tuning trained alles, LoRA bevriest de basis en trained adapters, QLoRA comprimeert de bevroren basis en trained adapters. Al het andere (VRAM, kwaliteit, wanneer je wat gebruikt) volgt uit die drie keuzes.

Hoeveel VRAM heeft elke methode nodig?

VRAM needed by fine-tuning method and model size: full fine-tuning needs 24-32 GB for 1-3B models, 60-80 GB for 7-8B models, and 4-8x 80 GB for 70B+ models, versus much lower requirements for LoRA and QLoRA, with QLoRA fine-tuning a 65B model on a single 48 GB GPU

Voor een 7B-model liggen de ruwe cijfers rond 60-80 GB voor volledige fine-tuning, 16-24 GB voor LoRA en 10-14 GB voor QLoRA, volgens de gepubliceerde tabel van Axolotl. Het praktische gevolg: QLoRA past doorgaans op veel losse consumenten- of prosumer-GPU's van 12-24 GB bij korte context en kleine batches, terwijl volledige fine-tuning van een 7B-model datacenter geheugen of een multi-GPU-opstelling nodig heeft.

Waarom is volledige fine-tuning zo zwaar? Korte rekensom. Wanneer je elke parameter trained, houdt de GPU drie dingen per parameter bij: het gewicht zelf, zijn gradient, en de optimizer-status (Adam-achtige optimizers houden twee extra waarden per gewicht bij). Daarom is de geheugenrekening vaak een veelvoud van de modelgrootte alleen. LoRA bevriest de basis, dus betaalt die gradient-en-optimizer-belasting alleen voor de kleine adaptermatrices. QLoRA slaat de bevroren basis bovendien op in 4-bit in plaats van 16-bit, wat de grootste resterende kostenpost verlaagt.

Zo verhouden de drie methoden zich tot elkaar bij verschillende modelgroottes, gebaseerd op de documentatie van Axolotl plus het QLoRA-paper voor de cijfers van de grote modellen:

Methode1-3B-model7-8B-model70B+-model
Full fine-tuning (bf16 + AdamW)24-32 GB60-80 GB4-8x 80 GB
LoRA (bf16)8-12 GB16-24 GB2x 80 GB
QLoRA (4-bit NF4)6-8 GB10-14 GB40-48 GB

Bronnen: de Axolotl-documentatie voor alle drie de methoden bij verschillende modelgroottes; het QLoRA-paper rapporteert onafhankelijk de fine-tuning van een 65B-model op één enkele 48 GB GPU "met behoud van volledige 16-bit finetuning taakprestaties," wat overeenkomt met het 70B QLoRA-cijfer. De blog over 4-bit-kwantisatie toont afzonderlijk een 13B-model getraind op één 16 GB T4 en een 33B-model op een 24 GB GPU met QLoRA. Dat zijn nuttige oriëntatiepunten als jouw doel tussen de rijen van de tabel valt.

Het enige getal dat het onthouden waard is: een 65B-model op één 48 GB-kaart. Dat is het topresultaat van QLoRA, en het herdefinieert wat "ik heb maar één GPU" betekent.

Conclusie van deze sectie: de VRAM-hiërarchie is full >> LoRA > QLoRA, en de sprong van full naar QLoRA is groot genoeg om een taak van een multi-GPU-rack naar één enkele kaart te verplaatsen.

Kosten LoRA of QLoRA je echt kwaliteit?

Voor de meeste taken op het gebied van het volgen van instructies en gestructureerde output blijven LoRA en QLoRA binnen een paar procentpunten van volledige fine-tuning. Het verschil wordt groter bij complex redeneren (vooral wiskunde), waarbij volledige fine-tuning nog duidelijk de overhand heeft. Het antwoord is dus niet "bijna gelijkwaardig" of "slechter". Het is taakafhankelijk, en het type taak vertelt je aan welke kant van die lijn je staat.

Het duidelijkste bewijs per taaktype komt van een Anyscale-onderzoek uit september 2023 naar Anyscale-onderzoek naar Llama 2. Bij ViGGO, een taak voor gestructureerde functionele representatie, bereikte LoRA ongeveer 95% van de nauwkeurigheid van volledige fine-tuning op 7B- en 13B-modellen: een verschil van 2% dat de auteurs als een acceptabele afweging beschouwden. Bij SQL-generatie evenaarde LoRA volledige fine-tuning bijna, en het LoRA 13B-model verslaan het volledig fine-getunede 7B-model daadwerkelijk. Bij GSM8k, een benchmark voor wiskundig redeneren, presteerde LoRA consequent slechter dan volledige fine-tuning bij 7B en 13B, waarbij het verschil alleen bij 70B kleiner werd. Het Anyscale-team denkt dat de low-rank benadering van LoRA een vaardigheid zo complex als meerstaps wiskunde mogelijk niet vastlegt.

Een voorbehoud bij deze cijfers: dat onderzoek liep op Llama 2 in september 2023. Het patroon per taaktype (gestructureerde output dichtbij, complex redeneren verder weg) is de blijvende conclusie die sindsdien in essentie overeind is gebleven. Maar de exacte percentages kunnen verschillen bij een nieuwer basismodel zoals Llama 3 of Mistral, dus behandel de cijfers als de vorm van de afweging, niet als garantie voor jouw model.

Het kwaliteitsverhaal van QLoRA is zijn eigen verhaal. De QLoRA-paper meldt dat Guanaco, het met QLoRA getrainde 65B-model, 99,3% van de prestaties van ChatGPT bereikte op de Vicuna-benchmark. Sterk, maar gebonden aan die specifieke benchmark en die vergelijking uit 2023, geen algemene bewering dat "QLoRA gelijk is aan ChatGPT". Tegenover gewone LoRA karakteriseert Axolotl QLoRA als met een "lichte degradatie door kwantisatieruis": de 4-bit basis introduceert kleine fouten die de volledige-precisiebasis van LoRA niet heeft. Voor het meeste werk is dit onzichtbaar; voor een taak die gevoelig is voor kleine precisieverschuivingen, is dit iets om te controleren in plaats van aan te nemen.

Pro-tip: De meest voorkomende kwaliteitsverrassing is niet QLoRA versus LoRA. Het is een fine-getuned model dat slechter uitpakt dan het basismodel waarmee je begon. Het betekent meestal dat de training iets deed dat je niet bedoelde: te agressief op een smalle dataset, of alleen geëvalueerd op de nieuwe taak terwijl algemene capaciteit stilletjes terugliep. Test het fine-getunede model altijd op een paar prompts buiten je trainingsdistributie voordat je het vertrouwt. Een regressie daar is het signaal om terug te schakelen, niet om te leveren.

Conclusie van deze sectie: kwaliteitspariteit is taakafhankelijk. Gestructureerde output en instructievolging zijn veilig voor LoRA/QLoRA; complex redeneren is waar volledige fine-tuning zijn kosten nog steeds waard is.

Wanneer Moet Je Welke Methode Kiezen?

Decision tree for picking a fine-tuning method: check available VRAM first, then task type and quality requirement, then speed needs, routing to QLoRA as the default, LoRA as the speed and headroom upgrade, or full fine-tuning as the maximum-performance choice

Begin met QLoRA voor de meeste single-GPU fine-tunings. Stap over naar gewone LoRA wanneer je VRAM-ruimte hebt en snellere stappen of een iets hoger kwaliteitsplafond wilt. Reserveer volledige fine-tuning voor de gevallen die het echt nodig hebben: grote distributieverschuivingen, veranderingen op pre-trainingsschaal, of redeneer-kritieke taken waar de benchmarkkloof reëel is. Stuur op drie inputs, in volgorde: beschikbare VRAM, taaktype en kwaliteitseis, dan snelheid.

Hier is de routering als "doe dit, niet dat":

1. Controleer eerst je VRAM. Als je een enkele kaart hebt met 24 GB of minder (de meeste consumenten- en prosumer-GPU's), is QLoRA je standaardmethode, omdat het de enige van de drie is die een 7B-model betrouwbaar binnen die grens laat passen. Grijp niet naar full fine-tuning op een enkele consumentenkaart; de tabel hierboven laat al zien dat een 7B-job er niet in past, en je besteedt het weekend om dat op de harde manier te leren.

2. Bekijk vervolgens je taak en je kwaliteitseisen. Als je taak instruction-following, gestructureerde output, SQL of algemene domeinaanpassing is, laat het bewijs van Anyscale zien dat LoRA en QLoRA je bijna volledige kwaliteit geven. Blijf bij de standaardkeuze. Als je taak sterk redeneergedreven is (meerstaps wiskunde, complexe logische ketens) en kwaliteit niet onderhandelbaar is, is dat je eerste echte reden om over te stappen naar full fine-tuning, want dat is het enige takentype waarbij benchmarks een consistent gat laten zien.

3. Weeg vervolgens de snelheid af. QLoRA ruilt wat snelheid per stap in voor zijn geheugenbesparing: de 4-bit basis moet on the fly gedekwantiseerd worden. Als je genoeg VRAM hebt om gewone LoRA te draaien (16-24 GB voor een 7B), krijg je snellere stappen en sla je de kwantisatieruis over, wat LoRA de betere keuze maakt wanneer geheugen niet de beperkende factor is en je veel itereert.

Wanneer is is full fine-tuning het juiste antwoord? Axolotls advies is direct: het is vereist voor pre-training en de keuze "wanneer je ruim voldoende GPU-geheugen of multi-GPU-opstellingen hebt, en maximale prestaties nodig hebt." Buiten die voorwaarden (en voor de grote meerderheid van praktisch fine-tunen, wat neerkomt op het aanpassen van een bestaand model aan specifiek gedrag of een specifiek domein) geven de parameter-efficiënte methoden je het grootste deel van de kwaliteit voor een fractie van de hardware.

Unsloth verwoordt de standaardkeuze duidelijk:

"We raden aan om met QLoRA te beginnen, omdat het een van de meest toegankelijke en effectieve methoden is om modellen te trainen."

Dat is de regel. Start standaard met QLoRA, stap over naar LoRA voor snelheid als je genoeg geheugen hebt, en grijp alleen naar volledige fine-tuning wanneer de taak of de schaal dat vereist.

Conclusie van deze sectie: QLoRA is de standaard; LoRA is de upgrade voor snelheid en extra ruimte; volledige fine-tuning is de uitzondering die je onderbouwt met een distributieverschuiving, pre-training of een reasoning-benchmark.

Wat begrijpen mensen vaak verkeerd over fine-tuning methoden?

Twee misvattingen zijn verantwoordelijk voor de meeste verspilde weekenden. De eerste is het zien van fine-tuning als een manier om een model nieuwe feiten te leren, terwijl het primaire effect gedrag vormgeeft. De tweede is de aanname dat je kwaliteit kunt koopen door simpelweg aan een knop te draaien: dat een hogere LoRA rank, of full fine-tuning in plaats van QLoRA, automatisch een beter model oplevert. Beide zijn half waar, en precies daarom misleidend.

Leert fine-tuning een model nieuwe feiten?

Hier bestaat een echte verdeeldheid tussen experts, dus het is belangrijker om de nuance goed te begrijpen dan om partij te kiezen. Verschillende praktische gidsen noemen "fine-tuning leert nieuwe feiten" de misvatting nummer één: hun punt is dat fine-tuning veel beter is in het vormgeven van hoe een model reageert dan in het betrouwbaar injecteren van specifieke feiten die het nooit tijdens pre-training heeft gezien. De documentatie van Unsloth weerspreekt dit direct en noemt de bewering dat fine-tuning geen nieuwe kennis kan bijbrengen "onjuist", en beschrijft fine-tuning als een manier om "nieuwe domeinspecifieke informatie te injecteren en te leren".

Beide hebben deels gelijk, en de verzoenende lezing is deze: fine-tuning is betrouwbaar in het vormgeven van gedrag en het versterken van kennis die al latent aanwezig is in het basismodel, en het kan domeinspecifieke patronen coderen. Waar het onbetrouwbaar in is, is het implanteren van losse feiten die volledig ontbraken tijdens pre-training. Hoe meer je doel lijkt op "dit specifieke document onthouden", hoe groter de kans dat je naar het verkeerde gereedschap grijpt, en retrieval kan je dan beter van dienst zijn. De praktische richtlijn overleeft dus het meningsverschil: leun op fine-tuning voor gedrag en stijl, wees sceptisch over het gebruik ervan als mechanisme om feiten te injecteren.

Verbetert een hogere LoRA rank altijd de kwaliteit?

Nee, en dit is de knop die het makkelijkst te ver wordt doorgedraaid. De intuïtie is dat een hogere rank de adapter meer capaciteit geeft, dus meer moet wel beter zijn. Databricks heeft dit empirisch getest en ontdekte dat het verdubbelen van de rank "blijkbaar niet leidt tot een waarneembare toename in outputkwaliteit". Wat in hun experimenten wél het verschil maakte, was welke lagen ze targetten (alle lineaire lagen aanpassen in plaats van alleen de attention-blokken), niet het opvoeren van het rank-getal. De les die je hieruit moet trekken: steek je tuning-inspanning in doelmodules en datakwaliteit voordat je die steekt in het opblazen van de rank.

Is de kwaliteit van LoRA altijd gelijk aan volledige fine-tuning?

Niet universeel, en een recent onderzoeksartikel wijst op een specifiek faalpatroon. "LoRA vs Full Fine-tuning: An Illusion of Equivalence" van Shuttleworth et al. laat zien dat LoRA-training "indringersdimensies" kan introduceren (hoogwaardige singuliere vectoren die ontbreken in volledig fine-getunede modellen) en koppelt dit aan vergeten in continual-learning-scenario's, waarbij hetzelfde model herhaaldelijk wordt fine-getuned. Dit is een specifieke waarschuwing, geen algehele weerlegging: als je één ronde fine-tuning voor één taak doet, blijft het brede bewijs voor kwaliteitspariteit gelden. Als je fine-tunes aan elkaar koppelt en het algemene vermogen van het basismodel wilt behouden, is dit het faalpatroon om op te letten.

Veelgestelde vragen

Wat is het verschil tussen LoRA, QLoRA en volledige fine-tuning?

Volledige fine-tuning werkt elke parameter in het model bij. LoRA bevriest het basismodel en traint in plaats daarvan kleine low-rank adaptermatrices, ongeveer 0,1-2% van de parameters. QLoRA doet wat LoRA doet en kwantiseert daarnaast het bevroren basismodel naar 4-bit NF4-precisie, waardoor de basis veel minder geheugen nodig heeft terwijl de adapters trainen. Het resultaat is een duidelijke geheugenladder: volledige fine-tuning is het zwaarst, LoRA is lichter, QLoRA is het lichtst.

Hoeveel VRAM heb ik nodig om een 7B-model te fine-tunen?

Voor een 7B-model geven de cijfers van Axolotl aan dat volledige fine-tuning ongeveer 60-80 GB nodig heeft, LoRA 16-24 GB, en QLoRA 10-14 GB. QLoRA is van de drie de enige die gewoonlijk past op één enkele consumenten- of prosumer-GPU van 12-24 GB; volledige fine-tuning van een 7B-model vereist geheugen op datacenterniveau of meerdere GPU's.

Is de kwaliteit van QLoRA slechter dan die van LoRA of volledige fine-tuning?

Dat hangt af van de taak. Voor de meeste taken rond instructievolging en gestructureerde output blijft QLoRA binnen een paar procent van volledige fine-tuning, en Axolotl beschrijft slechts een "lichte degradatie door kwantisatieruis" ten opzichte van gewone LoRA. Het verschil wordt groter bij complexe redeneertaken zoals wiskunde, waar volledige fine-tuning een consistent voordeel liet zien in een Anyscale-onderzoek uit 2023 naar Llama 2.

Wanneer Is Volledige Fine-Tuning Echt de Moeite Waard?

Volledige fine-tuning is zijn kosten waard voor pre-training, grote distributieverschuivingen, en redeneer-kritieke taken waarbij benchmarks een echte kwaliteitskloof laten zien. Het is ook de weg als je ruim GPU-geheugen of een multi-GPU-opstelling hebt en maximale kwaliteit nodig hebt. Voor het gewone geval (een bestaand model aanpassen aan specifiek gedrag of domein) geeft LoRA of QLoRA je het grootste deel van de kwaliteit voor een fractie van de hardware.

Leert fine-tuning een model nieuwe feiten?

Deels. Fine-tuning is betrouwbaar bij het vormgeven van gedrag en het versterken van kennis die al latent aanwezig is in het basismodel, en het kan domeinspecifieke patronen coderen. Het is onbetrouwbaar bij het inplanten van discrete feiten die volledig afwezig waren in de pre-training. Hier is een echt meningsverschil tussen experts. Unsloths documentatie stelt dat fine-tuning nieuwe kennis kan aanleren, terwijl andere gidsen dit het topmisverstand noemen, en de verzoenende visie is om fine-tuning te gebruiken voor gedrag en stijl, en retrieval in te zetten wanneer het doel is specifieke feiten op te halen.

Waar Dit Je Achterlaat

De methodekeuze komt neer op één standaard en twee noodgrepen: begin met QLoRA, stap over naar LoRA wanneer geheugen niet de beperking is en je snellere stappen wilt, stap alleen over naar volledige fine-tuning wanneer een distributieverschuiving, pre-training, of een redeneerbenchmark het afdwingt.

Met de methode vastgesteld, is de volgende beslissing de hardware die het impliceert. Je methodekeuze heeft je net verteld of je op zoek bent naar een enkele consumentenkaart of datacentergeheugen. Als je specifieke kaarten voor AI-workloads wilt vergelijken, laat onze H100 vs RTX 4090 benchmark dat gebied zien. Het formaat bepalen van de GPU voor de gekozen methode, en een stap-voor-stap handleiding voor het uitvoeren van de trainingsklus zelf, zijn hun eigen afzonderlijke gidsen.

Share

Meer van de blog

Blijf lezen.

Klaar om uit te rollen? Vanaf $2,48/mnd.

Onafhankelijke cloud, sinds 2008. AMD EPYC, NVMe, 40 Gbps. 14 dagen niet-goed-geld-terug.