---
title: LoRA, QLoRA or full fine-tuning: how to choose
description: The memory, quality and speed trade between the three approaches, and a rule that resolves nearly every case.
url: https://www.onrup.com/guides/lora-vs-qlora-vs-full-fine-tuning
category: Training
published: 2026-08-06
updated: 2026-08-06
source: Onrup
---

# 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.
