Fine-Tuning··14 min read

Full Fine-Tuning: When and Why to Train Every Parameter

On this page

What is Full Fine-Tuning

Full fine-tuning is the most straightforward form of model adaptation: every parameter in the model is updated during training. There are no frozen weights, no low-rank approximations, no adapters, and no quantization of the base model. The training process operates on the complete parameter space of the network, just as the original pre-training did, but using your task-specific dataset and typically a much lower learning rate to avoid overwriting the pre-trained knowledge entirely.

This is in contrast to parameter-efficient methods like LoRA and QLoRA, which selectively add small trainable components while leaving most or all of the original weights frozen. Full fine-tuning gives the optimizer complete freedom to adjust any weight in the network, which means the model can make larger representational changes than adapter-based methods allow. For tasks requiring significant behavioral shifts, particularly those involving large, diverse datasets or deep domain adaptation, this added flexibility often translates to meaningfully better quality.

Full fine-tuning is also the natural choice for continued pre-training, where you want to extend a model's knowledge base with a large unlabeled text corpus before applying instruction tuning. In continued pre-training, the optimization objective is the same as original pre-training (next-token prediction), and the goal is to update the model's factual knowledge and language patterns across all layers. Adapter-based methods are poorly suited to this because limiting the update to low-rank changes in specific layers is too restrictive when you are trying to encode entirely new knowledge domains.

Advantages Over Adapter Methods

The primary advantage of full fine-tuning over adapter methods is representational capacity. LoRA and QLoRA constrain the weight updates to lie in a low-dimensional subspace determined by the rank parameter. For many tasks, this constraint is not binding. The optimal weight update for a typical instruction-following task can be well-approximated in a low-rank form. But for tasks involving significant knowledge injection, large-scale behavioral change, or complex multi-step reasoning adaptation, the low-rank constraint can be a real limitation on final model quality.

Full fine-tuning also eliminates adapter overhead at inference time. A LoRA-adapted model requires either merging the adapter back into the base model (adding a post-training step) or applying the adapter dynamically during inference (adding compute overhead). A fully fine-tuned model is a single set of weights with no additional components, simplifying deployment and ensuring inference performance is identical to the base architecture.

For large, high-quality datasets, full fine-tuning typically achieves the best final quality of any method. The relationship between dataset size and the quality advantage of full fine-tuning over adapters is approximately monotonic: with small datasets (fewer than a few thousand examples), the difference is often negligible or even reversed (adapters can overfit less). With large datasets (tens of thousands of examples or more), full fine-tuning tends to produce noticeably better results. This pattern is one of the key inputs to the decision of which method to use.

VRAM Requirements

Full fine-tuning requires substantially more memory than adapter methods because gradients and optimizer states must be stored for every parameter, not just the small adapter matrices. The memory requirement is approximately 16 to 20 bytes per parameter when using the Adam optimizer with bfloat16 weights: roughly 2 bytes per parameter for weights, 2 bytes per parameter for gradients, 4 bytes per parameter for the first moment (fp32), and 4 bytes per parameter for the second moment (fp32), plus activation memory for the current forward and backward pass.

In practical terms: a 7 billion parameter model requires approximately 56 GB for full fine-tuning (accounting for weights, gradients, optimizer states, and activations). A 13 billion parameter model requires approximately 104 GB. A 70 billion parameter model requires approximately 560 GB, which exceeds what a typical single server can hold and requires distributed training across multiple nodes. These figures can be reduced somewhat by techniques like gradient checkpointing (trades compute for memory by recomputing activations during backward pass) and gradient accumulation (allows smaller per-device batch sizes).

BIOS handles the multi-device or multi-node coordination automatically for large models that require distributed training. You specify the model and training configuration. BIOS selects an appropriate hardware configuration and manages the distributed training job. This abstraction is one of the practical advantages of using a managed platform like BIOS for full fine-tuning compared to managing your own training infrastructure.

When Full Fine-Tuning is Necessary

Several scenarios favor full fine-tuning over adapter methods. The first is continued pre-training on a large domain-specific corpus. If you have hundreds of millions or billions of tokens of specialized text (a legal corpus, a biomedical literature collection, a codebase) and you want to extend the model's base knowledge before instruction tuning, full fine-tuning is the appropriate method. Adapter methods cannot effectively encode knowledge from large corpora because the low-rank constraint limits how much new information can be incorporated.

The second scenario is domain adaptation with a large, high-quality instruction dataset. When you have more than approximately 50,000 high-quality instruction-response examples and your task requires significant behavioral change from the base model, full fine-tuning tends to outperform LoRA meaningfully. The extra representational capacity becomes necessary at this scale to fully absorb the training signal.

The third scenario is when absolute inference performance is a priority and you cannot afford even the small overhead of dynamically applying LoRA adapters. A fully fine-tuned model requires no post-processing of weights and has no additional inference-time components. If you are deploying at high scale where every millisecond of latency matters, full fine-tuning plus a clean merged model gives you the fastest possible inference path.

Finally, full fine-tuning is sometimes necessary when the task requires changes to the model's output distribution that are difficult to achieve with low-rank updates. Tasks involving significant stylistic shifts, multilingual expansion, or alignment to domain-specific terminology sometimes see quality plateaus with adapter methods that disappear with full fine-tuning.

Dataset Size Considerations

Dataset size is one of the primary drivers of whether full fine-tuning is worth its additional cost over adapter methods. As a rough guideline, for 7B parameter models you generally need at least 10,000 high-quality examples before full fine-tuning begins to show a meaningful advantage over LoRA. Below this threshold, the regularization effect of the low-rank constraint in LoRA often helps more than it hurts. LoRA's limited parameter space prevents overfitting when the dataset is small, whereas full fine-tuning on a small dataset can overfit the training examples while degrading performance on held-out data.

For larger models, the threshold where full fine-tuning becomes advantageous tends to scale with model size. A 70B model may need 50,000 or more examples before full fine-tuning consistently outperforms LoRA, because the larger model can make effective use of LoRA adapters with higher rank before hitting the capacity ceiling.

Continued pre-training is an exception to this general pattern. Because it uses next-token prediction loss on unlabeled corpora rather than instruction-response pairs, the effective dataset size is measured in tokens rather than examples, and even billions of tokens benefit from full fine-tuning rather than adapters. If you are pre-training a model on a domain-specific corpus with more than a few hundred million tokens, full fine-tuning is almost always the right choice regardless of the model size.

BIOS Setup

Setting up full fine-tuning on BIOS follows the same basic workflow as other training methods, with a few configuration-specific considerations. The BIOS training configurator guides you through the full setup:

In the training configuration, select "Full Fine-Tune" as the adapter type. This removes the rank, alpha, and target modules settings that are specific to LoRA-based methods and replaces them with the core hyperparameter settings for full parameter training.

For full fine-tuning, learning rates should be lower than for LoRA. Starting values in the range of 1e-5 to 2e-5 are typical for instruction fine-tuning, and 1e-6 to 5e-6 for domain-specific adaptation where you want to change the model's behavior significantly without overwriting its base capabilities. Use a cosine learning rate schedule with warmup to avoid large initial updates.

Enable gradient checkpointing in the configuration. This is especially important for full fine-tuning where activation memory is a significant contributor to total memory usage. Gradient checkpointing typically reduces activation memory by 60 to 70 percent at the cost of 20 to 30 percent slower training. For long sequence lengths or large batch sizes, the memory savings may make the difference between a run fitting in available memory or not.

BIOS automatically handles multi-device distribution for models that require it. If your configured model size and batch size exceed what can fit on a single device, BIOS will distribute the training across multiple devices using data parallelism and, for very large models, tensor parallelism. This scaling is transparent from the configuration interface. You set the training parameters you want, and BIOS handles the distribution strategy.

Cost Optimization

Full fine-tuning is the most compute-intensive training method, so cost management deserves deliberate attention. Several strategies can reduce the total cost of a full fine-tuning run without significantly compromising quality.

First, validate your hypothesis with a LoRA run before committing to full fine-tuning. Run a LoRA experiment with the same dataset and similar hyperparameters to establish a baseline. If LoRA achieves quality close to your target, it may not be worth the additional cost of full fine-tuning. If LoRA falls short, the full fine-tuning run is justified by the quality delta.

Second, start with a smaller model from the same family. If you plan to ultimately fine-tune a 70B parameter model, first validate your dataset and training approach on a 7B or 13B model from the same family. The smaller model trains much faster and cheaper, letting you iterate on dataset quality, learning rate selection, and epoch count before scaling up. Lessons learned on the small model generally transfer to the large model, though you will need to adjust learning rate and batch size when scaling.

Third, use gradient checkpointing and gradient accumulation to maximize batch size within your memory budget. Larger effective batch sizes generally lead to better convergence per epoch, reducing the number of epochs needed and, with it, your bill.

Fourth, monitor training closely and use early stopping. If validation loss stops improving, there is no benefit to continuing training. Stop the run at the best checkpoint rather than running to the scheduled end. Every minute you shave off is money you keep.

The BIOS training detail view lets you watch the loss curve in real time and stop the run at any point:

Best Practices for Full Fine-Tuning

Full fine-tuning demands more careful preparation than adapter methods because the higher compute cost magnifies the impact of mistakes. Before committing to a full fine-tuning run, always validate your approach with a LoRA experiment first. If LoRA with rank 64 does not meet your quality requirements, full fine-tuning is justified. If LoRA achieves acceptable quality, the additional cost of full fine-tuning may not be worthwhile.

Dataset quality is even more critical for full fine-tuning than for adapter methods. Because every parameter in the model is being updated, the model has the capacity to memorize noise and errors in your data. Deduplicate your dataset, remove low-quality examples, and ensure consistency in formatting and style. A clean dataset of 20,000 examples will typically produce a better model than a noisy dataset of 100,000 examples.

Use a cosine learning rate schedule with warmup for all full fine-tuning runs. The warmup phase (typically 3 to 10 percent of total steps) prevents large early updates that can destabilize training and partially overwrite pre-trained knowledge. The cosine decay then gradually reduces the learning rate as training progresses, allowing the model to settle into a good local minimum. Monitor the loss curve closely in the first 10 percent of training. If the loss is not decreasing smoothly, stop and adjust the learning rate before wasting compute on a run that will not converge.

Save checkpoints frequently, every 10 to 20 percent of training steps at minimum. Full fine-tuning runs are long and expensive, and recovering the best checkpoint is critical. If the model overfits in the later stages of training, you want to be able to fall back to an earlier checkpoint where validation loss was lowest rather than losing the entire run.

Getting Started with Full Fine-Tuning on BIOS

Your first full fine-tuning run starts with the data: upload a high-quality dataset with at least 10,000 examples for meaningful results. Use the dataset preview to verify formatting and quality before proceeding. Navigate to Training, click New Training Run, and select Full Fine-Tune as the adapter type in the configuration wizard.

Set your learning rate to 1e-5 as a starting point, enable gradient checkpointing to maximize your available memory, and configure 2 to 3 epochs for an initial run. BIOS will automatically select an appropriate hardware configuration based on your model size and training parameters. The platform handles multi-device distribution transparently. You do not need to configure distributed training settings yourself.

Monitor the run from the training list and detail views. The BIOS dashboard streams training loss, validation loss, learning rate, and throughput metrics in real time. If the loss curve looks healthy (smooth decrease in both training and validation loss), let the run complete and evaluate the final checkpoint. If you see signs of overfitting or divergence, stop the run early to save compute and adjust your configuration.

Per-second billing matters most here, where runs can last hours. If you stop a run after 45 minutes because the loss has plateaued, you pay for exactly 45 minutes of compute rather than rounding up to the next hour. That makes it feasible to run full fine-tuning experiments iteratively rather than betting everything on a single long run.

Related Articles