LoRA+: why does B want a higher learning rate than A?
B starts at zero and its gradient is bottlenecked, so a single shared learning rate under-trains it. LoRA+ gives B a roughly 16x higher rate than A.
Picture two people pushing a heavy cart together. One person is already leaning into it, warmed up and moving. The other is standing still with arms at their sides, starting from a dead stop. If you tell both to push with the same effort, the one starting cold barely helps, because they first have to overcome being frozen in place. The cart drifts unevenly and crawls along. So a smart coach tells the cold starter to push much harder than the warmed-up one, roughly sixteen times as hard, until both are shoving the cart at the same real pace. Now their combined effort moves the cart smoothly and quickly, instead of one person doing almost everything while the other lags behind the whole way. Match the effort to who is behind.
Detailed answer & concept explanation~7 min readEverything 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. 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.
5 min: LoRA factorisation recap, zero-init asymmetry, per-factor gradient bottleneck, the feature-learning argument, the ratio recipe and its tuning, then the production caveats and framework support.
| Aspect | Vanilla LoRA | LoRA+ |
|---|---|---|
| Learning rates | Single shared rate for A and B | Separate rates; B about 16 times A |
| Init asymmetry handled | No; B under-trains from zero start | Yes; higher B rate rebalances steps |
| Extra cost | None | Negligible; one config line |
| Main benefit | Baseline parameter efficiency | Faster convergence, small quality gain |
| Tuning burden | Tune one learning rate | Tune base rate plus the ratio |
Real products, models, and research that use this idea.
- Hugging Face PEFT exposes a LoRA+ learning-rate ratio option, letting practitioners split A and B rates with one config field on Llama 4 and Qwen fine-tunes.
- Unsloth's fine-tuning recipes document the LoRA+ ratio as a near-free convergence tweak when adapting open bases like Llama 3.1 8B.
- Teams fine-tuning DeepSeek V4 and Mistral variants with the TRL plus PEFT stack sweep the LoRA+ ratio alongside rank and alpha during hyperparameter search.
- Axolotl configs ship a loraplus_lr_ratio setting so users enable the higher B rate without writing custom optimiser groups.
What an interviewer would ask next. Try answering before peeking at the approach.
QWhy does swapping the A and B initialisation, putting the zero on A, not simply move the problem?
QHow does the optimal LoRA+ ratio interact with the alpha over rank scaling and the chosen rank?
Don't say thisRed flags and common mistakes that signal junior thinking. Click to expand.
Red flags and common mistakes that signal junior thinking. Click to expand.
Getting the ratio backwards by reasoning from parameter counts. The driver is the zero initialisation of B and its bottlenecked gradient, not how many parameters each factor holds.
The night-before-the-interview bullets. Scan these on the way to the call.
Primary sources. Skim if you want the original framing.
Same topic, related formats. Practice these next.