2026年4月19日

04-AdaLoRA、DoRA、IA³ 等 LoRA 扩展方法

markdown

知识库大模型训练与对齐

markdown

04-AdaLoRA、DoRA、IA³ 等 LoRA 扩展方法

概述

LoRA 自 2021 年提出后,催生了大量扩展方法。这些方法针对 LoRA 的不同局限性(固定 rank、表达能力有限、缺乏对权重更新的细粒度控制等)进行了改进。本章介绍最重要的几种扩展。


1. AdaLoRA(Adaptive LoRA)

论文信息

  • 标题:Adaptive Budget Allocation for Parameter-Efficient Fine-Tuning
  • 作者:Zhang et al., 2023

动机

标准 LoRA 对所有目标层使用相同的 rank,但不同层对下游任务的重要性差异很大。注意力层可能需要较大的 rank,而某些 FFN 层可能几乎不需要适配。均匀分配 rank 是次优的。

核心思想

AdaLoRA 将 LoRA 的 rank 视为可学习的资源,在训练过程中自适应地调整每层的 rank:

  1. 将奇异值参数化:AdaLoRA 不直接学习 A 和 B 矩阵,而是将低秩更新表示为 SVD 形式 ΔW=UΣVT\Delta W = U \Sigma V^T,其中 Σ\Sigma 是对角奇异值矩阵。
  2. 学习奇异值的重要性:训练过程中同时学习奇异值本身和对应的重要性分数。
  3. 基于重要性剪枝:对重要性低的奇异值进行剪枝(置零),将参数预算重新分配到更重要的层。
  4. 正则化:使用一个预算约束项鼓励总 rank 不超过预设上限。

工作流程

初始化:每层 LoRA rank = r_max(最大可能 rank)
    ↓
训练中:估计每个奇异值的重要性分数
    ↓
周期性剪枝:移除低重要性的奇异值,降低该层 rank
    ↓
收敛:各层 rank 自然收敛到合适的值

与标准 LoRA 对比

特性 LoRA AdaLoRA
rank 分配 均匀固定 自适应调整
参数预算利用 次优 更优
调参复杂度 需手动选 rank 自动搜索
训练开销 略高(额外的重要性估计)
效果 通常更好(同等参数预算下)

适用场景

  • 模型层数多、层间异质性大时
  • 不确定最优 rank 配置时
  • 对参数预算有严格限制时

2. DoRA(Weight-Decomposed Low-Rank Adaptation)

论文信息

  • 标题:DoRA: Weight-Decomposed Low-Rank Adaptation
  • 作者:Liu et al., 2024(NVIDIA)
  • 地位:2024 年最受关注的 LoRA 变体之一

动机

全参微调中,梯度更新同时改变权重的方向幅度。LoRA 的低秩更新将两者混在一起,限制了表达能力。DoRA 的洞察是:将这两个维度分离,可以获得更精细的控制。

核心思想

将预训练权重 W0W_0 分解为**幅度(magnitude)方向(direction)**两个分量:

W0=mVVcW_0 = m \cdot \frac{V}{\|V\|_c}

其中:

  • mR1×km \in \mathbb{R}^{1 \times k} 是每列的幅度向量
  • VRd×kV \in \mathbb{R}^{d \times k} 是方向矩阵
  • c\|\cdot\|_c 表示列范数

然后:

  • 方向分量用标准 LoRA 适配:V=V+BAV' = V + B \cdot A
  • 幅度分量用可学习向量适配:m=m+Δmm' = m + \Delta m

更新后的权重:

W=mV+BAV+BAcW' = m' \cdot \frac{V + BA}{\|V + BA\|_c}

为什么有效

  1. 更接近全参微调的更新模式:全参微调的梯度可以分解为方向变化和幅度变化,DoRA 显式建模了两者。
  2. 幅度向量几乎不增加参数mm 的维度是 1×k1 \times k,远小于 d×kd \times k 的方向矩阵。
  3. 作为 LoRA 的直接替换:可以无缝替代 LoRA,几乎不需要额外调参。

性能

论文报告在多项 benchmark 上:

  • Commonsense Reasoning:+1~3% vs LoRA
  • MMLU:+1~2% vs LoRA
  • GSM8K(数学推理):+2~5% vs LoRA
  • 在某些场景下甚至超过全参微调

局限

  • 比 LoRA 略多显存(额外的幅度向量 + 方向归一化计算)
  • 训练速度略慢(约 5-10%)
  • 2024 年初发表,生态支持仍在成熟中

3. IA³(Infused Adapter by Inhibiting and Amplifying Inner Activations)

论文信息

  • 标题:Few-Shot Parameter-Efficient Fine-Tuning is Better and Cheaper than In-Context Learning
  • 作者:Liu et al., 2022(HuggingFace + BigScience)
  • 场景:专为少样本学习设计

核心思想

不添加低秩矩阵,而是注入 rank-1 缩放向量,对 Transformer 内部的激活值进行逐元素缩放:

h=lvhh' = l_v \odot h

其中 lvl_v 是可学习的缩放向量,\odot 是逐元素乘法。

注入位置

IA³ 在三个关键位置注入缩放向量:

  1. 注意力 Key 缩放k=lk(Wkx)k' = l_k \odot (W_k \cdot x)
  2. 注意力 Value 缩放v=lv(Wvx)v' = l_v \odot (W_v \cdot x)
  3. FFN 激活缩放h=lffact(Wffx)h' = l_{ff} \odot \text{act}(W_{ff} \cdot x)

参数量

每个注入点只有一个缩放向量(维度 = hidden_dim),不改变权重的维度:

方法 每层新增参数量
LoRA(rank=8, q+v) 2×8×(d+d)=32d2 \times 8 \times (d + d) = 32d
IA³(k+v+ff) d+d+d=3dd + d + d = 3d

IA³ 的参数量约为 LoRA rank=8 的 1/10

优势与局限

  • 优势:极其轻量;少样本场景表现优异;训练速度极快
  • 局限:表达能力有限;在数据量充足的任务上不如 LoRA/DoRA;不适合复杂的多任务微调

4. LoRA+

论文信息

  • 作者:Hayou et al., 2024

核心改进

为 LoRA 的 A 和 B 矩阵设置不同的学习率

  • AA(降维矩阵):使用较高的学习率 ηA=η\eta_A = \eta
  • BB(升维矩阵):使用较低的学习率 ηB=η/λ\eta_B = \eta / \lambda,其中 λ1\lambda \gg 1

理论分析表明,这种非对称学习率可以更好地匹配预训练权重的分布特征,提升收敛速度和最终性能。

实践效果

在相同 rank 下比标准 LoRA 提升 1-2%,且无额外显存开销。


5. rsLoRA(Rank-Stabilized LoRA)

动机

标准 LoRA 使用 α/r\alpha / r 作为缩放因子。当 rank 增大时,这个缩放因子线性减小,可能导致训练不稳定。

改进

将缩放因子改为 α/r\alpha / \sqrt{r},使得更新幅度不会随 rank 增大而快速衰减。这使得使用更大的 rank 变得更加稳定。


6. PiSSA(Principal Singular Values and Singular Vectors Adaptation)

核心思想

与 LoRA 的思路"反过来":

  • LoRA 让 A 初始化为随机、B 初始化为零,训练从零更新开始
  • PiSSA 对 W0W_0 进行 SVD 分解,将主成分(最大的奇异值和奇异向量)分配给可训练的 A 和 B,将残差留在冻结权重中

效果:训练从一个已经包含"最重要信息"的状态开始,收敛更快、效果更好。


方法总结对比

方法 核心思想 参数量 表达能力 推荐场景
LoRA 低秩分解 BA 中等 通用场景
AdaLoRA 自适应 rank 低(更高效) 中高 异构模型、预算受限
DoRA 幅度+方向分解 低中 追求最优质量
IA³ rank-1 缩放向量 极低 少样本、极低资源
LoRA+ 非对称学习率 中高 LoRA 直接升级
rsLoRA rank-stable 缩放 中等 大 rank 场景
PiSSA 主成分初始化 快速收敛需求

参考:DoRA 论文 — https://arxiv.org/abs/2402.09353 参考:AdaLoRA 论文 — https://arxiv.org/abs/2303.10512 参考:IA³ 论文 — https://arxiv.org/abs/2205.05638


---