GO TO A SECTION

↑ ↓ to navigate · Enter to openExplore all sections →
FDEInterviews logo
ICML 2024

DoRA: Weight-Decomposed Low-Rank Adaptation

Split each weight into per-column magnitude and direction; train magnitude directly, direction with LoRA. Same serving cost as LoRA, 1 to 4 points better, and far steadier at low rank.

Breakdown by FDE Interviews · 12 min read · Updated

About the original · 2024
AUTHORS
Liu, Wang, Yin, Molchanov, Wang, Cheng, Chen
FROM
NVIDIA, HKUST
PUBLISHED
Feb 2024 · ICML 2024
CITED BY
1,107Semantic Scholar · Oct 2026
IN THIS BREAKDOWN · 10 SECTIONS

You can read 20% of this breakdown.

01

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.

THE IDEA, VISUALLY
SPLIT EACH WEIGHT INTO MAGNITUDE AND DIRECTION W0 pretrained m = column norms of W0 V = W0 (frozen) + BA (LoRA, rank r) W' = m · (V + BA) / norm(V + BA), column by column train m (k numbers) and B, A; merge before serving same inference cost as LoRA; +0.01% trainable parameters HOW MAGNITUDE AND DIRECTION MOVE TOGETHER full fine-tuning -0.62 LoRA +0.83 DoRA -0.31 correlation of direction change and magnitude change, VL-BART query matrices across layers and steps (Section 4) MEMORY FIX (TABLE 7) treat norm(V + BA) as a constant in backprop: 37.3 → 28.2 GB on LLaMA-7B, accuracy 78.3 → 78.1 LoRA's own memory is not reported for comparison COMMONSENSE REASONING, 8 TASKS (TABLE 1) LLaMA-7B LoRA 74.7 DoRA 78.4 LLaMA-13B LoRA 80.5 DoRA 81.5 LLaMA2-7B LoRA 77.6 DoRA 79.7 LLaMA3-8B LoRA 80.8 DoRA 85.2 axis starts at 70; LoRA 7B/13B numbers from an earlier paper ACCURACY BY RANK, LLAMA-7B (TABLE 15) 61.9 39.5 r=4 77.9 40.7 r=8 77.5 70.9 r=16 78.4 74.7 r=32 72.1 65.8 r=64 accent = DoRA, grey = LoRA; both fall at r=64, and LoRA's r=4 and r=8 runs score below chance on some tasks
A per-column rescale is a full-rank change that low-rank LoRA cannot express, but one trainable number per column can. That is DoRA's whole trick, and why it holds up when the rank is small.
Research notes: the problem, approach and results
+3.7

points of average accuracy over LoRA on LLaMA-7B commonsense reasoning (74.7 to 78.4), with no inference overhead

40.7 vs 77.9

LoRA versus DoRA average accuracy at rank 8 on LLaMA-7B; DoRA stays stable where LoRA fails

-24.4%

training memory from treating the column norm as a constant in backpropagation (37.3 to 28.2 GB on LLaMA-7B)

THE PROBLEM

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.

THE IDEA

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.

THE RESULT

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

02

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.

THE FULL BREAKDOWN

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

Get Premium · ₹2,000 / $25
  • ◇1 architecture diagram
  • </>1 runnable code experiment
  • ▦2 results tables
  • ?5 interview questions with answers
  1. 03Key takeaways

    The analysis, the update rule, where the gains came from and three misreadings

    Free account
  2. 04How it works

    The decomposition analysis, the update and its gradient, the memory fix and placement choices

    Premium
  3. 05The numbers that matter

    Commonsense results by model, rank sweep, vision-language, instruction tuning and memory

    Premium
  4. 06Try it yourself

    Recheck the tables, then fit LoRA and DoRA to a weight change and see where rank runs out

    Premium
  5. 07Where it breaks

    Copied baselines, unreported LoRA memory, unstable ranks, an outside QDoRA result and slips

    Premium
  6. 08Using it on a deployment

    Swapping DoRA into a customer's LoRA fine-tune, sizing training memory and serving the result

    Premium
  7. 09Interview angles

    Five questions this paper prepares you for, with answer hints

    Premium
Back to the paper library →