IN THIS BREAKDOWN · 10 SECTIONS
You can read 20% of this breakdown.
The paper in one minute
LoRA fine-tunes a frozen weight matrix W0 by learning a low-rank update BA, so the new weight is W0 + BA. It trains a tiny fraction of parameters and merges into W0 for serving. It usually trails full fine-tuning, and the common explanation is that rank r is too small.
The authors look at the change differently. Following weight normalization, they write every weight matrix as a magnitude (the length of each column) times a direction (each column scaled to unit length), and measure how much each part moves during training. In full fine-tuning, layers that change direction a lot tend to change magnitude little, and the reverse: a correlation of -0.62. LoRA moves both together, +0.83. Their reading is that LoRA cannot make a large magnitude change without also changing direction.
DoRA gives the magnitude its own trainable vector m, one number per column, and lets LoRA update only the direction: W' = m · (W0 + BA) / ‖W0 + BA‖, with the norm taken per column. At the start m equals W0's column norms, so W' = W0. After training it merges into one matrix like LoRA, so inference is unchanged. To save memory, the norm can be treated as a constant during backpropagation, which cut training memory by 24.4% on LLaMA-7B at a cost of 0.2 points.
DoRA beats LoRA on commonsense reasoning for four LLaMA models, on image and video understanding with VL-BART, on visual instruction tuning with LLaVA-1.5 and on instruction tuning combined with VeRA. It is also much more stable at low ranks.
Research notes: the problem, approach and results
points of average accuracy over LoRA on LLaMA-7B commonsense reasoning (74.7 to 78.4), with no inference overhead
LoRA versus DoRA average accuracy at rank 8 on LLaMA-7B; DoRA stays stable where LoRA fails
training memory from treating the column norm as a constant in backpropagation (37.3 to 28.2 GB on LLaMA-7B)
LoRA fine-tunes a model by adding a low-rank update to each weight matrix, which is cheap and adds no inference cost, but it usually trails full fine-tuning. The gap is usually blamed on too few trainable parameters.
Decompose each pretrained weight into a magnitude vector (one number per column) and a unit-norm direction. Train the magnitude directly and update the direction with LoRA. The authors show full fine-tuning tends to change magnitude and direction in opposite amounts, LoRA changes both together, and DoRA behaves like full fine-tuning.
On eight commonsense tasks DoRA beats LoRA by 3.7 points on LLaMA-7B, 1.0 on LLaMA-13B, 2.1 on LLaMA2-7B and 4.4 on LLaMA3-8B, with 0.01% more trainable parameters. At rank 8, LoRA collapses to 40.7 while DoRA holds 77.9. Detaching the norm from the gradient cuts training memory by 24.4%.
Why it matters to an FDE
Most customer fine-tunes are LoRA: an 8B model adapted to ticket triage, extraction, a style or a domain. DoRA is a change to that recipe, not a new pipeline. The adapter has the same shape plus one vector per adapted matrix, it merges into the base weights the same way, and serving is identical. The paper's acknowledgements note it was integrated into Hugging Face's PEFT library.
When it pays. The gains were largest where LoRA was weakest: at low rank (rank 8 on LLaMA-7B, 40.7 for LoRA against 77.9 for DoRA) and on models where LoRA trailed full fine-tuning. Half-rank DoRA beat full-rank LoRA on all four LLaMA models, so a customer squeezed for adapter size or memory can halve the rank.
What it costs. Training memory goes up over LoRA, because the gradient has to pass through a column norm. The paper's fix (detach the norm) brings DoRA from 37.3 to 28.2 GB on LLaMA-7B, but it never reports LoRA's memory in the same setting, so measure the difference before promising it fits.
What it does not change. If LoRA already matches or beats full fine-tuning, as on LLaVA here, the gain is small (0.7 points). DoRA narrows the gap to full fine-tuning; it does not fix a bad dataset.
Understand the mechanism. Try it on a real problem.
Unlock this breakdown and 149 more papers.
Premium opens every paper in full, plus every answer, concept, course and guide on the site. One payment for six months of access.
6 months · One payment · No auto-renewal
- ◇1 architecture diagram
- </>1 runnable code experiment
- ▦2 results tables
- ?5 interview questions with answers
- 03Key takeaways
The analysis, the update rule, where the gains came from and three misreadings
Free account - 04How it works
The decomposition analysis, the update and its gradient, the memory fix and placement choices
Premium - 05The numbers that matter
Commonsense results by model, rank sweep, vision-language, instruction tuning and memory
Premium - 06Try it yourself
Recheck the tables, then fit LoRA and DoRA to a weight change and see where rank runs out
Premium - 07Where it breaks
Copied baselines, unreported LoRA memory, unstable ranks, an outside QDoRA result and slips
Premium - 08Using it on a deployment
Swapping DoRA into a customer's LoRA fine-tune, sizing training memory and serving the result
Premium - 09Interview angles
Five questions this paper prepares you for, with answer hints
Premium - 10Read next
Where to go from here on this site
Premium
