Training
LoRA, QLoRA or full fine-tuning: how to choose
What is the difference between LoRA, QLoRA and full fine-tuning?
Use LoRA when the model fits on the GPU class you want, QLoRA when it does not, and full fine-tuning only when the target behaviour is genuinely far from anything the base model does. For most task adaptation the quality difference between LoRA and full fine-tuning is small.
What actually differs
All three change model behaviour. They differ in how many parameters they train and at what precision, and everything else follows from that.
Full fine-tuning updates every weight, which means optimiser state for every weight — several times the size of the parameters themselves. LoRA trains small injected matrices and freezes the rest, so optimiser state exists only for a fraction of a per cent of the model. QLoRA does the same thing with the frozen base stored in four bits instead of sixteen.
| Trainable params | Memory | Speed | Output | |
|---|---|---|---|---|
| Full | 100% | Highest | Fast per step | A whole model |
| LoRA | Under 1% | Much lower | Fast per step | A small adapter |
| QLoRA | Under 1% | Lowest | Slower per step | A small adapter |
The rule that resolves most cases
Check whether the model fits half-precision LoRA on the GPU class you want. If it does, use LoRA. If it does not, use QLoRA on that class or LoRA on a larger one, and pick whichever is cheaper for the run length.
That second comparison is worth doing rather than assuming. QLoRA is slower per step because weights are dequantised on the fly, so a cheaper class at lower throughput sometimes costs more overall than a dearer class that finishes sooner.
When full fine-tuning earns its cost
Rarely, and the honest cases are narrow: a new language, an output format unlike anything the model has seen, a domain whose vocabulary barely overlaps with the pretraining corpus. In those, the adapter’s limited capacity genuinely binds.
For ordinary task adaptation — format, tone, classification, extraction, following your conventions — the measured difference against a well-configured adapter is small, and the memory difference is an order of magnitude.
Full fine-tuning also produces a complete model rather than a small file, which means it cannot share a base with siblings at serving time. If you expect to run several variants, that alone often settles it.
If the adapter is not learning
The instinct is to raise the rank. Usually the problem is data: too few examples, or inconsistent ones. Raising rank adds capacity to memorise a small dataset, which is the opposite of what is needed.
Extending the adapter to the feed-forward layers rather than attention alone is a better second move, because that is where more of the model’s substance sits.
Frequently asked questions
Does QLoRA hurt quality?
Slightly, and less than most people expect. The quantisation applies to the frozen base while the trained adapter stays at higher precision, so gradients are still computed usefully. Reasoning-heavy tasks are affected more than classification.
Can I merge a LoRA adapter into the base model?
Yes, and it is worth doing when you want a single standalone artefact for third-party tooling. The cost is that a merged model can no longer share a base with its siblings at serving time.
Terms used here
More on training
Why fine-tuned models fail, and how to tell which failure you have
Why did my fine-tuned model get worse instead of better?
When to use preference tuning instead of supervised fine-tuning
When should I use DPO instead of supervised fine-tuning?
Using reinforcement learning to improve reasoning
How does GRPO work and when should I use reinforcement learning to fine-tune?
Last verified 6 August 2026.
Start with the free tier
A magic link creates your account, your tenant and your first API key. No card until you ask for compute.