一句话定义:DoRA(Weight-Decomposed Low-Rank Adaptation,权重分解低秩适配)是一种大模型微调方法,它把预训练权重拆成“幅度”和“方向”两部分分别学习,在低秩(rank 开得很小)时通常比 LoRA 更稳、效果更好。
原理:把一根箭头拆成“长度”和“朝向”
把神经网络里的一层权重想象成一排箭头。每支箭头只由两件事决定:它有多长(幅度),它指向哪(方向)。微调,就是让这排箭头重新摆放,好适应新任务。
LoRA 的做法是“不动原箭头,另加一个低秩修正量”,但在这个修正量里,长度和方向是搅在一起学的——想改朝向,长度也跟着乱动,容易顾此失彼。
DoRA 换了个思路:先把原始权重按列拆开,每列的“长度”抽成一个可训练向量 m,“方向”则归一化出来,组成方向矩阵 V。接着只对 V 做 LoRA 式的低秩更新,同时把 m 当作一组很短的参数一起训练。整个结构初始化成和原权重完全等价,所以训练刚开始时模型的原有能力一点没被破坏。
打个比方:LoRA 像一个把“音量”和“音色”焊死在同一个推子上的调音台,你只能整体推;DoRA 把它拆成两个独立旋钮,音量和音色各调各的。
和 LoRA 的区别
| LoRA | DoRA | |
|---|---|---|
| 学什么 | 直接学低秩增量 ΔW = BA | 先拆出幅度向量 m,再对方向矩阵做低秩更新 |
| 参数量 | 只多两个低秩矩阵 | 多两个低秩矩阵 + 一个幅度向量(很小) |
| 低秩下的表现 | rank 很小时容易掉点 | 通常更稳,更新形态更接近全量微调 |
| 推理开销 | 可合并回原权重 | 同样可合并,推理不变慢 |
| 训练开销 | 较低 | 略高,多一步分解计算 |
对从业者的意义
当你显存紧张、rank 只能往小里开的时候,DoRA 是值得先试的一档:多出来的参数和训练成本不大,换来的是低秩场景下更不容易“学不动”。如果你更看重生态支持广、工具链成熟、上手快,LoRA 依然是默认选择。
对普通职场人来说,这类方法的差别不会体现在使用体验上,而是体现在“同样一张显卡,能不能微调出更听话的模型”。具体哪些框架支持、参数怎么命名、默认值是多少,以官方页面为准。
