What does DoRA decompose, and why does it beat LoRA at the same rank?
Same topic, related formats. Practice these next.
Same topic, related formats. Practice these next.
DoRA (Weight-Decomposed Low-Rank Adaptation, Liu et al. 2024) decomposes each weight matrix before applying LoRA. What does it decompose into, what does LoRA's update get applied to, and why does this close the gap to full FT: especially at low ranks?
DoRA splits each weight column into magnitude and direction. It trains magnitude directly and LoRA-tunes only the direction, matching full fine-tuning more closely, especially at low rank.
Picture an arrow drawn on paper. An arrow has two facts: how long it is, and which way it points. The plain method tries to relearn both facts using one small, cramped notepad, so it wastes scarce space recording length when length is just a single number. The smarter method writes the length down separately on a sticky note, one number per arrow, adjusted directly, and saves the whole notepad for the harder job of steering which way the arrow points. Because length now has its own dedicated slot, the small notepad can spend all its room on direction. The result behaves much more like redoing the drawing from scratch, and the biggest gains show up exactly when the notepad is tiniest.
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example. Click to expand.
Everything you need to truly understand this topic: intuition, mechanics, step by step explanation, code, formulas, and worked example.
Everything important, quickly.
4 min: the magnitude-direction decomposition, what LoRA targets in DoRA, the full fine-tuning correlation evidence, why low rank wins most, and the cost and inference-merge story.
| Aspect | Vanilla LoRA | DoRA |
|---|---|---|
| What the update targets | The whole weight via one BA term | Direction only; magnitude is separate |
| Magnitude handling | Encoded implicitly inside BA | Learned directly, one scalar per column |
| Match to full fine-tuning | Different magnitude-direction correlation | Recovers the full-FT correlation pattern |
| Where it wins | Adequate at higher rank | Largest gain at low rank (r=4, r=8) |
| Extra cost | None beyond base LoRA | One scalar per column, forward-pass normalisation |
Real products, models, and research that use this idea.
What an interviewer would ask next. Try answering before peeking at the approach.
Red flags and common mistakes that signal junior thinking. Click to expand.
Saying DoRA just adds a learnable scalar to LoRA without naming WHAT it scales. The point is the magnitude versus direction split, with LoRA confined to the direction component only.
The night-before-the-interview bullets. Scan these on the way to the call.
Primary sources. Skim if you want the original framing.