LoRA is a parameter-efficient fine-tuning method that freezes the base model and trains small adapter matrices, so gradients and optimizer state cover a sliver of the weights; full fine-tuning updates every parameter and must store those extra tensors for all of them. That is why a model that serves comfortably on one GPU can be impossible to fully fine-tune on the same card. The gap is not a mystery vendor tax. It is optimizer state.
Enterprises care because the memory method decides the reservation: one GPU after hours, or a multi-node job that blocks the training pool. Quality is a separate argument. Memory gets you onto the machine. Eval gets you into production.
Where the GPU memory actually goes
Inference holds weights and a KV cache. Training adds three more bills: gradients for every trainable parameter, optimizer state (Adam-style methods keep two moment buffers per trainable parameter), and activations for the backward pass. Activations grow with batch size and sequence length. Optimizer state grows with how many parameters you allow to move.

A widely used planning range for mixed-precision full fine-tuning is on the order of 12–16 bytes per parameter before activations, because you are carrying weights, gradients, and Adam state together. Treat that as a sizing heuristic, not a benchmark from this page. Your precision, optimizer, and whether you keep an FP32 master copy will move the constant. The shape does not move: full fine-tune memory scales with the whole model. LoRA memory for optimizer state scales with the adapters.
LoRA still loads the frozen base for the forward and backward pass. You do not get to delete the 7B or 70B weights. You get to stop paying Adam on all of them. QLoRA goes further by quantizing that frozen base, which is why large models become single-GPU experiments. QLoRA is a memory tactic with its own quality and throughput trade-offs. It is not automatically the enterprise default.
LoRA vs full fine-tuning: memory and fit
| Dimension |
Full fine-tuning |
LoRA (and cousins) |
| Trainable parameters |
All weights |
Low-rank adapters; base frozen |
| Optimizer / gradient memory |
Scales with the full model |
Scales with adapter size (rank, target modules) |
| Typical hardware story |
Multi-GPU for mid-size LLMs |
Often one high-memory GPU, or fewer nodes |
| What it can change |
Deep behavior, new skills, large distribution shift |
Style, format, modest domain shift |
| Operational risk |
Long jobs, checkpoint size, harder rollback |
Rank and module choices; forgetting if you ask too much of adapters |
Raising LoRA rank and attaching adapters to every linear layer spends the memory you just saved. “We use LoRA” is not a reservation size. “Rank, target modules, sequence length, batch” is.
When full fine-tuning is still the right spend
Use full fine-tuning when the task is a real distribution shift: a new language of work, a skill the base model does not have, or a safety behavior you cannot get from a thin adapter. Use it when you have already seen LoRA plateau on a held-out set and the failure is capability, not missing documents (that last case is retrieval, not another epoch).
Full fine-tuning is also a cluster-design choice. You will want checkpoint bandwidth, a job that can restart, and a pool that is not the production inference pool. That is private AI infrastructure work: dedicated GPUs so a 16-hour full fine-tune does not evict an endpoint. OneSource Cloud’s reserved environments exist for that isolation. They do not change the bytes-per-parameter math. They keep the math from colliding with serving.
When LoRA is the enterprise default
LoRA is the default when you need domain tone, JSON discipline, or a modest specialty and you must share a finite GPU pool across many teams. It is also the default when the base model is a vendor artifact you are not allowed to fully overwrite, but you can ship adapters behind the same tokenizer.
Serving LoRA has a second memory conversation: one base plus many adapters versus merging adapters into a standalone checkpoint. Multi-adapter serving saves base copies and complicates batching. Merging simplifies serving and multiplies weight copies. Choose that at the platform layer, not in a fine-tune ticket.
OnePlus Platform, OneSource Cloud’s AI orchestration platform, is where those jobs should request quota by method: “LoRA, one GPU, 24 hours” versus “full fine-tune, eight GPUs, this queue.” If every training job is typed as “GPU,” LoRA’s memory advantage disappears in a wait queue behind someone else’s full Adam run.
A sizing sequence you can defend in procurement
- Write down model size, precision, max sequence length, and target batch.
- Estimate full fine-tune memory with a published bytes-per-parameter heuristic, then add activation headroom.
- Estimate LoRA memory as frozen base plus adapter optimizer state; vary rank to see sensitivity.
- Pick the smallest method that hits the eval bar, not the largest method the cluster can theoretically hold.
- Reserve a pool that matches the winner, and keep production serving off that pool.
If the only GPUs you have are the ones already serving customers, you do not have a fine-tune plan. You have an outage plan. Managed operations can watch that boundary. They cannot invent a second H100 that was never purchased.
FAQ
Why does full fine-tuning use so much more GPU memory than LoRA?
Because Adam-style training stores gradients and optimizer moments for every trainable parameter. Full fine-tuning makes every parameter trainable. LoRA makes a small set trainable and freezes the rest. The frozen weights still occupy memory, but they no longer drag a full optimizer footprint with them.
How much VRAM do I need to fine-tune a 7B model?
For full fine-tuning, plan on well more than the weight file: a common heuristic lands a 7B model in the high tens to low hundreds of gigabytes before a large activation footprint, which is why people reach for multiple 80GB-class GPUs. LoRA can bring the same base onto a single high-memory GPU, depending on rank and sequence length. Measure your recipe. Do not treat a blog’s 7B chart as a purchase order.
Does a higher LoRA rank always improve quality?
No. Rank is adapter capacity, not a quality guarantee. Extra rank that does not improve a held-out set still spends GPU memory and can overfit a small enterprise dataset. Sweep rank and target modules against that set, then stop when quality flattens rather than when the GPU still has room.
Is QLoRA required for enterprise fine-tuning?
No. QLoRA is a way to shrink the frozen base with 4-bit quantization so larger models fit. Use it when the alternative is “we cannot run the job.” Validate quality and throughput. Some regulated teams prefer higher-precision LoRA on larger dedicated GPUs over a quantized base they have not evaluated.
Can I fine-tune on the same GPUs that serve production?
You can, and you will regret it the first time a training batch fills memory. Separate pools. If the company only has one box, schedule fine-tunes in a maintenance window with a written rollback to serving. Dedicated private capacity exists so that window is not your only strategy.
Summary
LoRA vs full fine-tuning is a memory architecture choice before it is a quality debate. Full fine-tuning pays optimizer state on every weight. LoRA pays it on adapters. Size the method that clears eval, reserve GPUs that match that method, and keep serving out of the training blast radius. For dedicated capacity and quota that can express those two job types, start from OneSource Cloud private AI infrastructure and schedule the work through OnePlus Platform.