算法论文/高效微调4——DoRA:权重分解的低秩适配方法

DoRA:权重分解的低秩适配方法 --- 论文翻译讲解

论文标题 : DoRA: Weight-Decomposed Low-Rank Adaptation

作者 : Shih-Yang Liu, Chien-Yi Wang, Hongxu Yin, Pavlo Molchanov, Yu-Chiang Frank Wang, Kwang-Ting Cheng, Min-Hung Chen

机构 : NVIDIA, HKUST

发表 : ICML 2024 (Oral)

arXiv : 2402.09353

代码: https://github.com/NVlabs/DoRA


目录

  1. 论文速览
  2. 背景与动机
  3. [核心发现:LoRA 与 FT 的学习模式差异](#核心发现:LoRA 与 FT 的学习模式差异)
  4. [DoRA 方法详解](#DoRA 方法详解)
  5. 实验结果
  6. 更广泛的影响
  7. 核心结论与个人解读

1. 论文速览

LoRA 是当前最流行的参数高效微调(PEFT)方法之一,但它与全量微调(FT)之间始终存在精度差距。以往研究通常将这一差距简单归因于"可训练参数太少",而 DoRA 的作者们提出了一个更深层的问题:LoRA 和 FT 在权重的学习模式上是否本质不同?

通过将权重矩阵分解为**大小(magnitude)方向(direction)**两个组件,作者发现了一个关键现象:

  • LoRA 倾向于同比例地改变方向和大小(正相关,斜率为正)
  • FT 则表现出负相关模式------当方向变化大时大小变化小,反之亦然

基于这一发现,DoRA 将预训练权重分解为大小和方向两部分分别微调,其中方向部分用 LoRA 高效更新。实验表明,DoRA 在几乎所有任务上稳定超越 LoRA,且不引入任何额外推理开销。

图 1: DoRA 将预训练权重分解为大小(Magnitude)和方向(Direction)两个组件。方向组件通过 LoRA 进行高效更新,大小组件作为可训练向量单独优化。训练完成后,两部分可合并回预训练权重,不增加推理延迟。


2. 背景与动机

2.1 PEFT 方法概览

参数高效微调(PEFT)方法旨在用极少量参数适配大模型到下游任务,主要分为三类:

类别 代表方法 核心思路 推理开销
Adapter 类 Houlsby et al. (2019), He et al. (2021) 在冻结的主干网络中插入额外可训练模块 有额外延迟
Prompt 类 Lester et al. (2021) 在输入中添加可训练的软令牌 有额外延迟
LoRA 类 LoRA, VeRA 等 用低秩矩阵近似权重变化,可合并回原始权重 无额外延迟

LoRA 类方法的最大优势在于:训练完成后,低秩更新可以合并到预训练权重中,推理时与原始模型完全一致。然而,LoRA 与 FT 之间的精度差距始终存在。

2.2 LoRA 回顾

对于预训练权重矩阵 W 0 ∈ R d × k W_0 \in \mathbb{R}^{d \times k} W0∈Rd×k,LoRA 将权重更新建模为低秩分解:

W ′ = W 0 + Δ W = W 0 + B A W' = W_0 + \Delta W = W_0 + BA W′=W0+ΔW=W0+BA

其中 B ∈ R d × r B \in \mathbb{R}^{d \times r} B∈Rd×r、 A ∈ R r × k A \in \mathbb{R}^{r \times k} A∈Rr×k, r ≪ min ⁡ ( d , k ) r \ll \min(d, k) r≪min(d,k)。 A A A 用 Kaiming 均匀分布初始化, B B B 初始化为零,保证训练开始时 Δ W = 0 \Delta W = 0 ΔW=0。

LoRA 的原始论文指出:随着秩 r r r 增大,LoRA 可以逐渐逼近 FT 的表达能力。因此,以往研究普遍将精度差距归因于"参数数量不足"。但作者认为,这背后可能有更深层的结构性原因。


3. 核心发现:LoRA 与 FT 的学习模式差异

3.1 权重分解分析框架

受权重归一化(Weight Normalization)启发,作者将权重矩阵 W ∈ R d × k W \in \mathbb{R}^{d \times k} W∈Rd×k 分解为大小和方向两个组件:

W = m V ∥ V ∥ c W = m \frac{V}{\|V\|_c} W=m∥V∥cV

其中:

  • m ∈ R 1 × k m \in \mathbb{R}^{1 \times k} m∈R1×k 是大小向量(每列一个标量)
  • V ∈ R d × k V \in \mathbb{R}^{d \times k} V∈Rd×k 是方向矩阵
  • ∥ ⋅ ∥ c \|\cdot\|_c ∥⋅∥c 表示按列计算的向量范数,使得 V / ∥ V ∥ c V/\|V\|_c V/∥V∥c 的每一列都是单位向量

3.2 分析方法

作者以 VL-BART 在四个图像-文本任务上的微调为案例,分别对预训练权重 W 0 W_0 W0、全量微调权重 W F T W_{FT} WFT 和 LoRA 合并权重 W L o R A W_{LoRA} WLoRA 做权重分解,计算大小差异和方向差异:

Δ M t = ∑ n = 1 k ∣ m n t − m n 0 ∣ k , Δ D t = ∑ n = 1 k ( 1 − cos ⁡ ( V n t , W n 0 ) ) k \Delta M^t = \frac{\sum_{n=1}^{k} |m^{t}n - m^0_n|}{k}, \quad \Delta D^t = \frac{\sum{n=1}^{k} (1 - \cos(V^{t}_n, W^0_n))}{k} ΔMt=k∑n=1k∣mnt−mn0∣,ΔDt=k∑n=1k(1−cos(Vnt,Wn0))

每个 ( Δ D t , Δ M t ) (\Delta D^t, \Delta M^t) (ΔDt,ΔMt) 对应不同层和不同训练步数的查询权重矩阵,绘制散点图。

3.3 关键发现

图 2: FT(左)、LoRA(中)、DoRA(右)在查询权重矩阵上的大小与方向更新散点图。不同标记代表不同训练步数,不同颜色代表不同层。

从图 2 中可以观察到截然不同的学习模式:

  • FT(图 a) : 呈现负斜率 趋势------方向变化大时大小变化小,反之亦然。相关系数为 -0.62
  • LoRA(图 b) : 呈现明显的正斜率 趋势------方向和大小同比例增减。相关系数为 +0.83
  • DoRA(图 c) : 呈现与 FT 类似的负斜率 趋势。相关系数为 -0.31

为什么 FT 和 DoRA 呈现负相关? 作者的解释是:预训练权重已经蕴含了大量适用于下游任务的知识。当模型有足够的学习能力时,只需要在大小或方向某一个维度上做较大调整就足以完成适配,不需要两者同时大幅变化。而 LoRA 试图同时学习大小和方向的调整,这对它来说过于复杂,导致它只能"一刀切"地同比例调整。


4. DoRA 方法详解

4.1 核心思想

DoRA 的设计直觉有两方面:

  1. 分而治之:将 LoRA 的任务从"同时学习大小和方向调整"简化为"仅学习方向调整",同时让大小组件作为独立可训练参数自由优化。这降低了 LoRA 的学习难度。
  2. 优化稳定性:权重分解本身有助于改善梯度条件,使方向更新更加稳定。

与权重归一化的关键区别在于:权重归一化从零开始训练两个组件,对初始化敏感;而 DoRA 的两个组件都从预训练权重初始化,不存在初始化问题。

4.2 数学公式

初始化时, m = ∥ W 0 ∥ c m = \|W_0\|_c m=∥W0∥c, V = W 0 V = W_0 V=W0。训练时 V V V 冻结, m m m 可训练,方向更新通过 LoRA 进行:

W ′ = m V + Δ V ∥ V + Δ V ∥ c = m W 0 + B A ∥ W 0 + B A ∥ c W' = m \frac{V + \Delta V}{\|V + \Delta V\|_c} = m \frac{W_0 + BA}{\|W_0 + BA\|_c} W′=m∥V+ΔV∥cV+ΔV=m∥W0+BA∥cW0+BA

其中 Δ V = B A \Delta V = BA ΔV=BA 是 LoRA 学习的低秩增量。 B B B 和 A A A 的初始化策略与 LoRA 一致,保证训练开始时 W ′ = W 0 W' = W_0 W′=W0。

训练完成后, m m m 和 V + Δ V V + \Delta V V+ΔV 可以合并回预训练权重,不引入任何推理开销

4.3 梯度分析

DoRA 对大小 m m m 和方向 V ′ = V + Δ V V' = V + \Delta V V′=V+ΔV 的梯度为:

∇ V ′ L = m ∥ V ′ ∥ c ( I − V ′ V ′ T ∥ V ′ ∥ c 2 ) ∇ W ′ L \nabla_{V'} L = \frac{m}{\|V'\|_c} \left( I - \frac{V' V'^T}{\|V'\|c^2} \right) \nabla{W'} L ∇V′L=∥V′∥cm(I−∥V′∥c2V′V′T)∇W′L

∇ m L = ∇ W ′ L ⋅ V ′ ∥ V ′ ∥ c \nabla_m L = \nabla_{W'} L \cdot \frac{V'}{\|V'\|_c} ∇mL=∇W′L⋅∥V′∥cV′

公式 (6) 表明,权重梯度 ∇ W ′ L \nabla_{W'} L ∇W′L 被缩放因子 m / ∥ V ′ ∥ c m/\|V'\|_c m/∥V′∥c 缩放,并被投影到远离当前权重的方向。这两个效应使梯度协方差矩阵更接近单位矩阵,有利于优化。

负斜率模式的梯度推导 :作者通过两个假想更新场景 S 1 S_1 S1(小方向更新)和 S 2 S_2 S2(大方向更新),在 ∥ Δ w S 1 ∥ = ∥ Δ w S 2 ∥ \|\Delta w_{S_1}\| = \|\Delta w_{S_2}\| ∥ΔwS1∥=∥ΔwS2∥ 的条件下,证明了:

∣ ∇ m ∗ S 1 L ∣ > ∣ ∇ m ∗ S 2 L ∣ |\nabla_{m^*}^{S_1} L| > |\nabla_{m^*}^{S_2} L| ∣∇m∗S1L∣>∣∇m∗S2L∣

即:方向变化较小时,大小的梯度更大(大小更新更多);方向变化较大时,大小的梯度更小(大小更新更少)。这从梯度角度解释了 DoRA 为何呈现与 FT 类似的负相关模式。

4.4 训练开销优化

DoRA 将低秩适配引导到方向组件上,导致 V ′ V' V′ 的梯度与 W ′ W' W′ 的梯度不同,需要在反向传播中保存额外中间状态。为解决此问题,作者提出将 ∥ V + Δ V ∥ c \|V + \Delta V\|_c ∥V+ΔV∥c 视为常数(从梯度图中 detach):

∇ V ′ L = m C ∇ W ′ L , 其中 C = ∥ V ′ ∥ c \nabla_{V'} L = \frac{m}{C} \nabla_{W'} L, \quad \text{其中 } C = \|V'\|_c ∇V′L=Cm∇W′L,其中 C=∥V′∥c

这一修改使得:

  • 训练显存减少约 24.4% (LLaMA 微调)和 12.4%(VL-BART 微调)
  • 精度几乎不受影响:VL-BART 上无变化,LLaMA 上仅差 0.2

5. 实验结果

DoRA 在多个领域和多个模型架构上进行了全面验证,涵盖 NLP、视觉-语言和图像生成任务。

5.1 常识推理(LLaMA 系列)

Table 1: LLaMA-7B/13B、LLaMA2-7B、LLaMA3-8B 在 8 个常识推理数据集上的精度对比。DoRA† 表示将 DoRA 的秩减半后的配置。

核心数据(8 任务平均精度)

模型 LoRA DoRA 提升 DoRA† (秩减半) 提升 vs LoRA
LLaMA-7B 74.7 78.4 +3.7 77.5 +2.8
LLaMA-13B 80.5 81.5 +1.0 80.8 +0.3
LLaMA2-7B 77.6 79.7 +2.1 80.5 +2.9
LLaMA3-8B 80.8 85.2 +4.4 85.0 +4.2

关键发现

  • DoRA 在所有模型上稳定超越 LoRA,LLaMA-7B 上甚至超过了 ChatGPT(78.4 vs 77.0)
  • DoRA†(秩减半) 仅用 LoRA 一半的可训练参数,仍然在所有模型上超越 LoRA,说明 DoRA 显著提升了 LoRA 的学习能力
  • Figure 3 的可视化进一步证实:DoRA 微调后的权重在大小和方向上都比 LoRA 更接近预训练权重,说明好的微调不需要剧烈的权重变化

5.2 图像/视频-文本理解(VL-BART)

Table 2 & 3: VL-BART 在图像-文本和视频-文本任务上的多任务评估结果。

图像-文本任务(VQAv2, GQA, NLVR2, MSCOCO Caption)

方法 参数占比 (%) 平均精度
FT 100 77.3
LoRA 5.93 76.5
DoRA 5.96 77.4

视频-文本任务(TVQA, How2QA, TVC, YC2C)

方法 参数占比 (%) 平均精度
FT 100 87.5
LoRA 5.17 83.5
DoRA 5.19 85.4

DoRA 在图像-文本任务上提升 +0.9(达到 FT 水平),在视频-文本任务上提升 +1.9。

5.3 视觉指令微调(LLaVA-1.5-7B)

Table 4: LLaVA-1.5-7B 在 7 个视觉-语言基准上的平均精度。

方法 参数占比 (%) 平均精度
FT 100 66.5
LoRA 4.61 66.9
DoRA 4.63 67.6

值得注意的是,此处 LoRA 已经超过 FT(可能 FT 出现了过拟合),但 DoRA 仍然在 LoRA 基础上提升了 +0.7,比 FT 提升 +1.1。

5.4 与其他 LoRA 变体的兼容性

Table 5: LLaMA-7B/LLaMA2-7B 在 MT-Bench 上的 GPT-4 评分。

DoRA 的方向更新 Δ V \Delta V ΔV 可以替换为任何 LoRA 变体。作者选择 VeRA 作为案例,组合命名为 DVeRA

模型 方法 参数占比 (%) MT-Bench 评分
LLaMA-7B LoRA 2.31 5.1
LLaMA-7B DoRA 2.33 5.5
LLaMA-7B VeRA 0.02 4.3
LLaMA-7B DVeRA 0.04 5.0
LLaMA2-7B LoRA 2.31 5.7
LLaMA2-7B DoRA 2.33 6.0
LLaMA2-7B VeRA 0.02 5.5
LLaMA2-7B DVeRA 0.04 6.0

DVeRA 仅用 LoRA 约 1/60 的参数,就在 LLaMA2-7B 上达到了与 LoRA 相同的 6.0 分。Figure 4 进一步展示了在不同训练样本量(1000~10000)下,DoRA/DVeRA 始终优于 LoRA/VeRA。

5.5 不同秩设置下的鲁棒性

Figure 5 展示了在秩 r ∈ { 4 , 8 , 16 , 32 , 64 } r \in \{4, 8, 16, 32, 64\} r∈{4,8,16,32,64} 范围内 DoRA 与 LoRA 的对比:

  • DoRA 在所有秩设置下都稳定优于 LoRA
  • 低秩时差距尤为显著: r = 8 r=8 r=8 时 DoRA 比 LoRA 高 37.2% , r = 4 r=4 r=4 时高 22.4%
  • LoRA 在 r = 8 r=8 r=8 时平均精度骤降至 40.74%, r = 4 r=4 r=4 时仅 39.49%;而 DoRA 在 r = 8 r=8 r=8 时仍保持 77.96%, r = 4 r=4 r=4 时为 61.89%

5.6 微调粒度分析

Table 6: LLaMA-7B/13B 上不同微调粒度的 DoRA。m 和 V 分别表示更新大小和方向的模块。

模型 配置 参数占比 (%) 平均精度
LLaMA-7B LoRA (QKVUD 全更新) 0.83 74.7
LLaMA-7B DoRA (QKVUD 全更新) 0.84 78.1
LLaMA-7B DoRA (QKV 方向 + 全部大小) 0.39 77.5
LLaMA-13B LoRA (QKVUD 全更新) 0.67 80.5
LLaMA-13B DoRA (QKVUD 全更新) 0.68 81.5
LLaMA-13B DoRA (QKV 方向 + 全部大小) 0.31 81.3

仅更新 QKV 的方向分量 + 所有模块的大小分量,参数量不到 LoRA 的一半,仍然在 LLaMA-7B 上超出 LoRA +2.8,LLaMA-13B 上超出 +0.8。这说明大小分量的调整非常重要,而方向调整可以集中在注意力层。

5.7 附录补充:权重差异可视化

Figure 8: LLaMA2-7B 上 Q/K/V 权重矩阵的逐层大小差异(ΔM)和方向差异(ΔD)。灰色为 LoRA,绿色为 DoRA。

在所有层和所有矩阵类型中,DoRA 的权重变化(绿色线)都显著小于 LoRA(灰色线),特别是在前几层差距最为明显。这进一步验证了核心假设:强大的基础模型不需要剧烈的权重变化就能有效适配下游任务


6. 更广泛的影响

6.1 QDoRA:增强 QLoRA

QLoRA 通过将预训练模型量化为 4-bit 来降低显存需求。既然 DoRA 缩小了 LoRA 与 FT 的差距,自然可以探索 DoRA 能否在 QLoRA 框架中同样提升精度。

Answer.AI 团队将 QLoRA 中的 LoRA 组件替换为 DoRA,命名为 QDoRA,并结合 FSDP(Fully Sharded Data Parallel)实现多 GPU 并行训练。在 Orca-Math 数据集上的实验结果:

模型 Zero-shot Five-shot FT QLoRA QDoRA
LLaMA2-7B 0.07 0.08 0.26 0.19 0.26
LLaMA3-8B 0.23 0.27 0.56 0.32 0.56 (精确匹配 0.12 → 略超 FT)

QDoRA 不仅大幅超越 QLoRA,甚至略微超过了全量微调,同时使用远少于 FT 的显存。这意味着在消费级 GPU 上微调大语言模型变得更加可行。


7. 核心结论与个人解读

7.1 论文核心贡献

  1. 全新分析视角:首次通过权重分解揭示 LoRA 与 FT 的学习模式存在本质差异------LoRA 呈正相关,FT 呈负相关。这不是简单的"参数不够"问题,而是学习模式的结构性缺陷。

  2. 简洁有效的方法:DoRA 的核心改动极其轻量------在 LoRA 基础上增加一个可训练的大小向量,将 LoRA 的更新引导到方向维度。训练后可合并,零推理开销。

  3. 全面的实验验证:覆盖 NLP(常识推理、指令微调)、视觉-语言(图像/视频-文本理解、视觉指令微调)、图像生成(SDXL)三大领域,在 LLaMA/LLaMA2/LLaMA3、VL-BART、LLaVA 等多个模型上稳定有效。

  4. 广泛的兼容性:DoRA 可以与 VeRA 等其他 LoRA 变体组合(DVeRA),也可以与 QLoRA 结合(QDoRA),在各自基础上进一步提升。

7.2 个人解读

为什么权重分解如此有效?

核心洞察在于:LoRA 用 B A BA BA 直接更新权重时,大小和方向的变化是耦合的------矩阵加法天然地同时改变两者。而 FT 作为全量更新,可以自由地调整任一维度。DoRA 通过显式分离大小和方向,赋予了 LoRA 类似的细粒度调整能力。

负相关模式的深层含义

FT 和 DoRA 的负相关模式揭示了一个重要原则:好的微调应该是"精准手术"而非"大刀阔斧"。预训练模型已经拥有丰富的知识,微调时只需在关键维度上做精确调整。LoRA 的正相关模式意味着它总是在"同时调大小和方向",缺乏针对性------这正解释了为何 LoRA 需要更大的权重变化却获得更差的效果(Figure 3 和 Figure 8 的可视化均支持这一点)。

实践建议

  • DoRA 可以作为 LoRA 的直接替代品,几乎不增加参数量和训练成本,但带来稳定的精度提升
  • 在低秩场景(如 r = 4 r=4 r=4 或 r = 8 r=8 r=8)下,DoRA 的优势尤为显著,适合对参数量有严格约束的场景
  • 如果显存极为紧张,可以考虑 DoRA†(秩减半),用更少参数仍超越标准 LoRA
  • DoRA 已被集成到 HuggingFace PEFT 库中,使用门槛很低

局限性思考

论文在梯度分析部分的理论推导做了一定简化假设(如 ∥ Δ w S 1 ∥ = ∥ Δ w S 2 ∥ \|\Delta w_{S_1}\| = \|\Delta w_{S_2}\| ∥ΔwS1∥=∥ΔwS2∥),这在实际训练中不一定严格成立。此外,虽然实验覆盖面广,但主要聚焦在 Transformer 架构,对其他架构(如 CNN、RNN)的有效性尚待验证。作者在结论中也提到,未来计划探索 DoRA 在音频等非语言/视觉领域的泛化能力。


本文档基于 arXiv:2402.09353 (v6, 2024-07-09) 撰写,所有数据均来自论文原文。

相关推荐
AI探索先锋2 小时前
A* 路径规划:四种算法的进化史-学习
学习·算法
旖旎夜光3 小时前
LeetCode 202:快乐数(双指针问题) —— 题解
数据结构·c++·算法·leetcode·双指针
cpp_25014 小时前
P1113 [USACO02FEB] 杂务
数据结构·c++·算法·动态规划·图论·拓扑排序·洛谷题解
月光船幽幽4 小时前
门控函数SHS阈值与调制机制解析
人工智能·python·算法
Doraemomo4 小时前
数据结构-哈希表
数据结构·算法·散列表
君君思密达4 小时前
Leetcode Hot 100 题目详解-哈希表
数据结构·算法·leetcode
lucas_AI4 小时前
Muse Glimmer 30B:Meta 难得给的真开源,强在哪、虚在哪
人工智能·算法
ai产品老杨4 小时前
国产NPU视觉算法完整流程
算法
过期的秋刀鱼!4 小时前
带替换的采样
人工智能·python·算法·决策树·机器学习