Introduction
If you have ever tried to fine-tune a Large Language Model (LLM) on your local machine, you have likely run into the dreaded “CUDA Out of Memory” error. Modern models like LLaMA-3 are incredibly capable, but they are also massive. Even with the advent of Parameter-Efficient Fine-Tuning (PEFT) methods like Low-Rank Adaptation (LoRA), the memory requirements often exceed what is available on standard consumer-grade hardware (like an NVIDIA RTX 3090 or 4090).
The current gold standard, LoRA, works by freezing the model’s weights and training small, low-rank adapter matrices. It significantly reduces the number of parameters you need to save. However, parameter count is only half the battle. The real memory killer during training is often the storage of intermediate states (activations) required for backpropagation.
Today, we are diving deep into a new research paper titled “From Weight-Based to State-Based Fine-Tuning” that challenges the foundational view of LoRA. The researchers propose a shift from tweaking weights to controlling states. They introduce a method called Parallel Control that achieves something remarkable: it allows for the fine-tuning of LLaMA-3-8B models on a single 24GB consumer GPU without needing to quantize the model, all while reducing computation time and preserving performance.
The Status Quo: Weight-Based Fine-Tuning
To understand the innovation of this paper, we first need to look at how we currently fine-tune models. The dominant paradigm is Weight-Based Fine-Tuning (Weight-FT).
How LoRA Works
In a standard neural network layer, we have a pre-trained weight matrix \(W_0\). When we fine-tune, we want to find an update \(\Delta W\) so that the new weight is \(W' = W_0 + \Delta W\).
In full fine-tuning, \(\Delta W\) is the same size as \(W_0\), which is huge. LoRA proposes that we approximate this update using two much smaller low-rank matrices, \(A\) and \(B\).

Here, \(W_0\) is frozen. Only \(A\) and \(B\) are trained. Because the rank \(r\) is small, the number of trainable parameters drops drastically.
The Hidden Bottleneck
While LoRA reduces parameters, it doesn’t fully solve the memory problem. Why? Because neural networks are deep. To calculate the gradients for \(A\) and \(B\) in the earlier layers of the network, the system must store the input and output activations (states) of every layer during the forward pass.
Even if you freeze a massive Feed-Forward Network (FFN) block, you still need to store its input and output to compute gradients for the LoRA adapters attached to it. As the sequence length or batch size increases, these activations consume gigabytes of GPU memory—often far more than the weights themselves.
The Paradigm Shift: From Weights to States
The researchers argue that viewing fine-tuning solely as “weight modification” limits our ability to optimize efficiency. Instead, they propose looking at neural networks through the lens of Control Theory.
Neural Networks as Dynamical Systems
Think of a neural network not as a stack of matrices, but as a dynamical system where data flows through time (layers).
- The System: The pre-trained model.
- The State (\(x_t\)): The features (activations) at layer \(t\).
- The Control: The adjustments we make to steer the model toward a downstream task.
In traditional Weight-FT, we try to steer the system by rebuilding the engine (changing \(W\)). The update looks like this:

Here, the modification \(\Delta W_t\) is trapped inside the non-linear activation function \(f_t\). This makes the dynamics complex and “non-affine.”
State-Based Fine-Tuning (State-FT)
What if, instead of changing the engine, we just added a thruster to the side? This is the core idea of State-Based Fine-Tuning. Instead of modifying the parameters \(W\) inside the function, we inject a control signal directly into the state flow.
Mathematically, this looks like an affine control system:

In this framework, we treat the pre-trained layer as a fixed function \(f_t\). We then add a parallel control term \(G(t)K(t)x(t)\). This decouples the “fine-tuning” from the “pre-trained dynamics.”
The researchers generalize this into a graph-based framework. If a neural network is a graph of states, we can modify any state \(x_v\) (a node) by adding a perturbation based on its ancestor state \(x_u\):

Here, \(g_v^u\) is the control function. It takes the input state \(x_u\) and a learnable control matrix \(M\), computes a correction, and adds it to the output of the original frozen block.
The Solution: Parallel Control
The theoretical framework leads to a practical architecture called Parallel Control. The goal is to maximize memory savings by skipping the storage of expensive intermediate states.
Designing the Control Block
Modern Transformers (like LLaMA or ViT) are built on Residual Blocks. A block usually consists of an Attention mechanism or a Feed-Forward Network (FFN), followed by a residual connection (adding the input to the output).
The authors propose treating an entire residual block (e.g., the whole MLP section including LayerNorm, expansion, activation, and projection) as a single “Black Box” unit.
Let’s visualize how this differs from LoRA:

- Figure (a) LoRA: Adapters are injected into the linear layers inside the block (e.g., Q, K, V). This means the internal structure of the block is still active in the gradient computation graph.
- Figure (b) Control: A new “green” path is added in parallel to the entire FFN block. The original FFN block is treated as a fixed function.
- Figure (c) Double Control: This concept is extended to cover both the Attention block and the FFN block.
The Mathematics of Parallel Control
For a specific block (let’s say an FFN block), the input is \(x_u\). The original block performs a complex transformation \(f_v^u(x_u)\). The Parallel Control adds a correction term \(g_v^u\).
The update rule for the state becomes:

The control function \(g_v^u\) can be simple. To keep parameters low, the authors use a low-rank bottleneck structure similar to LoRA:

This looks like LoRA, but the location is different. It is parallel to the whole block, not inside a linear layer.
Why This Saves Massive Amounts of Memory
This is the most critical part of the paper. Why does moving the adapter from “inside the layer” to “parallel to the block” save memory?
In standard LoRA (applied to an MLP block), you are fine-tuning weights inside the block. To compute gradients for those weights, you must store the activation after the first expansion layer of the MLP. In LLMs, this expansion layer projects the hidden dimension to \(4\times\) the size (e.g., from 4096 to 16384). Storing this massive tensor for every token in your batch is incredibly expensive.
In Parallel Control:
- The original MLP block is frozen.
- We do not need to update any parameters inside it.
- Therefore, we do not need to store its internal intermediate states for backpropagation.
- We can execute the original block in “inference mode” (no gradient tracking) and discard its internals immediately.
- We only need to store the input \(x_u\) and the small intermediate states of the low-rank control path.
The impact of this difference is visualized clearly below:

Look at the bar charts on the right.
- LoRA (Top): The orange bar (States) is massive. This represents the internal activations (\([x_t^1]_L\)) that must be kept alive.
- Control (Bottom): The memory footprint is tiny. The massive internal state is gone, replaced by the negligible memory cost of the control path.
Theoretical Validation
A natural concern is whether this “side-path” is as powerful as modifying the internal weights. The authors provide theoretical backing to ensure we aren’t losing expressivity.
Expressive Power
For deep linear networks, the authors prove that Parallel Control is mathematically equivalent to LoRA in terms of expressiveness, provided the total rank is preserved.

This inequality implies that there exists a weight matrix in the control path that can match the effect of internal low-rank adaptations.
Better Handling of Singularities
Interestingly, the State-FT framework might actually be better in some non-linear scenarios. If the pre-trained model has “dead” neurons or singularities where the gradient \(\nabla f(x_t)\) is zero, standard Weight-FT (which relies on multiplying by that gradient) gets stuck.

Because Parallel Control adds an additive term \(x(t)u(t)\) that is decoupled from the internal non-linearities of the frozen block, it can bypass these dead zones and continue to steer the state effectively.
Experiments and Results
The theory sounds solid, but does it work in practice? The researchers tested the method across Vision Transformers (ViT), RoBERTa, and LLaMA models.
1. The ViT Test
Using a Vision Transformer on CIFAR-100, they compared LoRA against Parallel Control.

The results are stark:
- Memory: Reduced from 18 GB to 12 GB.
- Time: Training time dropped from 4h 42m to 3h 24m.
- Accuracy: Slightly higher than LoRA.
2. GLUE Benchmark (RoBERTa)
On natural language understanding tasks, the trend continued.

The Control method outperformed LoRA and DoRA (a recent improvement on LoRA) on almost all tasks. It’s worth noting the “Avg” score: 86.14 for Control vs 85.62 for LoRA.
3. The “Holy Grail”: LLaMA on Consumer Hardware
This is the result that will excite students and hobbyists. The researchers took LLaMA-2-7B and LLaMA-3-8B and attempted to train them on a single NVIDIA RTX 3090 (24GB VRAM).
Usually, loading an 8B model in 16-bit precision takes about 16GB. Gradients and optimizer states for LoRA easily eat up the remaining 8GB, leading to OOM errors unless you use 4-bit or 8-bit quantization (which can degrade performance).
Using Double Control (applying control to both Attention and MLP blocks), they achieved the following:

- Memory Usage: ~20.6 GB for LLaMA-2-7B and ~22.1 GB for LLaMA-3-8B.
- Feasibility: It fits comfortably on a 24GB card without quantization.
- Performance: The average accuracy on commonsense reasoning tasks remains competitive (e.g., 84.7 average for DoubleControl on LLaMA-3-8B).
This implies that the memory barrier for fine-tuning state-of-the-art models has been significantly lowered. You no longer need A100s or aggressive quantization to fine-tune these models effectively.
Conclusion
The transition from Weight-Based to State-Based fine-tuning represents a fundamental rethinking of how we adapt large neural networks. By accepting the pre-trained model as a fixed dynamical system and applying Parallel Control to its states, we can decouple the memory cost of the pre-trained model from the fine-tuning process.
Key Takeaways:
- State over Weights: Controlling the data flow (states) is cleaner and more memory-efficient than hacking the engine (weights).
- Parallel Control: Adding a side-path to residual blocks allows us to discard massive internal activation states during training.
- Democratization: This method enables full-precision fine-tuning of 7B and 8B parameter models on consumer hardware (RTX 3090), a feat previously difficult without quantization.
This research opens the door for more accessible AI research. It suggests that the future of efficient training might not just be about smaller parameters, but about smarter control of the computational graph itself. For students and researchers with limited compute budgets, “Parallel Control” is a technique well worth implementing.
](https://deep-paper.org/en/paper/643_from_weight_based_to_state-1884/images/cover.png)