LLM - Weight-Decomposed Low-Rank Adaptation 之 DoRA

目录

Abstract

1.Introduce

2.Related Works

2.1 Parameter-Efficient Fine-Tuning (PEFT)

2.2 LoRA (Hu et al., 2022) and its variants

3.Pattern Analysis of LoRA and FT

3.1 Low-Rank Adaptation (LoRA)

3.2. Weight Decomposition Analysis

4.Method

4.1. Weight-Decomposed Low-Rank Adaptation

4.2. Gradient Analysis of DoRA

4.3. Reduction of Training Overhead

5.Experiments

5.1. Commonsense Reasoning

5.2. Image/Video-Text Understanding

5.3. Visual Instruction Tuning

5.4 Compatibility of DoRA with other LoRA variants

5.5 Robustness of DoRA towards different rank settings

5.6 Tuning Granularity Analysis

6.Conclusion

7.Impact Statements

8.Appendix

8.1 Weight decomposition analysis on the value weight matrix

8.2 Ablation study for the modification to reduce DoRA training cost

8.3 Hyperparameters

8.4 Visual instruction tuning evaluation result

8.5 Robustness of DoRA towards different rank

9.Some Personal Opinion


Abstract

[摘要]

在广泛使用的参数高效微调 (PEFT) 方法中,LoRA 及其变体因其避免额外的推理成本而受到相当大的欢迎。然而,这些方法和完全微调 (FullTuning) 之间仍然存在准确性差距。在这项工作中,我们首先引入了一种新的权重分解分析来研究 FT 和 LoRA 之间的内在差异。为了与研究结果相似 FT 的学习能力,我们提出了权重分解低秩适应(DoRA)。DoRA 将预训练的权重分解为两个分量、大小和方向进行微调,特别是使用 LoRA 进行方向更新,以有效地最小化可训练参数的数量。通过使用 DoRA,我们增强了 LoRA 的学习能力和训练稳定性,同时避免了任何额外的推理开销。DoRA 在各种下游任务(例如常识推理、视觉指令调整和图像/视频文本理解)上微调 LLA、LLAVA 和 VL-BART 始终优于 LoRA。

论文地址: https://arxiv.org/pdf/2402.09353.pdf

1.Introduce

[介绍]

使用广泛的通用域数据集预训练的模型显示出卓越的泛化能力,从自然语言处理 (NLP) 任务到多模态任务。为了针对特定下游任务定制这些通用模型,通常使用完全微调 (FT),涉及对所有模型参数进行再训练。然而,随着模型和数据集的大小扩大规模,与微调整个模型相关的费用变得非常大。

为了解决这个问题,引入了参数高效的微调 (PEFT) 方法,以仅使用最少数量的参数微调预训练模型。其中,不改变模型架构的 LoRA 因其简单性和有效性而变得非常流行。然而,LoRA 和 FT 之间仍然存在容量差距,这通常归因于可训练参数数量有限,而无需进一步探索其他潜在原因。

利用权值归一化,通过权值重新参数化改进梯度的条件,实现了更快的收敛,我们引入了一种新的权值分解分析,首先将模型权重重新参数化为大小和方向分量,随后检查 LoRA 和 FT 引入的大小和方向的变化。我们的分析表明,LoRA 和 FT 表现出明显不同的更新模式,导致我们推测这些变化反映了每种方法的学习能力。受我们的研究结果的启发,我们提出了权重分解低秩适应(DoRA),它首先将预训练的权重分解为其大小和方向分量,然后微调两者。

鉴于方向分量在参数方面的规模很大,我们利用 LoRA 进行方向适应以实现有效的微调,如图 1 所示。此外,通过经验和数学显示类似于 FT 的学习行为,表明学习能力与 FT 非常相似,我们已经在各种任务中验证了 DoRA,从 NLP 到视觉语言,以及各种主干,包括 LLM 和 LVLM。实验结果表明,DoRA 在不牺牲推理效率的情况下始终优于 LoRA,例如常识推理(LLaMA-7B/13B 上 +3.4/+1.0)、视觉指令调整(LLaVA-7B 上 +0.6)和图像/视频文本理解(VL-BART 上 +0.9/+1.9)。

我们的贡献总结如下:

• 我们引入了 DoRA,这是一种结合了权重分解的新型 PEFT 方法,实现了与 FT 非常相似的学习能力,而无需对 LoRA 进行任何额外的推理延迟。

• 我们引入了一种新的权重分解分析来揭示 FT 和不同 PEFT 方法学习模式的基本差异。

• DoRA 在各种任务上始终优于 LoRA,从 NLP 到视觉语言基准以及各种主干,包括 LLM 和 LVLM。

2.Related Works

[相关工作]

2.1 Parameter-Efficient Fine-Tuning (PEFT)

[参数高效微调]

该方法旨在减少微调大规模模型的高成本。他们通过训练相对较小的参数子集来实现这一点,与参数总数相比,以适应下游任务。现有的 PEFT 方法可以分为三类。第一类被称为基于适配器 Adapter 的方法,它涉及在原始冻结的主干中引入额外的可训练模块,例如 (Houlsby et al., 2019) 提出依次向现有层添加线性模块,而 (He et al., 2021) 提倡将这些模块与原始层并行集成以提高性能。第二类是基于提示 Prompt 的方法。这些方法向初始输入添加额外的软标记,并仅专注于微调这些可训练向量,如 (Lester et al., 2021; Razdabiedina et al., 2023; Wang et al., 2023)。然而,这些方法通常面临挑战,因为它们对初始化的敏感性,影响了它们的整体有效性。前两个类别,无论是改变模型的输入还是架构,都会导致与基线模型相比推理延迟增加。

2.2 LoRA (Hu et al., 2022) and its variants

[LoRA 及其变体]

它的变体是 PEFT 的第三类之一,值得注意的是不添加任何额外的推理负担。这些方法应用低秩矩阵来近似微调过程中的权重变化,并且可以在推理之前与预训练的权重合并。例如,(Zhang et al., 2023) 采用 SVD 分解并修剪不太重要的奇异值以进行更有效的更新。(Hyeon-Woo et al., 2022) 专注于联邦学习的低秩 Hadamard 乘积。(Qiu et al., 2023; Liu et al., 2023b) 在微调扩散模型中利用正交分解。(Renduchintala et al., 2023) 使用权重绑定来进一步减少可训练参数。(Yeh et al., 2023) 引入了一个统一的 LoRA 家族框架,用于稳定扩散。(Ponti et al., 2022) 使用不同任务的路由函数从库存中选择 LoRA 的不同组合。(Kopiczko et al., 2024) 实现了可学习的缩放向量,以跨层调整一对共享的冻结随机矩阵。我们的研究还属于第三类,我们通过综合实验验证了我们提出的方法与 LoRA 及其变体的有效性。

3.Pattern Analysis of LoRA and FT

[LoRA和FT的模式分析]

3.1 Low-Rank Adaptation (LoRA)

[低秩适应]

基于微调期间所做的更新表现出低 "Intrinsic rank" 的假设,LoRA (Hu et al., 2022) 提出使用两个低秩矩阵的乘积来增量更新预训练的权重。对于预训练的权重矩阵 W0 ∈ Rd×k,LoRA 利用表示为 BA 的低秩分解对权重更新 ΔW ∈ Rd×k 进行建模,其中 B ∈ Rd×r 和 A ∈ Rr×k 表示两个低秩矩阵,r ≪ min(d, k)。因此,微调的权重 W' 可以表示为:

其中 W0 在微调过程中保持静态,并且正在训练带下划线的参数。矩阵 A 用均匀的开明  Kaiming  分布初始化,而 B 最初设置为零,导致 ∆W = BA 在训练开始时为零。值得注意的是,ΔW 的这种分解可以替换为其他 LoRA 变体,例如 VeRA (Kopiczko et al., 2024)。此外,基于方程式我们可以将学习到的 ΔW 与预训练的权重 W0 合并并在部署前获得 W ',并且鉴于 W ' 和 W0 都落在 Rd×k 的 LoRA 的维度内,并且与原始模型相比,其相关变体在推断 infer 期间不会引入任何额外的延迟。 

Tips:

Kaiming 初始化是一种常用的神经网络权重初始化方法,它主要用于解决深层神经网络训练中梯度消失或梯度爆炸的问题。这种初始化方法考虑到了激活函数对梯度的影响,使用一种比较合理的初始分布来初始化权重。对于一层具有 n 个 input 和 m 个输出的 Linear 全连接层,其权重初始化从满足 mean = 0,var = sqrt(2/n) 的分布中随机取值。

上图中我们使用 numpy 生成从 Kaiming 分布中抽取的权重。我们设置两个激活函数(sigmoid 和 relu),每个激活函数各抽取 1 万个权重值,然后绘制出具有 100 个 bins 的直方图。从直方图图像可以看出,Kaiming 初始化产生的权重分布与激活函数的类型有关,在 sigmoid 激活函数下,权重分布呈现出正态分布的形状,而在 relu 激活函数下,权重分布呈现出比正态分布更平缓的形状,这与 relu 激活函数在更深的神经网络中更容易出现梯度消失的问题是相关的。

3.2. Weight Decomposition Analysis

[权重分解分析]

LoRA (Hu et al., 2022) 中提出的研究表明,LoRA 可以被认为是完全微调的一般近似。通过逐渐增加 LoRA 的秩 r 与预训练权重的秩对齐,LoRA 可以获得类似于 FT 的表现力水平。因此,之前的许多研究将 LoRA 和 FT 之间的准确性差异主要归因于可训练参数数量有限,通常没有进一步分析(Hu et al., 2022; Kopiczko et al., 2024)。我们从权重归一化 (Salimans & Kingma, 2016) 中获得灵感,它将权重矩阵重新参数化为大小和方向,以加快优化,我们引入了一种创新的权重分解分析。我们的分析将权重矩阵重构为两个独立的组件、大小和方向,以揭示 LoRA 和 FT 学习模式的固有差异。

Analysis Method 分析方法:

该分析检查了 LoRA 和 FT 权重相对于预训练权重的幅度和方向的更新,以揭示两者学习行为的基本差异。W ∈ Rd×k 的权值分解可表示为:

其中 m ∈ R1×k 是幅度向量,V ∈ Rd×k 是方向矩阵,|| · ||c 是每列中矩阵的向量表示范数。这种分解确保 V / ||V||c 的每一列仍然是一个单位向量,m 中的对应标量定义了每个向量的大小。

对于我们的权重分解分析,我们选择了在 (Sung et al., 2022) 中概述的四个图像文本任务上微调的 VLBART 模型来进行案例研究。继 (Sung et al., 2022) 之后,它仅将 LoRA 应用于自我注意模块中的 Query / Value 权重矩阵。我们使用等式分解预训练的权重 W0、完整的微调权重 W-FT 和合并的 Query/Value 权重矩阵的 LoRA 权重 WLoRA。 W0 和 W-FT 之间的幅度和方向变化可以定义如下: 

这里,ΔM-FT-t 和 ΔD-FT-t 分别表示 W0 和 W-FT att 训练步骤之间的幅度差和方向差,cos(·,·) 是余弦相似度函数。M-FT 和 M-n0 是它们各自的幅度向量中的第 n 个标量,而 V-FT 和 W-n0 是 V -FT 和 W0 中的第 n 列。 WLoRA 和 W0 之间的幅度和方向差异类似地计算, 如上方程所示。我们从四个不同的训练步骤中选择检查点进行分析,包括三个中间步骤和来自 FT 和 LoRA 的最终检查点,并对这些检查点中的每一个进行权重分解分析,以确定不同层的 ΔM 和 ΔD。 

Analysis Results 分析结果:

图 2 (a) 和 (b) 说明了 FT 和 LoRA 的 Query 权重矩阵的变化,每个点代表来自不同层和训练步骤的查询权重矩阵的 (ΔDt, ΔM-t) 对。类似地,附录中的图 5 显示了值权重矩阵修改。值得注意的是,LoRA 在所有中间步骤中表现出一致的正斜率趋势,表明方向和幅度的变化之间存在比例关系。相比之下,FT 显示出更多样化的学习模式,斜率相对为负。FT 和 LoRA 之间的这种区别可能反映了它们各自的学习能力。虽然 LoRA 倾向于按比例增加或减少幅度和方向更新,但它缺乏更细微的调整能力。具体来说,LoRA 没有表现出在更显着的幅度变化的同时执行轻微方向变化的熟练程度,反之亦然,FT 方法的特征更多。我们怀疑 LoRA 的这种限制可能源于并发学习幅度和方向适应的挑战,这对于 LoRA 来说可能过于复杂。因此,在这项工作中,我们的目标是提出一种 LoRA 变体,它表现出与 FT 更接近的学习模式,并且可以提高 LoRA 的学习能力。

4.Method

[方法]

4.1. Weight-Decomposed Low-Rank Adaptation

[Weight-Decomposed低秩适应]

借鉴我们的权重分解分析的见解,我们引入了权重分解低秩适应(DoRA)。DoRA 最初将预训练的权重分解为其幅度和方向分量,并对两者进行微调。由于方向分量在参数数量方面很大,我们进一步将其与 LoRA 分解以进行有效微调。

我们的直觉是双重的。首先,我们认为与原始方法相比,限制 LoRA 只专注于方向适应,同时允许幅度分量可调简化了任务,其中 LoRA 需要学习幅度和方向调整。其次,通过权重优化方向更新的过程更加稳定分解,我们将在第 4.2 节中更深入地深入研究。需要强调的是,DoRA 和权值归一化(Salimans & Kingma, 2016) 的主要区别在于它们的训练方法。权重归一化从头开始训练两个组件,使该方法对不同的初始化敏感。相反,DoRA 避免了这种初始化问题,因为这两个组件都是从预训练的权重开始的。我们用 Eq.(2) 中概述的预训练权重 W0 初始化 DoRA,其中初始化后 m = ||W0||c 和 V = W0。然后我们保持 V 冻结,m 是可训练的向量。然后通过 LoRA 更新方向分量。DoRA 可以表述为方程式:

其中 ΔV 是通过将两个低秩矩阵 B 和 A 相乘来学习的增量方向更新,带下划线的参数表示可训练参数。矩阵 B ∈ R d×r 和 A ∈ R r×k 与 LoRA 的策略一致初始化,以确保 W' 在微调之前等于 W0。此外,DoRA 在推理过程中可以与预训练的权重合并,从而不引入任何额外的延迟。 

我们在图 2 (c) 中可视化了合并的 DoRA 权重和 W0 之间的查询权重矩阵的大小和方向差异,并将值权重矩阵的可视化留在附录中。从 DoRA 和 FT 的 (ΔD, ΔM ) 的回归线中,我们发现与 LoRA 的模式相比,DoRA 和 FT 的特征是不同的负斜率。我们推断 FT 趋向于负斜率,因为预训练的权重已经拥有适合各种下游任务的大量知识。因此,当提供足够的学习能力时,仅具有更大幅度或方向更改就足以进行下游适应。我们还计算了 FT、LoRA 和 DoRA 的 ΔD 和 ΔM 之间的相关性,我们发现 FT 和 DoRA 都表现出 -0.62 和 -0.31 的负相关值。相比之下,LoRA 显示出与 0.83 值正相关。总之,DoRA 证明了仅在幅度变化相对较小或相反的情况下进行实质性方向调整的能力,同时显示更接近 FT 的学习模式意味着其比 LoRA 更好的学习能力。

4.2. Gradient Analysis of DoRA

[DoRA的梯度分析]

在本节中,我们首先推导出 DoRA 的梯度,并说明我们提出的分解如何有利于 ΔV 的优化。随后,我们从梯度的角度分析以解释 DoRA 的学习模式,这往往具有负斜率。

从上一节 W' 的方程式我们可以得到损失 L 相对于 m 和 V ' = V + ΔV 的梯度为:

∇V 表明权重梯度 ∇W' L 由 m/||V'||c 缩放,并远离当前权重矩阵。这两个效应有助于将梯度的协方差矩阵与单位矩阵更接近对齐,这有利于优化(Salimans & Kingma, 2016)。此外,给定 V ' = V + ΔV ,梯度 ∇V ' L 等价于 ∇ΔV L。因此,这种分解得到的优化效益完全转移到∆V,提高了 LoRA 的学习稳定性。

通过 ∇m 我们可以进一步了解 DoRA 的学习模式。在随后的讨论中,我们使用小写字母而不是先前的矩阵形式符号来表示向量。考虑 w′′ = w′ + Δw 作为权重向量的参数更新,其中 Δw ∝ ∇w′ L。在两个假设的更新场景中,S1 和 S2,S1 涉及更小的方向 4 更新 (ΔDS1),而 S2 涉及更大的更新 (ΔDS2)。假设 ||∆wS1|| = ||∆wS2||,在时间 0,我们有 ∆v = 0 和 v ' = v。从 ∆DS1 < ∆DS2 可以看出 |cos(∆wS1, w ')| > |cos(∆wS2, w ')|。由于 ∆w ∝ ∇w ' L,这意味着 |cos(∇S1w ' L, w ')| > |cos(∇S2w ' L, w ')|。从4.1节开始,v 在时间0初始化为 v0,w' = w0,我们得到 |cos(∇w ' L, w ')| = |cos(∇w ' L, v ')| = |cos(∇w ' L, v)|。使用 Δv = 0 的余弦相似度方程:

将 m* 表示为向量 w ' 的大小标量,则 w.r.t m* ∇m 可以改写为:

 鉴于 ||∆wS1|| = ||∆wS2|| 对于 S1 和 S2,||∇ S1w ' L|| = ||∇ S2 w ' L||。因此:

可以推断 |∇S1m∗L| > |∇S2m∗L| 表明 S1 在 S2 上有更大的幅度更新,而方向改变小于 S2。我们的结论在实践中通常成立,如图 2(C) 所示。因此,我们有效地展示了如何使用 DoRA 来调整学习模式,与 LoRA 不同,并与 FT 的模式更紧密地对齐。 

4.3. Reduction of Training Overhead

[减少训练开销]

在最开始的等式中, W' 和 ∆W 的梯度是相同的。然而,使用 DoRA,它将低秩适应重定向到方向分量,低秩更新的梯度与 W ' 的梯度不同。这种分歧在反向传播期间需要额外的内存。为了解决这个问题,我们建议将 || V +∆V ||c 视为常数,从而将其与梯度图分离。这意味着虽然 || V + ΔV ||c 动态反映了 ΔV 的更新,但它不会在反向传播期间接收任何梯度。通过这种修改,梯度 w.r.tm 保持不变,∇V 重新定义为:

这种方法大大降低了梯度图内存消耗,而不会显着降低准确性。我们进行了消融研究,以评估所提出的修改对微调 LLAMA-7B 和 VLBART 的影响。结果表明,在微调 LLAMA 和 VL-BART 中的 12.4% 时,修改导致训练内存减少约 24.4%。此外,对于 VL-BART,DoRA 与修改的准确性保持不变,与 DoRA 相比,在 LLaMA 上没有修改的情况下,差异仅为 0.2。有关训练内存使用和准确性差异的全面比较,请参见附录中的表 7。因此,DoRA 的所有后续实验都加入了这种调整。 

5.Experiments

[实验]

我们进行了各种实验来展示 DoRA 在语言、图像和视频领域等各种任务上的功效。首先,我们通过在常识推理任务上微调 LLAMA-7B/13B,针对几种参数高效微调 (PEFT) 方法评估 DoRA。随后,我们从单模态扩展到多模态。我们使用 VL-BART 和 LLAVA-1.5-7B 的视觉指令调优,将DoRA 与 LoRA 跨多任务图像/视频文本理解任务进行比较。接下来,我们探讨了 DoRA 与 LoRA 和 VeRA (Kopiczko et al., 2024) 的兼容性,用于 LLAMA-7B 和 LLAMA2-7B 的指令调整。此外,我们进行了一系列消融研究,以说明 DoRA 在性能方面超过了 LoRA,而不考虑微调训练样本的数量和排名变化。最后,我们分析了 DoRA 的调整粒度,并表明 DoRA 可以通过仅选择性地更新某些模块的方向组件来实现比具有较少可训练参数的 LoRA 更好的准确性。

5.1. Commonsense Reasoning

[常识推理]

我们根据 LoRA 和几种基线方法评估 DoRA,其中包括用于常识推理任务的快速学习 (Prefix) (Li & Liang, 2021)、系列适配器 (Series) (Houlsby et al., 2019) 和并行适配器 (Parallel) (He et al., 2021)。我们还包括 ChatGPT 使用 Butter (OpenAI, 2023; Wei et al., 2022) 的零样本链使用 gpt-3.5-turbo API 获得的准确度。

常识推理任务包括 8 个子任务,每个子任务都有一个预定义的训练和测试集。我们遵循 (Hu et al., 2023) 的设置,并从所有 8 个任务中合并训练数据集以创建最终的训练数据集,并对每个任务的单个测试数据集进行评估。为了确保公平比较,我们最初在 LoRA 配置之后使用 DoRA 微调模型,在保持相同的排名,同时仅调整学习率。LoRA 上 DoRA 的可训练参数数量的边际增加 0.01%,如表 1 所示,来自包含可学习的幅度分量(大小为 1 × k 的参数)。然后,与 LoRA 相比,我们进一步将 DoRA 中使用的排名减半,并将该调整后的配置表示为 DoRA。

表 1 表明 DoRA 在 LLAMA-7B 和 13B 模型中始终优于所有基线方法。值得注意的是,在 LLAMA-7B 模型中,LoRA 超过了其他基线的性能,DoRA 进一步提高了 3.4% 的准确率,超过了 ChatGPT 的准确性水平。相反,对于 LLAMA-13B,其中 LoRA 的有效性不如 Parallel 适配器,DoRA 比 LoRA 实现了 1% 的准确度,并且与 Parallel 适配器相当的准确度,并行适配器只需要四分之一的可训练参数,并且没有添加任何额外的推理开销作为 Parallel 适配器。此外,DoRA† 在 LLAMA-7B 上超过 LoRA 的性能 2.8%,在 LLAMA-13B 上高出 1%,尽管它与 LoRA 相比只有一半的可训练参数。这些结果表明,DoRA 的集成增强了 LoRA 的学习能力,从而减少了在准确性方面需要更高的排名来超越 LoRA。

5.2. Image/Video-Text Understanding

[图像/视频文本理解]

结果表明,DoRA 在微调 LLM 方面始终可以获得更好的准确性,我们想看看 DoRA 是否可以在多模态微调任务上保持竞争力。我们将 DoRA 与 LoRA 进行比较,并在 VL-BART 上进行完全微调,其中包括四个不同图像文本任务的视觉编码器 (CLIP-ResNet101 (Radford et al., 2021)) 和编码器解码器语言模型 (BARTBase (Lewis et al., 2020):VQAv2 (Goyal et al., 2017) 和 GQA (Hudson & Manning, 2019) 用于视觉问答,NLVR2 (Suhr et al., 2019) 用于视觉推理,MSCOCO (Chen et al., 2015) 用于图像字幕,以及来自 VALUE (Li et al., 2021) 基准的四种不同的视频文本任务:TVQA (Lei et al., 2018) 和 How2QA (Li et al., 2020) 用于视频问答,TVC (Lei et al., 2020) 和 YC2C (Zhou et al., 2018) 用于视频字幕。

我们遵循与 (Sung et al., 2022) 相同的框架,并在图像/视频文本任务的多任务框架内微调 VL-BART。我们在应用 DoRA 时采用与 (Sung et al., 2022) 中概述的 LoRA 相同的设置。完整超参数见表 9。LoRA 和 FT 对图像/视频文本任务的结果直接引用自 (Sung et al., 2022)。我们可以看到,DoRA在准确性上均匀地超过了LoRA,同时保持了表2和表3中类似的可训练参数计数。特别是,DoRA在图像-文本理解任务上的性能提高了近1%,达到了FT的精度水平。此外,DoRA 在视频文本理解任务中实现了比 LoRA 高约 2% 的准确率。

5.3. Visual Instruction Tuning

[视觉指令调优]

我们进一步扩大了模型大小,并将 DoRA 与 LoRA 和 FT 在由语言模型 Vicuna-1.5-7B (Liu et al., 2023a) 和表 4 组成的 LlaVA-1.5-7B (Peng et al., 2023a) 的视觉指令调整任务上进行了比较。 LlaVA1.5-7B 在广泛的七个视觉语言任务上的视觉指令调整评估结果。我们直接使用 (Liu et al., 2023a) 中的检查点来重现他们的结果。

CLIP ViT-L/336px (Radford et al., 2021)。训练数据集包含来自 VQA 的几个数据集(Goyal 等人,2017;Hudson 和 Manning,2019;Marino 等人,2019;Schwenk 等人,2022)、OCR(Mishra 等人,2019;Sidorov 等人,2020)、区域级 VQA (Kazemzadeh et al., 2014; Krishna et al., 2017; Mao et al., 2016)、视觉对话 (Liu et al., 2023a) 和语言对话数据。我们遵循 (Liu et al., 2023a) 的设置来过滤训练数据并构建令人惊叹的提示格式。为了公平比较,DoRA 遵循与 (Liu et al., 2023a) 提供的 LoRA 配置相同的配置。然后在七个视觉语言基准上评估微调模型:VQAv2 (Goyal et al., 2017)、GQA (Hudson & Manning, 2019)、VisWiz (Gurari et al., 2018) SQA (Lu et al., 2022)、VQAT (Singh et al., 2019)、POPE (Li et al., 2023) 和 MMBench (Liu et al., 2023c)。

从表 4 中,我们可以观察到 LoRA 的平均准确率已经超过了 FT,这可能意味着 FT 可能会遇到过度拟合的问题。鉴于 DoRA 旨在增强 LoRA 的性能与 FT 更相似,在 FT 低于 LoRA 的情况下,DoRA 对 LoRA 的改进可能不会像在其他实验中观察到的那样明显,FT 通常优于 LoRA。尽管如此,DoRA 仍然表现出比 LoRA 和 FT 更好的性能,平均比 LoRA 提高了 0.7%,比 FT 提高了 1.1%。超参数设置见表 10,每个评估基准的分数见表 12。

5.4 Compatibility of DoRA with other LoRA variants

[DoRA与其他LoRA变体的兼容性]

回想一下等式(1),ΔW 可以通过不同的 LoRA 变体进行调整。使用 DoRA,等式 (5) 中引入的增量方向更新 ΔV 的概念同样可以用替代 LoRA 变体代替。在本节中,我们选择 VeRA (Kopiczko et al., 2024) 作为案例研究,以探索 DoRA 与其他 LoRA 变体的兼容性。VERA 建议冻结一组独特的随机低秩矩阵,以便在所有层之间共享,仅使用最小的特定于层的可训练缩放向量来捕获每一层的增量更新。这种方法允许 VeRA 与 LoRA 相比显着减少了 10 倍的可训练参数,而对准确性的影响很小。我们将 VeRA 应用于 DoRA 中的方向更新,并将这种组合命名为 DVoRA。我们评估了 DVoRA 和 DoRA 在 LLAMA-7B 和 LLAMA2--7B 中与 VeRA 和 LoRA 相比的有效性,重点是使用清理后的 Alpaca 数据集的 10K 子集进行指令调整 (Taori et al., 2023)。我们利用VeRA的官方实现来获得VeRA和LoRA的结果,并使用与VeRA和LoRA相同的训练设置对DVoRA和DoRA模型进行微调(详见附录表11)。然后,通过对预定义的 80 个多轮问题集生成响应,在 MT-Bench 基准 (Zheng et al., 2023) 上评估微调模型的性能。然后通过 GPT-4 评估这些响应,该 GPT-4 评论每个答案并在 10 个中分配一个数值分数。

表 5 显示了 DVoRA、DoRA、VeRA 和 LoRA 的平均分数,表明我们提出的方法对 LLAMA-7B 和 LLAMA2--7B 的 VeRA 和 LoRA 都显示出一致的改进。这有效地展示了 DoRA 与 VeRA 的兼容性。特别是,DVoRA 融合了 DoRA 和 VeRA 的优势质量,获得了与 LoRA 相当甚至超过的分数,但参数明显更少。例如,DVoRA 在 LLAMA-7B 和 DoRA 上分别比 VERA 高 0.7/0.5 分,在 LLAMA2--7B 上实现了与 LoRA 相同的准确度水平。此外,我们提出了从 MT-Bench 中选择的问题选择,并在附录中使用 DVoRA 和 VeRA 微调的 LLAMA2-7B 的响应(表 13 和 14),我们可以观察到 DVoRA 给出的答案往往更精确和结构。

接下来,为了进一步评估 DoRA 在不同数量的训练数据下保持竞争力的能力,考虑到在实际场景中,访问广泛的微调数据集通常是有限的。我们将 DoRA 与 LoRA 和 DVoRA 与 VeRA 进行比较,用于微调 LLAMA2-7B/LLaMA-7B,具有广泛的指令调整样本量,特别是 1000、4000、7000、10000,10000 是 (Kopiczko et al., 2024) 的设置。我们在图 3 中的 LLAMA2--7B 上可视化了每种方法的平均性能,在附录的图 6 中的 LLAMA-7B 上。结果显示 DoRA 和 DVoRA 在所有训练样本大小上始终优于 LoRA 和 VeRA。例如,使用 7000 个训练样本,DoRA 和 DVoRA 分别以 0.3 和 0.33 的边距超过了 LoRA 和 VeRA。即使样本量减少到 1000,DoRA 和 DVoRA 也比 LoRA 和 VeRA 保持其领先优势,分别比 LoRA 和 VeRA 提高了 0.29 和 0.22。这表明无论训练样本体积如何,我们的方法都会持续提高 LoRA 和 VeRA 的性能。

5.5 Robustness of DoRA towards different rank settings

[DoRA对不同等级设置的鲁棒性]

本节通过调整集合 {4, 8, 16, 32, 64} 中的 r 并评估微调 LLAMA-7B 在常识推理任务上的性能来探索各种等级配置对 DoRA 和 LoRA 的影响,如第 5.1 节所述。 LoRA 和 DoRA 在不同等级上的平均准确度如图 4 所示,详细数字如表 15 所示。从图 4 中,我们可以观察到 DoRA 在所有等级配置中始终优于 LoRA。值得注意的是,等级低于 8 的性能差距扩大,其中 LoRA 在 r = 8 时的平均准确率下降到 40.74%,r = 4 的平均准确率下降到 39.49%。相比之下,对于 r = 8 和 61.89%,DoRA 的平均准确率为 77.96% 对于 r = 4,无论等级设置如何,它的弹性和始终优于 LoRA 的性能。

Tips:

这个图比较直观的给出了 DoRA 和 LoRA 的性能对比,实际场景下我们可以切换 DoRA 进行测试,通过量化以及非量化的指标进行验证。 

5.6 Tuning Granularity Analysis

[调整粒度分析]

图 2 中的可视化表明,幅度的显着变化通常会导致相对较小的方向变化。鉴于这一观察以及方向更新占大部分可训练参数的事实,它促使调查是否有可能通过仅更新特定模块的大小组件来减少可训练参数的数量,同时继续更新剩余线性模块的大小和方向组件。我们的研究结果表明,与 (Hu et al., 2023) 中 LoRA 建议的原始配置相比,这需要更新多头注意力和 MLP 层以获得最佳性能,DoRA 已经可以通过仅更新多头层的方向和幅度分量和 MLP 层的大小来实现更高的准确性。具体来说,如表 6 所示,通过更新 QKV 模块的方向和幅度分量,以及其余层的大小,DoRA 在 LLAMA-7B 上超过 LoRA 2.8%,在 LLAMA-13B 上超过 0.8%,而与 LoRA 相比,仅使用不到一半的可训练参数。

6.Conclusion

[总结]

在这项工作中,我们首先进行了一种新颖的权重分解分析,以揭示 LoRA 和 FT 之间的不同学习模式。在这些见解的基础上,我们介绍了 DoRA,这是一种与 LoRA 及其变体兼容的微调方法,并且表现出与 FT 的学习行为更接近的相似性。DoRA 在各种微调任务和模型架构中始终优于 LoRA。具体来说,DoRA 在常识推理和视觉指令调整任务中改进了 LoRA。此外,DoRA 在 Alpaca 指令调整任务上也显示出与 VeRA 的兼容性。此外,DoRA 可以被认为是 LoRA 的无成本替代方案,因为它的分解幅度和方向分量可以在训练期间合并到预训练的权重中,确保没有额外的推理开销。在未来的工作中,我们希望探索 DoRA 在语言和视觉之外的领域的普遍性,尤其是在音频领域。此外,研究 DoRA 在各种其他应用中的潜力会很有趣,例如稳定的扩散文本到图像微调。

7.Impact Statements

[影响陈述]

本文介绍了目标是推进机器学习领域的工作。我们的工作有许多潜在的社会后果,我们在这里没有特别强调我们认为这些后果。

8.Appendix

[附录]

8.1 Weight decomposition analysis on the value weight matrix

[值权重矩阵的权重分解分析]

8.2 Ablation study for the modification to reduce DoRA training cost

[修改以减少 DoRA Train 成本的消融研究]

给出了 DoRA 的 GPU 成本和平均精度,并对常识推理任务和图像-文本理解任务进行了建议修改。结果表明,在微调 LLAMA 和 VL-BART 中的 12.4% 时,修改导致训练内存减少约 24.4%。此外,对于 VL-BART,DoRA 与修改的准确性保持不变,与 DoRA 相比,在 LLaMA 上没有修改的情况下,差异仅为0.2。

8.3 Hyperparameters

[超参数] 

对于训练 LLM 指令微调的同学,这里的超参可以参考并和自己 SFT 时的参数作对比,鉴于显卡资源的情况,一般我训练的 r 会取 8/16,这里博主训练时 LR Scheduler 之前选择都是 cosine 与这里 DVoRA 略有不同,其次 lr 一般值略小一些,其余基本一致。

VL-Bart 的这里使用不多不做展示了,LLaVa-1.5-7B 的超参大家也可以做一下对比和参考。 

8.4 Visual instruction tuning evaluation result

[视觉指令调整评估结果]

下表展示了使用 DoRA、LoRA 和 FT 使用视觉指令调整数据微调的 LLAVA-1.5-7B 的评估结果。评估是在七个不同的视觉语言基准的数组上进行的。从表中我们可以看出,DoRA 始终优于 FT,并且可以达到比 LoRA 更好的平均精度。

8.5 Robustness of DoRA towards different rank

[DoRA对不同等级的鲁棒性]

显示了 LoRA 和 DoRA 方法在常识推理任务的各种排名设置中的平均准确度的比较。DoRA 在所有排名设置中始终优于 LoRA,随着排名的降低,性能差距扩大。这表明我们的方法有效地提高了 LoRA 的学习能力,使其能够以更少的可训练参数实现更好的准确性。

9.Some Personal Opinion

[一些个人总结]

下面基于博主自己的一些实践认知做一些 DoRA 相关的整理,首先简单回顾下 LoRA,假设我们有预训练的模型权重 W,LoRA 通过低秩矩阵来近似权重变化,即 W' = W + ΔW,LoRA 在 ΔW 是通过 BA 的类似于倒三角矩阵来实现,而 DoRA 则是首先将预训练的权重矩阵分解为幅度向量 m方向矩阵 V,随后它应用方向矩阵 V 并对其应用标准的 LoRA 流程,即:

W' = m (V + ΔV) / norm = m (W + BA) / norm 

对应前面的公式:

这里 ||·||c 作为范数对 V+ΔV 进行标准化 ,式中带下划线的变量会参与更新,其梯度更新公式为:

而开发 DoRA 的原因在于分析 LoRA 与 Full Tuning 之间的区别, 下图展示了 a.FT、b.LoRA 和 c.DoRA  Query 矩阵在不同层和中间步骤的幅度和方向更新。不同的标记代表不同训练步骤的矩阵,不同的颜色代表每一层的矩阵。可以观察到幅度 m 的显着变化通常会导致相对较小的方向 V 变化。鉴于这一观察以及方向 V 更新占大部分可训练参数的事实,它促使调查是否有可能通过仅更新特定模块的大小组件来减少可训练参数的数量,同时继续更新剩余线性模块的大小和方向组件。与 LoRA 建议的原始配置相比,这需要更新多头注意力和 MLP 层以获得最佳性能,DoRA 已经可以通过仅更新多头层的方向和幅度分量和 MLP 层的大小来实现更高的准确性。

具体来说,如表 6 所示,通过更新 QKV 模块的方向和幅度分量,以及其余层的大小,DoRA 在 LLAMA-7B 上超过 LoRA 2.8%,在 LLAMA-13B 上超过 0.8%,而与 LoRA 相比,仅使用不到一半的可训练参数。 

大体含义就是 DoRA 通过对幅度和方向向量的解耦,使其与 FT 在训练意图上更佳一致,而 LoRA 则更偏向于成比例的对幅度和方向向量进行更新,所以 LoRA 和 DoRA 的能力主要区别在于其对细微方向更新的把握。在传统 LLM 微调时,引入幅度向量 m 比标准 LoRA 多增加约 0.01% 的参数,因此对于训练几乎是无感的,同时由于矩阵依然可以和预训练权重 W 相加,所以 DoRA 仍然保持了推理的 0 延迟增加。 

最后我们也是给一个常见的矩阵分解方法,在数学和线代中,将一个矩阵分解为度量和方向最简单的办法就是 SVD 主成分分解:

import numpy as np# 随机生成一个 d x k 的矩阵 A
d, k = 5, 3
A = np.random.rand(d, k)# 对 A 进行奇异值分解
U, S, Vt = np.linalg.svd(A, full_matrices=False)print(f"U:{U.shape}")
print(U)
print(f"Metric 度量 m: {S.shape}")
print(S)
print(f"Direction 方向 V: {Vt.shape}")
print(Vt)

关于 DoRA 大致先看这么多,后面试验下 DoRA 在工业场景是否可以优于 LoRA 效果。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/785263.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在react项目用echarts绘制中国地图

文章目录 一、引入echarts二、下载地图json数据三、编写react组件四、组件使用 一、引入echarts 安装&#xff1a;npm i echarts --save 二、下载地图json数据 由于echarts内部不再支持地图数据&#xff0c;所以要绘制地图需要自己去下载数据。建议使用阿里云的。 地址&…

Chrome 设置在新窗口中打开链接(已登录google账号版)

Chrome的链接默认是在原标签页中打开的&#xff0c;如果要在新窗口中打开&#xff0c;需要自己自行设置&#xff0c;在此&#xff0c;针对已经登录google账号的chrome浏览器怎么进行设置进行说明。 一、点击登录图标->更多设置 二、选择其他设置->在新窗口中打开搜索结果…

砍树c++

题目&#xff1a; 代码&#xff1a; #include<bits/stdc.h> using namespace std; long long n,m,a[100000005]; bool jltm(int x){long long sum0;for(int i1;i<n;i){if(a[i]>x) sumsuma[i]-x;}//计算此时锯片高度砍掉的木材if(sum>m) return 1;else return 0…

怎么在UE游戏中加入原生振动效果

我是做振动触感的。人类的五感“视听嗅味触”&#xff0c;其中的“触”就是触觉&#xff0c;是指皮肤、毛发与物体接触时的感觉。触感可以带来更加逼真的沉浸式体验。但也许过于司空见惯&#xff0c;也是习以为常&#xff0c;很多人漠视了触感的价值。大家对触感的认知还远远不…

Oracle19c ADG搭建

文章目录 一、环境配置1、主机环境2、host文件配置 二、主库配置1、 开启归档2、redo日志3、修改参数文件4、配置TNS文件5、静态监听6、拷贝密码文件 三、备库配置1、开启归档2、redo日志3、修改参数文件4、配置TNS文件5、配置静态监听 四、构建DG1、验证监听2、主库登入rman&a…

排序——选择排序(直接选择排序和堆排)

本专栏和大家分享关于排序的算法,其中有插入排&#xff08;直接插入排序和希尔排序&#xff09;、选择排序&#xff08;直接选择排序和堆排&#xff09;、交换排序&#xff08;冒泡排序和快速排序&#xff09;、归并排序以及其他非基于比较的排序 本文与大家分享选择排序 目录 …

【pytest、playwright】多账号同时操作

目录 方案实现思路&#xff1a; 方案一&#xff1a; 方案二&#xff1a; 方案实现思路&#xff1a; 依照上图所见&#xff0c;就知道&#xff0c;一个账号是pytest-playwright默认的环境&#xff0c;一个是 账号登录的环境 方案一&#xff1a; 直接上代码&#xff1a; imp…

Tensorflow2.0笔记 - 自定义Layer和Model

本笔记主要记录如何在tensorflow中实现自定的Layer和Model。详细内容请参考代码中的链接。 import time import tensorflow as tf from tensorflow import keras from tensorflow.keras import datasets, layers, optimizers, Sequential, metricstf.__version__ #关于自定义l…

JRT业务开发起步

这是一段充满挑战与奋斗的旅程&#xff0c;自第一行Java代码的写下起&#xff0c;便历经重重险阻。从细微的代码行&#xff0c;逐步汇聚成实用的工具类方法&#xff1b;从工具类方法的积累&#xff0c;逐渐构建起功能强大的工具包&#xff1b;再从工具包的整合&#xff0c;最终…

走进标杆企业——成套数字化标杆观摩游学(重庆站)

为了推进工业电气加工与设计的效率提升&#xff0c;加快企业数字化、网络化和智能化管理的步伐&#xff0c;利驰软件(苏州)有限公司&#xff08;下文简称利驰软件&#xff09;在重庆于2024年3月22日举办了一场成套数字化标杆观摩游学。此次为期一天的活动吸引了湘鄂渝地区专家们…

视频素材下载哪个软件好?几个素材库视频免费下载

在浩瀚的创意海洋中&#xff0c;找到完美的无水印视频素材犹如寻宝一般&#xff0c;每一段精彩的视频片段都能为您的作品增色不少。无论您是视频制作新手&#xff0c;还是经验丰富的专业人士&#xff0c;这里有全球各地的精选视频素材网站&#xff0c;旨在激发您的灵感&#xf…

EfficientSAM 项目排坑

EfficientSAM 项目排坑 任务过程记录创建环境运行示例 任务 跑通这个项目代码 过程记录 创建环境 readme里没有说具体怎么配置环境&#xff0c;所以可能对我来说还挺困难的。 现把项目git下来&#xff1a; git clone https://github.com/yformer/EfficientSAM.git cd Effi…

Flask Python:请求上下文和应用上下文

请求上下文和应用上下文详解 一、背景二、什么是上下文2.1、请求上下文2.2、应用上下文2.3、两种上下文的底层逻辑 三、写在最后 一、背景 在如何实现异步发送邮件的时候&#xff0c;遇到过这样一个报错 RuntimeError: Working outside of request context.This typically me…

【机器学习】数据探索---python主要的探索函数

在上一篇博客【机器学习】数据探索(Data Exploration)—数据质量和数据特征分析中&#xff0c;我们深入探讨了数据预处理的重要性&#xff0c;并介绍了诸如插值、数据归一化和主成分分析等关键技术。这些方法有助于我们清理数据中的噪声、消除异常值&#xff0c;以及降低数据的…

C语言内存函数(超详解)

乐观学习&#xff0c;乐观生活&#xff0c;才能不断前进啊&#xff01;&#xff01;&#xff01; 我的主页&#xff1a;optimistic_chen 我的专栏&#xff1a;c语言 点击主页&#xff1a;optimistic_chen和专栏&#xff1a;c语言&#xff0c; 创作不易&#xff0c;大佬们点赞鼓…

KIl5:Stm32L071下载出现flash download faild “cortex-m0+“的解决方法

首先看看有没有芯片&#xff0c;没有芯片下载一下 下载并在device选择对应的芯片 选择调试器 选择flash

C++ 二叉树OJ题

&#x1f493;博主CSDN主页:麻辣韭菜-CSDN博客&#x1f493;   ⏩专栏分类&#xff1a;C知识分享⏪   &#x1f69a;代码仓库:C高阶&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多C知识   &#x1f51d;&#x1f51d; 前言 C二叉搜索树 这篇讲解了搜索二叉…

MySQL经验分享:Shell开发问题

背景 之前整理过Python连接使用MySQL的经验&#xff0c;链接如下&#xff1a; pymysql封装总结_pymysql封装类-CSDN博客 相比高级语言&#xff0c;Shell与MySQL开发使用相对会更麻烦一些&#xff1b;由于 shell是linux命令集的概称&#xff0c;是属于命令行的人机界面。Shel…

1688采集商品信息 马帮 店小秘 芒果采集API接口 java php

1688详情API接口是一种基于开放平台的应用程序接口&#xff0c;它能够实现与1688平台的数据交互&#xff0c;让商家能够更加方便地获取商品详情、库存信息、价格变动等重要数据。通过这一接口&#xff0c;商家可以实时掌握市场动态&#xff0c;快速响应消费者需求&#xff0c;从…