速通LoRA:《LoRA: Low-Rank Adaptation of Large Language Models》全文解读

文章目录

  • 总览
  • Abstract
  • Introduction
  • [Problem Statement](#Problem Statement)
  • [Aren't Existing Solutions Good Enough?](#Aren’t Existing Solutions Good Enough?)
  • [Our Method](#Our Method)
    • [Low-Rank-Parametrized Update Matrices](#Low-Rank-Parametrized Update Matrices)
    • [Applying LoRA to Transformer](#Applying LoRA to Transformer)
  • 何为高斯随机初始化
  • [Empirical Experiments](#Empirical Experiments)
    • Baselines
    • [RoBERTa base/large](#RoBERTa base/large)
    • [DeBERTa XXL](#DeBERTa XXL)
    • [GPT-2 medium/large](#GPT-2 medium/large)
    • [Scaling up to GPT-3 175B](#Scaling up to GPT-3 175B)
  • [Related Works](#Related Works)
    • [Transformer Language Models](#Transformer Language Models)
    • [Prompt Engineering and Fine-Tuning](#Prompt Engineering and Fine-Tuning)
    • [Parameter-Efficient Adaptation](#Parameter-Efficient Adaptation)
  • [Understanding the Low-Rank Updates](#Understanding the Low-Rank Updates)
    • [Which Weight Matrices in Transformer Should We Apply LoRA to?](#Which Weight Matrices in Transformer Should We Apply LoRA to?)
    • [⭐What is the Optimal Rank r for LoRA?](#⭐What is the Optimal Rank r for LoRA?)
    • [How Does the Adaptation Matrix ΔW Compare to W](#How Does the Adaptation Matrix ΔW Compare to W)
  • [Conclusion and Future Work](#Conclusion and Future Work)
  • [A Large Language Models Still Need Parameter Updates](#A Large Language Models Still Need Parameter Updates)
  • [B Inference Latency Introduced by Adapter Layers](#B Inference Latency Introduced by Adapter Layers)
  • [C Dataset Details](#C Dataset Details)
  • [D Hyperparameters Used in Experiments](#D Hyperparameters Used in Experiments)
  • [E Combining LoRA with Prefix Tuning](#E Combining LoRA with Prefix Tuning)
  • [F Additional Empirical Experiments](#F Additional Empirical Experiments)
  • [G Measuring Similarity Between Subspaces](#G Measuring Similarity Between Subspaces)
  • [H Additional Experiments on Low-Rank Matrices](#H Additional Experiments on Low-Rank Matrices)

🍃作者介绍:双非本科大四网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发,目前开始人工智能领域相关知识的学习

🦅个人主页:@逐梦苍穹

📕所属专栏:🌩 专栏人工智能; 🌩 专栏速通人工智能相关论文

🌻gitee地址:xzl的人工智能代码仓库

✈ 您的一键三连,是我创作的最大动力🌹

总览

LoRA简介: 通过低秩分解来模拟参数的改变量,从而以极小的参数量来实现大模型的间接训练。实现思想很简单,就是冻结一个预训练模型的矩阵参数,并选择用A和B矩阵来替代,在下游任务时只更新A和B


LoRA的思路:

  1. 主要思想:在原模型旁边增加一个旁路,通过低秩分解(先降维再升维)来模拟参数的更新量;
  2. 训练:原模型固定,只训练降维矩阵A和升维矩阵B;
  3. 推理:可将BA加到原参数上,不引入额外的推理延迟;
  4. 初始化:A采用高斯分布初始化,B初始化为全0,保证训练开始时旁路为0矩阵。

LoRA的优点:

  1. 一个中心模型服务多个下游任务,节省参数存储量
  2. 推理阶段不引入额外计算量
  3. 与其它参数高效微调方法正交,可有效组合
  4. 训练任务比较稳定,效果比较好
  5. LoRA 几乎不添加任何推理延迟,因为适配器权重可以与基本模型合并

LoRA作用于Transformer的哪个参数矩阵:

从论文当中可以看到:

  1. 将所有微调参数都放到attention的某一个参数矩阵的效果并不好,将可微调参数平均分配到 W q W_q Wq和 W k W_k Wk的效果最好;
  2. 即使是秩仅取4也能在 ∆ W ∆W ∆W中获得足够的信息

因此在实际操作中,应当将可微调参数分配到多种类型权重矩阵中,而不应该用更大的秩单独微调某种类型的权重矩阵。

Abstract

  1. 这部分概述了论文提出的一种新的方法,称为低秩适应(LoRA),用于大规模预训练模型(如GPT-3)的高效适应。
  2. 论文提到,由于模型参数量巨大,传统的完全微调方法(full fine-tuning)变得不现实。LoRA通过在冻结预训练模型参数的同时,注入可训练的低秩分解矩阵,极大地减少了下游任务中所需的可训练参数数量。相比于GPT-3 175B的完全微调,LoRA的可训练参数减少了10,000倍,GPU内存需求降低了3倍。
  3. 同时,LoRA在多个模型(如RoBERTa, DeBERTa, GPT-2, GPT-3)上表现出与完全微调相当或更好的模型质量。
  4. 此外,LoRA没有增加 推理延迟,并提供了对语言模型适应过程中秩亏现象的经验研究。

论文原文引用:

  1. "Using GPT-3 175B as an example -- deploying independent instances of fine-tuned models, each with 175B parameters, is prohibitively expensive. We propose Low-Rank Adaptation, or LoRA, which freezes the pre-trained model weights and injects trainable rank decomposition matrices into each layer of the Transformer architecture, greatly reducing the number of trainable parameters for downstream tasks." 以GPT-3 175B为例,部署独立的、经过微调的模型实例,每个实例都拥有1750亿参数,这在成本上是不可承受的。我们提出了低秩适应方法(Low-Rank Adaptation,简称LoRA),该方法冻结预训练模型的权重,并在Transformer架构的每一层中注入可训练的低秩分解矩阵,从而大大减少了下游任务中需要训练的参数数量。
  2. "Compared to GPT-3 175B fine-tuned with Adam, LoRA can reduce the number of trainable parameters by 10,000 times and the GPU memory requirement by 3 times." 与使用Adam优化器微调的GPT-3 175B相比,LoRA可以将可训练参数的数量减少至原来的1/10,000,并将GPU内存需求降低3倍。
  3. "LoRA performs on-par or better than fine-tuning in model quality on RoBERTa, DeBERTa, GPT-2, and GPT-3, despite having fewer trainable parameters, a higher training throughput, and, unlike adapters, no additional inference latency." 尽管LoRA的可训练参数较少、训练吞吐量更高,并且与适配器不同的是不会增加额外的推理延迟,但其在RoBERTa、DeBERTa、GPT-2和GPT-3上的模型质量与微调相当或更优。

这一部分明确了LoRA的提出背景、核心思路及其在节省计算资源方面的优势,同时也为后续详细讨论模型适应过程中的秩亏现象和实验验证奠定了基础。

Introduction

在这部分,论文介绍了自然语言处理(NLP)领域中的一种常见需求,即利用预训练的大型语言模型来适应多个下游任务。

传统上,这种适应过程通常通过微调(fine-tuning)实现,即更新预训练模型的 所有参数

然而,随着模型规模不断扩大(例如GPT-3有1750亿参数),微调方法面临着显著的存储和计算挑战。

因此,论文提出了一种新的方法------LoRA(Low-Rank Adaptation),通过 冻结预训练模型权重 ,仅对模型中的 某些层进行低秩矩阵的训练,从而大幅减少所需的参数数量和计算资源。


  • 背景与挑战 :随着GPT-3等大规模语言模型的出现,微调每一个下游任务的模型变得越来越困难,因为需要更新的参数数量与预训练模型的参数量相同。对于GPT-3 175B来说,微调意味着需要存储和部署多个大小相当的独立模型实例,这是不现实的。
    • 原文描述:"As larger models are trained every few months, this changes from a mere 'inconvenience' for GPT-2 (Radford et al., b) or RoBERTa large (Liu et al., 2019) to a critical deployment challenge for GPT-3 (Brown et al., 2020) with 175 billion trainable parameters."
  • 现有方法的局限性 :论文讨论了现有方法如插入适配器层(adapter layers )和优化输入激活的不足之处。这些方法虽然在一定程度上缓解了参数量的问题,但往往会 增加推理时的延迟 ,或者在某些情况下 无法达到与完全微调相同的效果
    • 原文描述:"However, existing techniques often introduce inference latency (Houlsby et al., 2019; Rebuffi et al., 2017) by extending model depth or reduce the model's usable sequence length (Li & Liang, 2021; Lester et al., 2021; Hambardzumyan et al., 2020; Liu et al., 2021) (Section 3). More importantly, these method often fail to match the fine-tuning baselines, posing a trade-off between efficiency and model quality." 然而,现有技术通常通过增加模型深度而引入推理延迟(Houlsby等人,2019;Rebuffi等人,2017),或通过减少模型的可用序列长度来达到效果(Li & Liang, 2021;Lester等人,2021;Hambardzumyan等人,2020;Liu等人,2021)(参见第3节)。更重要的是,这些方法往往无法达到微调基线的效果,从而在效率与模型质量之间造成权衡。
  • LoRA方法的灵感与核心假设 :论文借鉴了之前的研究,这些研究表明,学习到的过参数化模型实际上 位于一个低本质维度空间中 。基于此,作者假设在模型适应过程中权重变化也具有低秩属性,因此提出了LoRA方法。LoRA通过优化适应过程中权重变化的低秩分解矩阵,而不是直接优化所有模型参数,从而在保留预训练模型权重的同时,降低计算复杂度。
    • 原文描述:"We take inspiration from Li et al. (2018a); Aghajanyan et al. (2020) which show that the learned over-parametrized models in fact reside on a low intrinsic dimension. We hypothesize that the change in weights during model adaptation also has a low 'intrinsic rank', leading to our proposed Low-Rank Adaptation (LoRA) approach. LoRA allows us to train some dense layers in a neural network indirectly by optimizing rank decomposition matrices of the dense layers' change during adaptation instead, while keeping the pre-trained weights frozen, as shown in Figure 1." 我们从Li等人(2018a)和Aghajanyan等人(2020)的研究中获得启发,这些研究表明,学习到的过参数化模型实际上存在于一个低本质维度中。我们假设模型适应过程中权重的变化也具有低"本质秩",由此提出了低秩适应(Low-Rank Adaptation,LoRA)方法。LoRA使我们能够通过优化神经网络中密集层在适应过程中的变化的秩分解矩阵来间接训练某些密集层,同时保持预训练权重不变,如图1所示。
  • 低秩方法的优势
    • LoRA允许通过训练低秩矩阵的方式 间接训练神经网络的某些密集层,并将这些训练后的矩阵与冻结的预训练权重结合使用,不增加推理时的延迟。
    • LoRA在实际应用中可以显著减少所需的存储空间和任务切换开销,同时降低硬件要求。
    • 原文描述:
    • 翻译:

这一部分介绍了论文提出LoRA方法的背景、动机以及核心理念。它解释了为何现有的微调方法在大模型时代面临挑战,同时展示了LoRA如何通过低秩矩阵的优化来减少适应过程中所需的计算资源。

Problem Statement

在这部分内容当中,论文提出了适应大规模预训练语言模型的挑战,并详细阐述了低秩适应(LoRA)的动机。

虽然LoRA的设计与具体的训练目标无关,但作者以 语言建模 作为主要的应用案例。

该部分描述了 传统完全微调方法 在大规模模型中带来的计算和存储负担,并介绍了LoRA如何通过 低秩表示 来高效地编码参数变化,从而显著降低了需要优化的参数量。

具体:

  • 语言建模问题与完全微调的挑战 :在进行下游任务(如文本摘要、机器阅读理解、自然语言到SQL的生成)时,通常需要微调一个预训练的自回归语言模型 P Φ ( y ∣ x ) P_\Phi(y|x) PΦ(y∣x),其参数为 Φ \Phi Φ。每个下游任务都对应着一组训练数据集 Z = { ( x i , y i ) } Z = \{(x_i, y_i)\} Z={(xi,yi)},其中 x i x_i xi和 y i y_i yi都是词序列。例如,在自然语言到SQL任务中, x i x_i xi是自然语言查询, y i y_i yi是对应的SQL指令。
    • 原文描述: "Suppose we are given a pre-trained autoregressive language model P Φ ( y ∣ x ) P_\Phi(y|x) PΦ(y∣x)parametrized by Φ \Phi Φ. For instance, P Φ ( y ∣ x ) P_\Phi(y|x) PΦ(y∣x)can be a generic multi-task learner such as GPT"
    • "Consider adapting this pre-trained model to downstream conditional text generation tasks"
    • "Each downstream task is represented by a training dataset of context-target pairs: Z = ( x i , y i ) i = 1 , . . . , N Z = {(x_i, y_i)}{i=1,...,N} Z=(xi,yi)i=1,...,N..." 每个下游任务都由一组上下文-目标对组成的数据集表示 。数据集记为 Z = ( x i , y i ) i = 1 , . . . , N Z = {(x_i, y_i)}{i=1,...,N} Z=(xi,yi)i=1,...,N,其中 x i x_i xi和 y i y_i yi是由标记序列组成的。例如,在NL2SQL任务中, x i x_i xi是自然语言查询, y i y_i yi是其对应的SQL指令。
  • 完全微调公式与问题 :在完全微调过程中,模型初始化为预训练权重 Φ 0 \Phi_0 Φ0,并通过反复优化下式来更新权重 Φ 0 \Phi_0 Φ0为 Φ 0 + Δ Φ \Phi_0 + \Delta \Phi Φ0+ΔΦ,以 最大化条件概率: max ⁡ Φ ∑ ( x , y ) ∈ Z ∑ t = 1 ∣ y ∣ log ⁡ ( P Φ ( y t ∣ x , y < t ) ) \max_\Phi \sum_{(x, y) \in Z} \sum_{t=1}^{|y|} \log (P_\Phi(y_t|x, y_{<t})) maxΦ∑(x,y)∈Z∑t=1∣y∣log(PΦ(yt∣x,y<t))
  • 完全微调的局限性 :对于每个下游任务,完全微调需要学习一个新的参数增量 Δ Φ \Delta \Phi ΔΦ,其维度与预训练模型的维度 ∣ Φ 0 ∣ |\Phi_0| ∣Φ0∣相同。对于像GPT-3这样有1750亿参数的大模型来说,存储和部署多个独立的微调模型实例是非常具有挑战性的,甚至在实际中难以实现。
  • 低秩表示的解决方案 :为了克服这一挑战,论文提出了一种参数高效的方法 ,其中任务特定的参数增量 Δ Φ \Delta \Phi ΔΦ被编码为一个更小规模的参数集合 Θ \Theta Θ,即 Δ Φ = Δ Φ ( Θ ) \Delta \Phi = \Delta \Phi(\Theta) ΔΦ=ΔΦ(Θ),其维度远小于 ∣ Φ 0 ∣ |\Phi_0| ∣Φ0∣。在这个框架下,寻找参数增量的任务转变为 对参数集合 Θ \Theta Θ** 的优化**:

max ⁡ Θ ∑ ( x , y ) ∈ Z ∑ t = 1 ∣ y ∣ log ⁡ ( P Φ 0 + Δ Φ ( Θ ) ( y t ∣ x , y < t ) ) \max_\Theta \sum_{(x, y) \in Z} \sum_{t=1}^{|y|} \log \left(P_{\Phi_0+\Delta \Phi(\Theta)}(y_t|x, y_{<t})\right) maxΘ∑(x,y)∈Z∑t=1∣y∣log(PΦ0+ΔΦ(Θ)(yt∣x,y<t))

  • 原文描述:"In this paper, we adopt a more parameter-efficient approach, where the task-specific parameter increment Δ Φ = Δ Φ ( Θ ) \Delta \Phi = \Delta \Phi(\Theta) ΔΦ=ΔΦ(Θ)is further encoded by a much smaller-sized set of parameters Θ \Theta Θwith ∣ Θ ∣ ≪ ∣ Φ 0 ∣ |\Theta| \ll |\Phi_0| ∣Θ∣≪∣Φ0∣. The task of finding Δ Φ \Delta \Phi ΔΦthus becomes optimizing over Θ \Theta Θ."
  • LoRA的优势 :在后续的部分中,论文提出了使用低秩表示来编码 Δ Φ \Delta \Phi ΔΦ的方法,这种方法在计算和内存方面都更为高效。对于GPT-3 175B模型来说,可训练参数的数量 ∣ Θ ∣ |\Theta| ∣Θ∣可以小到原始参数的0.01%。
    • 原文描述: "In the subsequent sections, we propose to use a low-rank representation to encode Δ Φ \Delta \Phi ΔΦthat is both compute- and memory-efficient. When the pre-trained model is GPT-3 175B, the number of trainable parameters ∣ Θ ∣ |\Theta| ∣Θ∣can be as small as 0.01% of ∣ Φ 0 ∣ |\Phi_0| ∣Φ0∣."

"Problem Statement"部分明确指出了在大规模预训练语言模型中进行完全微调的主要挑战:存储和计算负担过大。

为了解决这些问题,LoRA通过引入低秩参数化的增量更新,大大减少了训练时所需的可调参数量。

Aren't Existing Solutions Good Enough?

在这部分,论文对现有的一些用于适应大规模预训练模型的技术进行了回顾和评估。

主要分析了 两种主流方法:插入适配器层(adapter layers)和优化输入层激活(如前缀调整)。

作者指出,这些方法虽然在某些情况下提供了更高的参数效率,但在实际应用中仍存在诸多局限性,尤其是在处理大规模模型时。

具体如下:

  • 现有解决方案的回顾
    • 适配器层(Adapter Layers) :适配器层的思路是 将额外的适配器模块插入到Transformer的层之间 ,这样在训练时只需调整适配器中的参数,从而减少整体的训练参数数量。论文分析了不同的适配器设计,包括Houlsby等人的原始设计和一些简化版本。
      • 原文描述:"There are many variants of adapters. We focus on the original design by Houlsby et al. (2019) which has two adapter layers per Transformer block and a more recent one by Lin et al. (2020) which has only one per block but with an additional LayerNorm (Ba et al., 2016)."
    • 适配器的局限性 :尽管适配器设计可以显著减少参数数量,但它们会在推理时引入额外的延迟,因为 适配器层需要顺序处理 ,这对于一些对时延敏感的应用(如在线推理)是一个问题。
      • 原文描述:"While one can reduce the overall latency by pruning layers or exploiting multi-task settings (Rücklé et al., 2020; Pfeiffer et al., 2021), there is no direct ways to bypass the extra compute in adapter layers."
    • 前缀调整(Prefix Tuning) :前缀调整是一种通过优化输入序列中的特定前缀来适应新任务的方法。它调整输入的激活而不改变模型的核心权重,因而也可以减少参数量。但这种方法的一个主要挑战是,当前缀数量增加时,模型的表现往往会波动,并且可能影响到输入序列的可用长度。
      • 原文描述:"We observe that prefix tuning is difficult to optimize and that its performance changes non-monotonically in trainable parameters, confirming similar observations in the original paper."
  • 现有方法的主要问题
    • 适配器方法虽然在 参数数量上 有优势,但在大规模模型中,尤其是需要快速推理的场景下,它们的额外计算和内存开销会带来不利影响。
    • 前缀调整方法在优化时不稳定,并且在调整输入序列时,会占用本应用于任务处理的序列长度,从而限制了下游任务的有效性。
    • 这些方法都在一定程度上存在效率和模型质量之间的权衡,无法完全达到与传统微调方法相同的效果。
    • 原文描述:"More importantly, these method often fail to match the fine-tuning baselines, posing a trade-off between efficiency and model quality."

这一部分主要通过分析适配器层和前缀调整方法的优缺点,指出了现有技术在处理大规模预训练模型时的局限性,尤其是在推理延迟和优化稳定性方面的问题。

LoRA方法在提出时,正是希望解决这些不足,提供一种更高效、无延迟的模型适应方式。

Our Method

在"Our Method"部分,论文详细介绍了LoRA(Low-Rank Adaptation)的设计原理及其实际应用优势。

LoRA的核心是通过低秩参数化的更新矩阵,实现对大规模语言模型的适应,并在适应过程中保持预训练模型的参数冻结。

此方法可以广泛应用于神经网络的任意密集层,特别是在Transformer架构中,LoRA对特定权重矩阵的适应优化带来了显著的计算和存储效率提升。

Low-Rank-Parametrized Update Matrices

具体:

  • LoRA的基本原理
    • 传统神经网络中的密集层通常依赖于全秩的权重矩阵进行计算,而在模型适应的过程中,权重的变化矩阵也需要保持全秩。然而,LoRA假设在模型适应过程中,这些变化矩阵具有较低的内在秩。
    • 具体来说,对于一个预训练的权重矩阵 W 0 ∈ R d × k W_0 \in \mathbb{R}^{d \times k} W0∈Rd×k,LoRA将其更新表示为 W 0 + Δ W = W 0 + B A W_0 + \Delta W = W_0 + BA 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)。这种低秩表示大大减少了所需的可训练参数数量。
    • 原文描述: "For a pre-trained weight matrix W 0 ∈ R d × k W_0 \in \mathbb{R}^{d \times k} W0∈Rd×k, we constrain its update by representing the latter with a low-rank decomposition W 0 + Δ W = W 0 + B A W_0 + \Delta W = W_0 + BA W0+ΔW=W0+BA, where 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, and the rank r ≪ min ⁡ ( d , k ) r \ll \min(d, k) r≪min(d,k)."
  • 训练过程与公式解释
    • 在LoRA中,预训练的权重 W 0 W_0 W0**是冻结的** ,不会在训练中更新,只有 A A A和 B B B需要进行训练。
    • 输入向量 x x x经由 W 0 W_0 W0和低秩矩阵的计算得到输出: h = W 0 x + Δ W x = W 0 x + B A x h = W_0x + \Delta Wx = W_0x + BAx h=W0x+ΔWx=W0x+BAx
  • 原文描述: "During training, W 0 W_0 W0is frozen and does not receive gradient updates, while A A Aand B B Bcontain trainable parameters. Note both W 0 W_0 W0and Δ W = B A \Delta W = BA ΔW=BAare multiplied with the same input, and their respective output vectors are summed coordinate-wise."
  • 参数初始化与缩放策略
    • 在LoRA中,矩阵 A A A采用高斯随机初始化,而 B B B则初始化为零,这样在训练开始时 Δ W = B A \Delta W = BA ΔW=BA为零。
    • 为了在不同的秩值 r r r之间调节,LoRA引入了一个缩放因子 α \alpha α,从而减少在改变 r r r时调整超参数的需求。
    • 原文描述:"We use a random Gaussian initialization for A A Aand zero for B B B, so Δ W = B A \Delta W = BA ΔW=BAis zero at the beginning of training. We then scale Δ W x \Delta Wx ΔWxby α / r \alpha / r α/r, where α \alpha αis a constant in r r r."
  • 全微调的一般化形式
    • LoRA可以被视为 全微调的一种一般化形式。当将LoRA应用到所有的权重矩阵并训练所有的偏置项时,它的表现可以接近于完全微调。也就是说,随着可训练参数数量的增加,LoRA的训练效果逐渐趋近于原始模型的训练效果。
    • 原文描述:"LoRA takes a step further and does not require the accumulated gradient update to weight matrices to have full-rank during adaptation. This means that when applying LoRA to all weight matrices and training all biases, we roughly recover the expressiveness of full fine-tuning by setting the LoRA rank r r rto the rank of the pre-trained weight matrices."
  • 无额外推理延迟的优点
    • LoRA的设计使得在部署过程中可以直接将 W = W 0 + B A W = W_0 + BA W=W0+BA进行计算和存储,与完全微调的模型相比,不会在推理时引入额外的延迟。对于需要频繁切换任务的场景,LoRA可以快速替换适应权重矩阵,从而实现低成本的任务切换。
    • 原文描述:"Critically, this guarantees that we do not introduce any additional latency during inference compared to a fine-tuned model by construction."

Applying LoRA to Transformer

在"4.2 Applying LoRA to Transformer"的这部分,论文详细说明了如何将LoRA方法应用于Transformer架构中。

虽然LoRA可以被应用于神经网络中的任意密集层,但作者特别关注了在Transformer自注意力模块中的应用。

在该部分,LoRA主要作用于自注意力模块中的权重矩阵,以减少下游任务适应过程中的可训练参数量,同时在实际应用中保持高效性。

分析:

  • LoRA在Transformer中的应用范围
    • LoRA方法可以应用于Transformer架构中的多种权重矩阵。在自注意力模块中,通常涉及四个投影矩阵: W q W_q Wq(查询)、 W k W_k Wk(键)、 W v W_v Wv(值)、以及 W o W_o Wo(输出)。
    • 此外,MLP(Multi-Layer Perceptron)模块中也有 两个密集层的权重矩阵。LoRA的设计允许选择性地适应这些矩阵中的某些部分。
    • 原文描述:"In principle, we can apply LoRA to any subset of weight matrices in a neural network to reduce the number of trainable parameters. In the Transformer architecture, there are four weight matrices in the self-attention module ( W q W_q Wq, W k W_k Wk, W v W_v Wv, W o W_o Wo) and two in the MLP module."
  • 简化适应策略
    • 为了简化研究并提高参数效率,作者在实验中主要选择 适应自注意力模块中的查询和值投影矩阵,而保持MLP模块中的权重不变。这种选择的背后是为了在下游任务适应过程中减少可训练参数量,并确保LoRA在推理时的高效性。
    • 原文描述:"We limit our study to only adapting the attention weights for downstream tasks and freeze the MLP modules (so they are not trained in downstream tasks) both for simplicity and parameter-efficiency."
  • LoRA的实际好处与限制
    • 优势:LoRA的主要优势在于显著降低了内存和存储需求。在大型Transformer模型(如GPT-3 175B)中,通过LoRA可以减少训练过程中显存(VRAM)的使用量,从1.2TB降低至350GB。此外,使用LoRA后,训练时的检查点(checkpoint)大小大幅减少,任务切换时只需替换LoRA矩阵,因而可以更灵活地应对不同的下游任务。
    • 原文描述
      • "The most significant benefit comes from the reduction in memory and storage usage" 最大的好处来自于内存和存储使用的减少。
      • "On GPT-3 175B, we reduce the VRAM consumption during training from 1.2TB to 350GB." 在GPT-3 175B上,我们将训练期间的VRAM消耗从1.2TB减少到350GB。
    • 限制 :然而,LoRA在某些场景下也有其局限性。例如,在不同任务的输入需要不同的 A A A和 B B B矩阵时,如果将 A A A和 B B B与原始权重合并,那么在同一次前向传递中批量处理这些任务将变得困难。
    • 原文描述 :"LoRA also has its limitations. For example, it is not straightforward to batch inputs to different tasks with different A A Aand B B Bin a single forward pass, if one chooses to absorb A A Aand B B Binto W W Wto eliminate additional inference latency."

小结:

  1. LoRA的核心设计理念是利用低秩矩阵表示模型参数的变化,从而在大规模预训练模型适应时显著减少所需的可训练参数数量。
  2. 这种方法在保持预训练权重不变的前提下,通过优化更小的矩阵,使得适应过程更高效,并且不会增加推理时的计算开销。
  3. 同时LoRA在Transformer架构中,主要针对自注意力模块的特定权重进行低秩适应,从而大幅降低可训练参数量和训练过程中的内存占用,同时保持了高效性和任务灵活性。
  4. 虽然LoRA在特定场景下也有一定限制,但总体上其设计显著简化了大规模语言模型的下游任务适应过程。

何为高斯随机初始化

高斯随机初始化 是一种在神经网络中初始化权重的方法,使用高斯分布(也叫正态分布)来生成初始权重值。初始化权重是训练神经网络的关键步骤之一,因为它对模型的收敛速度和最终性能有显著影响。

  1. 高斯分布
  • 高斯分布正态分布 是一种经典的概率分布,通常表示为 N ( μ , σ 2 ) \mathcal{N}(\mu, \sigma^2) N(μ,σ2),其中:
    • μ \mu μ:是分布的均值(mean) ,控制分布的中心位置。
    • σ 2 \sigma^2 σ2:是分布的方差(variance) ,控制分布的宽度,即数据的离散程度。
    • σ \sigma σ:是标准差(standard deviation),等于方差的平方根。
  • 高斯分布的图像是一条钟形曲线,大部分数据点集中在均值附近,越远离均值的点出现的概率越低。
  1. 高斯随机初始化的原理
  • 在高斯随机初始化中,我们使用高斯分布随机生成权重矩阵中的初始值。具体地,假设权重矩阵 W W W的每个元素 w w w都是从 N ( μ , σ 2 ) \mathcal{N}(\mu, \sigma^2) N(μ,σ2)分布中抽样得到的: w ∼ N ( μ , σ 2 ) w \sim \mathcal{N}(\mu, \sigma^2) w∼N(μ,σ2)
  • 通常, μ \mu μ会设置为 0,即均值为 0,这样权重在初始化时不会偏向正数或负数。
    • σ \sigma σ的选择会根据网络的结构和输入的大小来调整,以控制初始权重的范围。
  1. 为什么使用高斯随机初始化?
  • 避免对称性问题:神经网络的每个层中神经元的权重如果初始化为相同的值,就会导致它们在训练过程中更新时发生相同的变化。高斯随机初始化可以为每个权重生成不同的初始值,从而打破对称性,使得神经元能够学习到不同的特征。
  • 快速收敛 :通过合理选择 σ \sigma σ的大小,高斯初始化可以帮助模型在训练初期快速找到优化路径,避免训练过程陷入停滞。
  • 梯度传播的稳定性:合适的高斯分布方差可以控制权重的初始值不至于太大或太小,避免梯度爆炸(gradient explosion)或梯度消失(gradient vanishing)。
  1. 常用的高斯初始化方法

在实际使用中,直接使用标准的高斯分布并不总是效果最佳,因此有一些变种的高斯随机初始化方法更适合不同类型的神经网络结构:

  • Xavier/Glorot Initialization
    • 提出者: Xavier Glorot 和 Yoshua Bengio。
    • 适用于: Sigmoid、Tanh 等激活函数。
    • 公式: 对于权重矩阵 W W W中的每个权重,使用 N ( 0 , 2 fan_in + fan_out ) \mathcal{N}(0, \frac{2}{\text{fan\_in} + \text{fan\_out}}) N(0,fan_in+fan_out2)初始化。
      * fan_in \text{fan\_in} fan_in是输入的数量, fan_out \text{fan\_out} fan_out是输出的数量。这种初始化方式能保持前向和反向传播中信号的方差不变。
  • He Initialization(Kaiming Initialization)
    • 提出者: Kaiming He 等人。
    • 适用于: ReLU 及其变体的激活函数。
    • 公式: N ( 0 , 2 fan_in ) \mathcal{N}(0, \frac{2}{\text{fan\_in}}) N(0,fan_in2)。
    • 这种方法通过更大的方差初始化,使得 ReLU 激活函数在训练初期不会因为输入值太小而出现过多的"死神经元"。
  1. 高斯随机初始化的应用场景
  • 神经网络训练的初始阶段:在训练深度学习模型(如卷积神经网络、Transformer 模型)时,通常会使用高斯随机初始化或其变种方法为模型的权重矩阵赋初始值。
  • 参数微调(如 LoRA) :在微调过程中,如果需要为额外的矩阵(如低秩矩阵 A A A)进行初始化,高斯随机初始化可以帮助这些新加的参数在训练中更快地找到合适的调整方向。

Empirical Experiments

在"Empirical Experiments"部分,论文主要通过实验评估LoRA(低秩适应方法)的性能,尤其是相比其他适配方法在不同任务和模型上的表现。

LoRA被应用于各种语言模型,如RoBERTa、DeBERTa和GPT-2,并扩展到大规模模型GPT-3上。

实验涵盖从自然语言理解(NLU)到生成(NLG)的一系列任务,具体包括GLUE基准测试(适用于RoBERTa和DeBERTa)和WikiSQL、SAMSum等任务。

实验通过在标准化的硬件配置上测试,展示了LoRA在减少训练参数量的同时维持或提升模型性能的能力。

  1. 模型和任务的多样性
    • 在这一部分中,作者详细说明了所用的模型(RoBERTa、DeBERTa、GPT-2)和任务集(如GLUE基准、WikiSQL),展示了LoRA在这些广泛任务上的适应能力。
    • 论文原文:"We evaluate the downstream task performance of LoRA on RoBERTa (Liu et al., 2019), DeBERTa (He et al., 2021), and GPT-2 (Radford et al., b), before scaling up to GPT-3 175B (Brown et al., 2020). Our experiments cover a wide range of tasks, from natural language understanding (NLU) to generation (NLG)."
  2. 标准基线和实验配置
    • LoRA的效果被与多种基线方法进行对比,包括标准的全量微调(Fine-Tuning)和适配器方法(如AdapterL)。通过复用先前工作的设置,作者能够确保实验的公平性和可比性。
    • 论文原文:"To compare with other baselines broadly, we replicate the setups used by prior work and reuse their reported numbers whenever possible."
  3. 实验的硬件配置
    • 作者采用了统一的硬件配置,以确保不同模型之间的实验结果具有可比性,例如使用NVIDIA Tesla V100 GPU进行实验。
    • 论文原文:"We use NVIDIA Tesla V100 for all experiments."

Baselines

概述:

在这部分,论文介绍了用于模型对比的基准方法。

作者详细说明了与LoRA的比较模型,以便于对比不同适应方法的性能。

常见的基准方法包括Fine-Tuning (FT)、Bias-only tuning (也称为BitFit)、Prefix-embedding tuning (PreEmbed)、Prefix-layer tuning (PreLayer) 和 Adapter tuning 等。

每种方法的特点在于参数的训练量不同,并基于权重冻结策略,或者引入特定层次来实现更高效的适应效果。


LoRA方法通过低秩更新矩阵进行适应(fine-tuning),相比于其他方法减少了计算成本和内存需求。

在实际对比中,作者复现了现有的模型设置,并尽可能地使用了公开数据中的性能指标。

Fine-tuning方法对所有模型参数进行梯度更新,偏置训练(Bias-only tuning)仅调整偏置参数,而Prefix和Adapter方法则通过插入特定层或嵌入来调整模型适应性。


  1. Fine-Tuning (FT)

Fine-Tuning是一种常见的适应方法,更新所有模型参数以使其适应特定任务。

在某些实现中,可以仅调整模型的部分层(如最后两层,即FTTop2),以减少训练量。

  • 原文:"Fine-Tuning (FT) is a common approach for adaptation. During fine-tuning, the model is initialized to the pre-trained weights and biases, and all model parameters undergo gradient updates. A simple variant is to update only some layers while freezing others. We include one such baseline reported in prior work (Li & Liang, 2021) on GPT-2, which adapts just the last two layers (FTTop2)" 微调(FT)是一种常见的适应方法。在微调过程中,模型被初始化为预训练的权重和偏置,且所有模型参数都进行梯度更新。一个简单的变体是只更新部分层,而冻结其他层。我们包含了先前研究中报告的一个基线(Li & Liang, 2021)在GPT-2上的方法,该方法仅适应最后两层(FTTop2)。
  1. Bias-only Tuning (BitFit)

Bias-only tuning或称BitFit,只更新偏置参数,其余参数全部冻结。

相比于Fine-Tuning,该方法大幅度减少了需要训练的参数量,适合在资源有限的环境中进行快速调整。

  • 原文:"Bias-only or BitFit is a baseline where we only train the bias vectors while freezing everything else"
  1. Prefix-Embedding Tuning (PreEmbed)

Prefix-embedding tuning通过在 输入序列中插入 可训练的特殊token以调整模型。

具体来说,这些特殊token的嵌入参数会被训练,以实现模型在特定任务下的适应。

  • 公式 :该方法中可训练参数的数量为 ∣ Θ ∣ = d m o d e l × ( l p + l i ) |Θ|=d_{model} \times (l_p + l_i) ∣Θ∣=dmodel×(lp+li),其中 d m o d e l d_{model} dmodel为模型的隐藏层维度, l p l_p lp和 l i l_i li分别代表 前缀和中缀的token数量
  • 原文:"Prefix-embedding tuning (PreEmbed) inserts special tokens among the input tokens. These special tokens have trainable word embeddings and are generally not in the model's vocabulary"
  1. Prefix-Layer Tuning (PreLayer)

Prefix-layer tuning是 Prefix-embedding 的扩展,不仅调整特殊token的嵌入,还替换每层Transformer后的激活值。

这样可通过插入特定层的方式来实现更细粒度的适应。

  • 公式 :其可训练参数数量为 ∣ Θ ∣ = L × d m o d e l × ( l p + l i ) |Θ|=L \times d_{model} \times (l_p + l_i) ∣Θ∣=L×dmodel×(lp+li),其中 L L L为Transformer层数。
  • 原文
    • "Prefix-layer tuning (PreLayer) is an extension to prefix-embedding tuning. Instead of just learning the word embeddings"
    • "we learn the activations after every Transformer layer"
  1. Adapter Tuning

Adapter tuning则是在自注意力模块后插入适配层(adapter layer),包含两个全连接层和非线性激活。

该方法通过添加额外层来微调模型,控制参数量以提升适应效果。

  • 公式 :其可训练参数的数量为 ∣ Θ ∣ = L A d p t × ( 2 × d m o d e l × r + r + d m o d e l ) + 2 × L L N × d m o d e l |Θ|=L_{Adpt} \times (2 \times d_{model} \times r + r + d_{model}) + 2 \times L_{LN} \times d_{model} ∣Θ∣=LAdpt×(2×dmodel×r+r+dmodel)+2×LLN×dmodel,其中 L A d p t L_{Adpt} LAdpt为适配层的数量, L L N L_{LN} LLN为可训练的LayerNorm数量:contentReference[oaicite:6]{index=6}。
  • 原文:"Adapter tuning as proposed in Houlsby et al. (2019) inserts adapter layers between the self-attention module (and the MLP module) and the subsequent residual connection. There are two fully connected layers with biases in an adapter layer with a nonlinearity in between"

作者列出了不同基准方法在GLUE数据集上的性能表现。

表格展示了RoBERTa、DeBERTa等模型在不同适应方法下的平均精度等指标,表明LoRA在保证高性能的前提下使用更少的训练参数。

RoBERTa base/large

论文提到,RoBERTa通过优化BERT的预训练配方,在不增加大量可训练参数的情况下提升了任务性能。

虽然RoBERTa在NLP领域的排行榜上已被更大的模型超越,但它仍然因其尺寸和适用性受到实践者的青睐。

在本实验中,作者使用了HuggingFace Transformers库中的预训练RoBERTa base (125M) 和 RoBERTa large (355M) 模型,并在GLUE基准测试上评估了不同适应方法的表现。

为了确保公平的对比,作者做了两项关键设置调整以评估LoRA的效果:首先,所有任务使用相同的批次大小和序列长度;其次,模型初始化为MRPC、RTE和STS-B等任务的预训练权重,而不是直接适应MNLI。

这些实验结果列在论文的表2中,详细的超参数信息可以在附录D.1中找到。

DeBERTa XXL

DeBERTa(He et al., 2021)是BERT的一种更新变体,采用了更大规模的数据进行训练,并在GLUE和SuperGLUE等基准测试上表现出色。

作者在这一节中评估了LoRA是否能够在不进行全量微调的前提下,达到完全微调的DeBERTa XXL(1.5B参数)模型在GLUE上的性能表现。

GPT-2 medium/large

篇幅不长,直接翻译加分析表格

已证明 LoRA 可以作为完整微调在自然语言理解(NLU)中的一种有竞争力的替代方法,我们希望了解 LoRA 是否在自然语言生成(NLG)模型(如 GPT-2 中型和大型模型)上依然表现出色(Radford 等人)。

我们尽可能使设置接近 Li & Liang(2021)以便直接比较。

由于篇幅限制,我们仅在本节中展示 E2E NLG Challenge(表 3)上的结果。有关 WebNLG(Gardent 等人,2017)和 DART(Nan 等人,2020)上的结果,请参见附录 F.1。我们在附录 D.3 中列出了使用的超参数。


表格:

分析:

Scaling up to GPT-3 175B

从这张图表和描述中可以得出以下几点分析:

  1. LoRA在性能和扩展性上优于其他方法:图中展示了在GPT-3 175B上的适应方法比较。LoRA在WikiSQL和MNLI-matched两个数据集上表现出色,甚至超过了全参数微调(Fine-Tune)基准。它能够在更少的可训练参数下保持较高的验证准确性,展现出良好的扩展性。
  2. 参数量与性能的关系并不总是单调递增:如图2所示,不是所有方法在增加可训练参数时都能获得性能提升。例如,在PrefixEmbed和PrefixLayer方法中,当使用的特殊token数目超过一定量(分别为256和32)后,性能明显下降。这表明,过多的特殊token可能导致输入分布偏离预训练数据分布,从而影响模型的表现。
  3. LoRA的稳定性:LoRA方法在不同的任务上表现稳定,且在多种参数配置下能够保持较高的验证准确率。这表明LoRA在实际应用中具有较好的鲁棒性和效率,尤其适用于大规模模型的参数优化。

综上所述,LoRA在参数高效的适应方面具有显著优势,尤其是在大规模模型GPT-3 175B的应用中,它能够在较低的硬件需求和存储开销下实现高效的任务适应。

论文在这部分探讨了与LoRA(Low-Rank Adaptation of Large Language Models)方法相关的三个主要领域的研究背景:

1)基于Transformer的语言模型,

2)提示工程(Prompt Engineering)和微调(Fine-Tuning)策略,

3)参数高效适配(Parameter-Efficient Adaptation)的已有方法。

此部分为LoRA方法的提出提供了理论和方法上的依据。

Transformer Language Models

这一部分回顾了Transformer模型在自然语言处理(NLP)中的重要性。

自从Vaswani等人提出Transformer以来,它以自注意力机制为核心,广泛应用于序列到序列的任务,如语言生成、机器翻译等。

随后,BERT和GPT-2等基于Transformer的模型引入了 预训练-微调 的流程,通过大规模数据的预训练获得泛化能力,再在特定任务上微调以提升效果。

  • 原文观点:"Transformer (Vaswani et al., 2017) is a sequence-to-sequence architecture that makes heavy use of self-attention. Radford et al. (a) applied it to autoregressive language modeling by using a stack of Transformer decoders. Since then, Transformer-based language models have dominated NLP, achieving the state-of-the-art in many tasks."

Prompt Engineering and Fine-Tuning

尽管GPT-3等模型在少样本学习(few-shot learning)中表现出色,但模型的效果 仍然依赖于输入的提示方式,这带来了提示工程的需求。

提示工程即通过调整输入提示的形式来改善模型在特定任务上的表现。而微调是另一种将通用语言模型适应特定任务的方式,通常需要调整大量参数,尤其是对于GPT-3这样的大模型,全面微调不仅计算开销大,还增加了存储成本

  • 原文观点:"While GPT-3 175B can adapt its behavior with just a few additional training examples, the result depends heavily on the input prompt (Brown et al., 2020). This necessitates an empirical art of composing and formatting the prompt to maximize a model's performance on a desired task, which is known as prompt engineering or prompt hacking."

Parameter-Efficient Adaptation

这一块介绍了 在Transformer层间插入适配层(adapter layers)的已有方法,以在参数数量限制的情况下实现高效适配。

Houlsby等人提出的适配层方法,以及之后的COMPACTER等扩展方法,均旨在 减少适配时的参数量

然而,LoRA的创新在于利用 低秩矩阵更新主权重,从而在不增加推理时延的情况下达到更高的效率。

  • 原文观点:"Many have proposed inserting adapter layers between existing layers in a neural network (Houlsby et al., 2019; Rebuffi et al., 2017; Lin et al., 2020). Our method uses a similar bottleneck structure to impose a low-rank constraint on the weight updates."

LoRA在此背景下被提出,它不同于传统的适配层方法,不会显著增加推理延迟,且可以在推理时直接合并更新后的权重,使得其在推理时的效率更高。

Understanding the Low-Rank Updates

在"理解低秩更新"部分,论文对LoRA在下游任务中学习到的低秩结构的性质进行了详细分析。

LoRA的低秩结构不仅降低了硬件要求,使得并行实验更加可行,而且在解释性上也优于其他方法,表明更新后的权重与预训练权重之间存在一定的相关性。

论文作者特别在GPT-3 175B模型上测试,发现LoRA方法能将可训练参数减少至原来的1万分之一,而不会影响任务性能。

下游任务是深度学习模型的最终用途,决定了模型的设计、训练和优化方向。


研究问题及分析:

作者提出了一系列实证研究问题,以深入理解LoRA的低秩更新特性:

  • 问题 1:在给定的参数预算限制下,应该调整Transformer中哪些权重矩阵以获得最佳的下游性能?
  • 问题 2:"最优"的适配矩阵(∆W)是否真的为低秩结构?如果是,实践中合适的秩(rank)是多少?
  • 问题 3:∆W和原始权重W之间的关系如何?∆W是否与W高度相关?∆W相对于W的大小如何?
  • 原文观点
    "Given the empirical advantage of LoRA, we hope to further explain the properties of the low-rank adaptation learned from downstream tasks. Note that the low-rank structure not only lowers the hardware barrier to entry which allows us to run multiple experiments in parallel, but also gives better interpretability of how the update weights are correlated with the pre-trained weights. We focus our study on GPT-3 175B, where we achieved the largest reduction of trainable parameters (up to 10,000×) without adversely affecting task performances."

∆W和W的关联性:

论文指出,∆W在放大W中已经存在但不被强调的方向上起到了显著作用。

通过比较∆W和W的奇异方向,作者发现∆W的低秩结构往往专注于那些对特定任务重要的方向,而这些方向在原始的预训练权重W中被忽略。

这表明LoRA的低秩适配矩阵能够有效地对特定下游任务做出适应。

  • 原文观点
    "We draw several conclusions from Table 7. First, ∆W has a stronger correlation with W compared to a random matrix, indicating that ∆W amplifies some features that are already in W. Second, instead of repeating the top singular directions of W, ∆W only amplifies directions that are not emphasized in W. This suggests that the low-rank adaptation matrix potentially amplifies the important features for specific downstream tasks that were learned but not emphasized in the general pre-training model."

在本部分,作者通过详细的实验证明了LoRA的低秩更新机制如何在减少训练成本的同时,确保了对特定任务的适应能力。这一结论为未来的低秩适配研究提供了参考,并且表明低秩适配矩阵可以有效地放大特定任务的重要特征。

Which Weight Matrices in Transformer Should We Apply LoRA to?

论文:

解析:

在这部分分析中,研究了在GPT-3模型中应用LoRA时,哪些自注意力模块的权重矩阵应该被适配,以达到最佳的下游任务表现。

主要结论如下:

  1. 参数效率与性能关系:在18M的可训练参数限制下(对应于每层一个类型的权重矩阵的rank为8或两个类型的rank为4),将LoRA应用于不同的自注意力权重矩阵组合上,能够实现不同的准确率表现。
  2. 最佳的权重组合:实验表明,将LoRA应用于 W q W_q Wq和 W v W_v Wv的组合(即 对这两个矩阵同时进行低秩适配 )可以获得最佳的整体性能。在WikiSQL数据集上获得 73.7%的准确率 ,在MultiNLI数据集上则达到91.7%。这优于仅适配单一权重类型(如 W q W_q Wq或 W v W_v Wv)的情况。
  3. 权重组合的重要性:相比于将所有参数放在 Δ W q \Delta W_q ΔWq或 Δ W k \Delta W_k ΔWk中,选择对 W q W_q Wq和 W v W_v Wv进行适配能够显著提升性能。即便rank较小,这种组合仍能捕捉足够的信息,表现 优于只适配单个权重矩阵类型且rank较大的情况

因此,研究结果建议在有限参数预算下,优先选择 多种权重组合 (如 W q W_q Wq和 W v W_v Wv)进行适配,以充分利用LoRA的参数效率,实现更高的任务表现。这种选择在大规模模型的下游任务适应中尤为重要。

⭐What is the Optimal Rank r for LoRA?

解析:

从这部分内容可以得出以下几点分析:

  1. Rank对性能的影响 :LoRA在不同rank值下的表现差异显著。在WikiSQL和MultiNLI两个数据集上,适应不同的自注意力权重矩阵组合可以达到不同的准确率。当rank较小(如 r = 1 r=1 r=1)时,若同时适应 W q W_q Wq和 W v W_v Wv,依然可以取得较好的效果。而仅适应 W q W_q Wq则需要更高的rank才能达到类似的效果。
  2. 较小的Rank已足够 :实验结果表明,即使是一个非常小的rank(如 r = 1 r=1 r=1),LoRA在 W q W_q Wq和 W v W_v Wv的组合上也能达到令人满意的表现。对于这些数据集,适应矩阵 Δ W \Delta W ΔW可能具有非常小的"内在秩"(intrinsic rank)。进一步的实验检查了不同rank和随机种子下学习到的子空间重叠情况,以支持这一发现。
  3. 增加Rank的效果有限:增加rank并不总能覆盖更有意义的子空间,这意味着低秩适应矩阵可能已经足够捕捉关键信息。因此,低秩的适应矩阵能够在保持较高性能的同时,减少计算复杂度和存储需求。

总体而言,LoRA的实验结果表明,在下游任务适应中,通过低秩矩阵的组合适应能够高效地达到理想的性能,而不需要增加过多的参数量。


这部分内容探讨了不同rank值的子空间相似性,主要结论如下:

  1. 不同rank的子空间相似性 :给定rank为 r = 8 r=8 r=8和 r = 64 r=64 r=64的适应矩阵 A r = 8 A_{r=8} Ar=8和 A r = 64 A_{r=64} Ar=64,通过奇异值分解获得它们的右奇异向量矩阵 U A r = 8 U_{A_{r=8}} UAr=8和 U A r = 64 U_{A_{r=64}} UAr=64。为了衡量这两个子空间的重叠程度,计算了基于Grassmann距离的归一化子空间相似性 ϕ ( A r = 8 , A r = 64 , i , j ) \phi(A_{r=8}, A_{r=64}, i, j) ϕ(Ar=8,Ar=64,i,j),表示前 i i i个奇异向量所张成的子空间与前 j j j个奇异向量所张成的子空间的相似性。
  2. 相似性范围 : ϕ ( ⋅ ) \phi(\cdot) ϕ(⋅)的值在 [ 0 , 1 ] [0, 1] [0,1]之间,其中1表示子空间完全重叠,0表示完全分离。图3展示了随着 i i i和 j j j变化时 ϕ \phi ϕ的变化情况。由于篇幅限制,实验仅在第48层进行,但结论适用于其他层。

公式如下: ϕ ( A r = 8 , A r = 64 , i , j ) = ∣ ∣ U A r = 8 i T U A r = 64 j ∣ ∣ F 2 min ⁡ ( i , j ) \phi(A_{r=8}, A_{r=64}, i, j) = \frac{||U_{A_{r=8}}^i T U_{A_{r=64}}^j||_F^2}{\min(i, j)} ϕ(Ar=8,Ar=64,i,j)=min(i,j)∣∣UAr=8iTUAr=64j∣∣F2

其中 U A r = 8 i U_{A_{r=8}}^i UAr=8i表示 U A r = 8 U_{A_{r=8}} UAr=8的前 i i i列,Frobenius 范数是矩阵中所有元素的平方和再开方、常用于衡量矩阵的大小或矩阵之间的距离

这个分析为理解不同rank下适应矩阵的子空间重叠提供了依据。


图3展示了在 A r = 8 A_{r=8} Ar=8和 A r = 64 A_{r=64} Ar=64中 Δ W q \Delta W_q ΔWq和 Δ W v \Delta W_v ΔWv的 列向量之间的子空间 相似性。

前两个图分别展示了 Δ W q \Delta W_q ΔWq和 Δ W v \Delta W_v ΔWv的完整子空间相似性分布,而后两个图则放大了前两个图的左下角区域。

可以观察到,在 r = 8 r=8 r=8中的主要方向包含在 r = 64 r=64 r=64中,反之亦然。

此图表明,即使在较小的rank值(如 r = 8 r=8 r=8)下,主要的奇异向量方向也能在更高的rank设置(如 r = 64 r=64 r=64)中得到体现,从而支持了子空间相似性在不同rank下的稳定性。


这段文字对图3中的观察进行了重要的解释:

奇异向量重叠: 在 r = 8 r=8 r=8和 r = 64 r=64 r=64的设定下, Δ W v \Delta W_v ΔWv(以及 Δ W q \Delta W_q ΔWq)的 顶级奇异向量方向 有显著的重叠,而其他方向没有。

这意味着在这两种rank值的矩阵中,最主要的信息方向是一致的,从而解释了为什么即使在较小的rank(如 r = 1 r=1 r=1)下,LoRA在GPT-3的下游任务中也能表现良好。

子空间中的随机噪声:由于 r = 8 r=8 r=8和 r = 64 r=64 r=64的适应矩阵都是使用相同的预训练模型学习的,图3显示, A r = 8 A_{r=8} Ar=8和 A r = 64 A_{r=64} Ar=64的顶级奇异向量方向包含了最有用的信息,而其他方向则可能主要包含训练过程中累积的随机噪声。

这说明适应矩阵的有效rank可以很低,从而在不增加复杂度的情况下实现高效的模型适应。

"顶级奇异向量方向"是指在矩阵的奇异值分解(SVD)中,对应于最大奇异值的奇异向量方向。

具体来说,假设我们对一个矩阵 M M M进行奇异值分解,可以得到: M = U Σ V T M=U \Sigma V^T M=UΣVT

其中:

  • U U U和 V V V是正交矩阵,包含了 M M M的左奇异向量和右奇异向量。

  • Σ \Sigma Σ是一个对角矩阵,对角线上包含了矩阵 M M M的奇异值,按从大到小的顺序排列。

顶级奇异向量方向通常是指在 U U U和 V V V中对应最大奇异值的奇异向量。

这个方向是矩阵数据中最主要的成分或模式,它捕捉了矩阵数据中方差最大的方向。

这些顶级奇异向量在矩阵的低秩近似和特征提取中非常重要,因为它们代表了矩阵的主要信息。


这段文字分析了不同随机种子下的子空间相似性:

随机种子对子空间相似性的影响: 通过比较两个随机种子下的子空间相似性(rank为 r = 64 r=64 r=64), Δ W q \Delta W_q ΔWq相比 Δ W v \Delta W_v ΔWv具有 更高的"内在秩" ,这意味着 Δ W q \Delta W_q ΔWq在不同随机种子下学到的奇异向量方向重叠更多。

对比随机高斯矩阵:作为对比,作者还绘制了两个 随机高斯矩阵的相似性 ,它们之间没有任何共同的奇异向量方向。这进一步验证了 Δ W q \Delta W_q ΔWq和 Δ W v \Delta W_v ΔWv的子空间相似性是有意义 的,而非随机噪声导致的重叠

那么,什么叫内在秩?`

  1. 内在秩(Intrinsic Rank)是指矩阵在实际应用中所需要的"有效秩",它代表了矩阵在表示数据或模型变化时所需的最小秩。

尽管矩阵的秩是由线性代数定义的数学概念,内在秩更关注数据的本质特性,反映了数据的真实复杂性

  1. 具体来说,内在秩描述了一个矩阵在表示其主要信息或模式时的最低秩需求。比如,如果一个矩阵包含很多冗余信息或噪声,它的数值秩可能很高,但其内在秩可以很低,因为很多信息可以被压缩或用低维空间近似来表示。

在深度学习中,内在秩有重要的应用,尤其是在低秩近似和参数高效的模型训练中。

以下是一些应用场景:

  1. 低秩近似(Low-Rank Approximation):在一些神经网络优化中,研究表明,模型的参数矩阵在实际应用中的变化只集中在低秩子空间中。通过用低秩矩阵来近似这些参数,可以有效降低计算复杂度。这种方法被广泛用于模型压缩和加速。
  2. LoRA(Low-Rank Adaptation):在LoRA中,内在秩被用来表示模型在适应新任务时参数变化的低秩特性。通过低秩分解来学习适应矩阵的变化,LoRA能够大幅减少需要训练的参数数量,且不影响模型性能。这是因为模型的参数更新实际上可以用较低的秩来描述,从而减少计算和存储开销。
  3. 降维和特征提取:在数据分析中,内在秩可以帮助确定数据的固有维度,即数据在低维空间中能否有效表示。比如,在主成分分析(PCA)中,我们通常选择解释方差较大的前几个主成分,实际表示的数据维度往往比原始维度低,这个低维空间的维度可以看作是数据的内在秩。

总之,内在秩描述了一个矩阵或数据集在有效表示信息时的复杂性或自由度。

How Does the Adaptation Matrix ΔW Compare to W

图4的三个子图展示了不同情况下子空间相似性的热图,以进一步验证 Δ W q \Delta W_q ΔWq和 Δ W v \Delta W_v ΔWv的子空间相似性是否有意义,还是说仅由随机噪声引起的。

  1. 左图和中图: 显示了在不同随机种子下 Δ W q \Delta W_q ΔWq和 Δ W v \Delta W_v ΔWv的列向量之间的归一化子空间相似性。在图中,颜色越接近白色(相似性越高),表示两个矩阵在特定方向上共享的奇异值分量越多。可以观察到 Δ W q \Delta W_q ΔWq和 Δ W v \Delta W_v ΔWv的子空间在不同随机种子下具有显著的相似性,特别是 Δ W q \Delta W_q ΔWq的相似性更高,这说明 Δ W q \Delta W_q ΔWq的子空间更稳定,对随机噪声更不敏感。
  2. 右图: 显示了两个随机高斯矩阵的相似性热图。由于随机高斯矩阵没有任何共同的奇异向量方向,其子空间相似性非常低,接近黑色。这进一步验证了,若 Δ W q \Delta W_q ΔWq和 Δ W v \Delta W_v ΔWv的子空间相似性只是随机噪声导致的,它们的相似性应类似于随机高斯矩阵的情况。然而,实际中 Δ W q \Delta W_q ΔWq和 Δ W v \Delta W_v ΔWv展示出显著的子空间重叠,表明这种相似性是有结构性和有意义的,而非随机噪声引起的重叠
  3. 因此,通过将 Δ W q \Delta W_q ΔWq和 Δ W v \Delta W_v ΔWv与随机高斯矩阵的子空间相似性对比,作者进一步证实了 Δ W q \Delta W_q ΔWq和 Δ W v \Delta W_v ΔWv的子空间相似性是任务相关的,反映了模型在学习过程中捕捉到的特定信息结构,而不仅仅是随机性噪声的结果。

表7中的分析展示了 Δ W q \Delta W_q ΔWq与 W q W_q Wq在特定方向上的相关性强度,重点在于 Δ W q \Delta W_q ΔWq在适应下游任务时 如何放大特定特征

这些特定特征在 W q W_q Wq中存在,但并未被显著强调。

以下是表格中各项的具体说明:

  1. ∣ ∣ U T W q V T ∣ ∣ F ||U^T W_q V^T||_F ∣∣UTWqVT∣∣F:这是将 W q W_q Wq投影到 Δ W q \Delta W_q ΔWq的 r r r维子空间后的Frobenius范数, U U U和 V V V分别为 Δ W q \Delta W_q ΔWq的左右奇异向量矩阵。这一范数值展示了 W q W_q Wq在 Δ W q \Delta W_q ΔWq的特定方向上有多大的重叠,即 Δ W q \Delta W_q ΔWq对 W q W_q Wq中的哪些方向做了放大。

  2. 对比结果:当 r = 4 r=4 r=4时, Δ W q \Delta W_q ΔWq的投影范数为0.32,而 W q W_q Wq的自身投影为21.67,随机矩阵则只有0.02。这说明 Δ W q \Delta W_q ΔWq所强调的方向在 W q W_q Wq中并不突出,但仍比随机噪声更有结构。当 r = 64 r=64 r=64时, Δ W q \Delta W_q ΔWq的投影范数为1.90,而 W q W_q Wq的投影为37.71,随机矩阵则为0.33。这进一步表明, Δ W q \Delta W_q ΔWq的更新方向虽然包含了一些在 W q W_q Wq中已有的信息,但它更侧重于放大某些未被显著强调的方向

  3. 意义: Δ W q \Delta W_q ΔWq并非简单复制 W q W_q Wq的主要方向,而是选择性地放大了某些在 W q W_q Wq中并不突出的特征。这种选择性放大说明,低秩适应矩阵 (如 Δ W q \Delta W_q ΔWq)可以帮助模型在下游任务中更好地利用某些关键特征而无需重新训练整个权重矩阵 。这种结构表明 Δ W q \Delta W_q ΔWq在调整过程中具有 任务相关性而不仅是随机调整

Conclusion and Future Work

就所需硬件以及为不同任务托管独立实例的存储/切换成本而言,对庞大的语言模型进行微调的成本过高。

我们提出了 LoRA,这是一种高效的自适应策略,既不会引入推理延迟,也不会减少输入序列长度,同时保持较高的模型质量。

重要的是,通过共享绝大多数模型参数,它可以在部署为服务时实现快速任务切换。

虽然我们专注于 Transformer 语言模型,但提出的原则通常适用于任何具有密集层的神经网络。 未来的工作有很多方向。

  1. LoRA 可以与其他有效的自适应方法相结合,可能提供正交改进;
  2. 微调或 LoRA 背后的机制尚不清楚------在预训练期间学习的特征如何转化为在下游任务上表现良好?我们认为,与完全微调相比,LoRA 更容易回答这个问题;
  3. 我们主要依靠启发式方法来选择应用 LoRA 的权重矩阵。有没有更原则性的方法来做到这一点?4) 最后,∆W 的秩亏表明 W 也可能是秩亏的,这也可以成为未来工作的灵感来源。

下面是几个附录的内容

A Large Language Models Still Need Parameter Updates

在这部分中,作者探讨了大型语言模型在进行任务适应时,仍然需要对参数进行更新的原因。

在此部分,作者指出尽管少量示例的"Few-Shot Learning"或"Prompt Engineering"在一些特定情境中有效,但它们的效果往往有限。

在实际应用中,对于对 性能要求敏感的应用 ,我们通常能够提供大量的训练示例,这表明完全微调(Fine-Tuning)仍然是 不可或缺的,因为其显著提升了模型在不同任务上的表现。这一部分的关键论点在于,即使是GPT-3这样的超大模型,通过完全微调而非Few-Shot学习,可以在诸如RTE(Recognizing Textual Entailment)和MNLI(Multi-Genre Natural Language Inference)等任务上获得更好的准确率。

  1. Few-Shot Learning的局限性: Few-Shot Learning即通过非常少的示例(通常为少于10个的训练样本)进行学习,但其效果取决于任务和数据量的限制。论文指出,对于性能要求高的实际应用场景,完全微调能够带来更优的效果。在原文中,作者明确指出了Few-Shot和Fine-Tuning的性能差异:

"Few-shot learning, or prompt engineering, is very advantageous when we only have a handful of training samples. However, in practice, we can often afford to curate a few thousand or more training examples for performance-sensitive applications. As shown in Table 8, fine-tuning improves the model performance drastically compared to few-shot learning on datasets large and small." 当我们只有少量训练样本时,少样本学习或提示工程非常有利。然而,在实际应用中,对于对性能敏感的应用,我们通常可以收集数千个或更多的训练样本。正如表 8 所示,与少样本学习相比,微调在大小数据集上都能显著提升模型性能。

  1. 完全微调的效果显著优于Few-Shot: 通过表格的方式,作者比较了GPT-3在不同数据集上的Few-Shot和Fine-Tuning性能。表8显示了Fine-Tuning在MNLI-matched和RTE上的显著提升,在Few-Shot学习只能达到40.6%的MNLI-matched准确率和69.0%的RTE准确率,而通过Fine-Tuning,这两个数值分别上升至89.5%和85.4%。
  2. GPT-3的Few-Shot学习的表现限制: 作者使用GPT-3模型的Few-Shot实验作为实例,说明Few-Shot学习在小数据集上表现较好,但大数据集上表现不佳。因此,对于大量数据的任务,参数更新(即微调)在许多场景下仍然是必要的。

B Inference Latency Introduced by Adapter Layers

Inference Latency Introduced by Adapter Layers:适配器层引入的推理延迟

作者探讨了适配器层(adapter layers)如何增加模型推理的延迟,并将其与LoRA(Low-Rank Adaptation)方法进行了对比。


适配器层是一种向预训练模型中添加外部模块的方法,这些模块以 顺序(sequential) 的方式插入到模型中。

这与LoRA有所不同,因为LoRA可以被视为并行添加的外部模块。

由于适配器层 在推理过程中必须 按照顺序计算,这不可避免地会增加额外的延迟。

尽管当批次大小和序列长度足够大时,可以通过硬件并行性来缓解延迟问题,但在一些情景中,比如批次大小较小的在线推理,延迟问题仍可能显著。

主要观点和分析:

  1. 适配器层带来的延迟问题 : 适配器层是以顺序方式添加到预训练模型的外部模块,而我们提出的 LoRA 可以视为以并行方式添加的外部模块。因此,适配器层必须在基础模型之外进行计算,不可避免地引入了额外的延迟。
    1. 论文原文:"Adapter layers are external modules added to a pre-trained model in a sequential manner, whereas our proposal, LoRA, can be seen as external modules added in a parallel manner. Consequently, adapter layers must be computed in addition to the base model, inevitably introducing additional latency."
  2. 实验结果与适配器设计的差异 : 作者使用了两种适配器设计------Houlsby等人(2019)提出的设计(称为AdapterH^HH)和Lin等人(2020)提出的更高效的变体(称为 A d a p t e r L Adapter^L AdapterL)------来测量在不同批次大小和序列长度下的延迟。结果如图5所示,延迟因适配器设计和输入设置的不同而有所变化。
  3. 延迟分析与图5的解释 : 图5展示了不同批次大小和序列长度下,适配器层( A d a p t e r H Adapter^H AdapterH和 A d a p t e r L Adapter^L AdapterL)相对于没有适配器时的延迟百分比增加。延迟随着批次大小的增大而减小,但在小批次和较短序列长度的场景中,延迟增加的幅度较大。例如,在批次大小为1且序列长度为128时,延迟可能高达30%以上。该图提供了详细的延迟数据以便更好地理解延迟随参数变化的趋势。
    1. 论文原文: "We measure the latency of a single forward pass on an NVIDIA Quadro RTX8000 by averaging over 100 trials. We vary the input batch size, sequence length, and the adapter bottleneck dimension r. We plot the slow-down in percentage compared to the no-adapter baseline in Figure 5." 我们通过对 100 次试验取平均值来测量在 NVIDIA Quadro RTX8000 上单次前向传播的延迟。我们改变输入的批量大小、序列长度和适配器瓶颈维度 r r r。我们在图 5 中绘制了相对于无适配器基线的延迟百分比减速。

通过这些实验,作者说明了适配器层设计虽然能够提供参数的有效适应,但在推理时可能带来显著延迟,而LoRA在推理上更具优势,因为它不引入额外的延迟。

C Dataset Details

这一部分描述了用于训练和评估LoRA模型的数据集,涵盖了多种自然语言理解(NLU)和自然语言生成(NLG)任务。

作者特别强调了广泛应用于NLU模型评估的GLUE基准,此外还包括WikiSQL、SAMSum、E2E NLG、DART和WebNLG数据集。

每个数据集的任务、数据量、编码格式以及使用的许可类型也都一一列出,以便于更好地理解它们在LoRA训练过程中的作用和限制。

详细讲解和分析:

在C Dataset Details部分,论文将每个数据集的特点和用途进行了详细的描述。

以下是对这些数据集的逐一介绍:

  1. GLUE Benchmark
    • 概述:GLUE基准数据集用于自然语言理解任务的评估,包括MNLI(文本推理)、SST-2(情感分析)、MRPC(文本重复检测)、CoLA(语法判断)、QNLI(问题与答案匹配)、QQP(问题匹配)、RTE(推理)和STS-B(文本相似度)等子任务。
    • 论文原文"GLUE Benchmark is a wide-ranging collection of natural language understanding tasks. It includes MNLI (inference, Williams et al. (2018)), SST-2 (sentiment analysis, Socher et al. (2013)), MRPC (paraphrase detection, Dolan & Brockett (2005)), CoLA (linguistic acceptability, Warstadt et al. (2018)), QNLI (inference, Rajpurkar et al. (2018)), QQP (question-answering), RTE (inference), and STS-B (textual similarity, Cer et al. (2017))."
  2. WikiSQL
    • 概述:WikiSQL是一个生成SQL查询的任务数据集,包含了自然语言问题及其对应的表模式和SQL查询。任务目标是从自然语言生成SQL语句。
    • 论文原文"WikiSQL is introduced in Zhong et al. (2017) and contains 56,355/8,421 training/validation examples. The task is to generate SQL queries from natural language questions and table schemata."
  3. SAMSum
    • 概述:SAMSum数据集包含聊天摘要任务,通过对话生成简要摘要,适用于摘要生成任务。
    • 论文原文"SAMSum is introduced in Gliwa et al. (2019) and contains 14,732/819 training/test examples. It consists of staged chat conversations between two people and corresponding abstractive summaries written by linguists."
  4. E2E NLG Challenge
    • 概述:E2E NLG Challenge数据集专用于数据到文本生成任务,尤其是餐馆领域的数据。每条数据由槽位值对及对应的自然语言文本组成。
    • 论文原文"E2E NLG Challenge was first introduced in Novikova et al. (2017) as a dataset for training end-to-end, data-driven natural language generation systems and is commonly used for data-to-text evaluation."
  5. DART
    • 概述:DART数据集包含开域数据到文本的任务,其中输入数据结构化为三元组,适合于更复杂的数据到文本生成任务。
    • 论文原文"DART is an open-domain data-to-text dataset described in Nan et al. (2020). DART inputs are structured as sequences of ENTITY --- RELATION --- ENTITY triples."
  6. WebNLG
    • 概述:WebNLG数据集用于多领域数据到文本生成,包含不同类别的数据。训练集和测试集中包含了训练和未训练过的类别,适用于跨领域生成任务的研究。
    • 论文原文"WebNLG is another commonly used dataset for data-to-text evaluation (Gardent et al., 2017). With 22K examples in total WebNLG comprises 14 distinct categories, nine of which are seen during training."

总结:

C Dataset Details部分为LoRA模型在各种自然语言任务中提供了详细的数据集背景和用途说明。每个数据集的不同任务类型和特定结构,为LoRA模型在不同任务中的适应性提供了坚实的基础。通过这些描述,作者希望为读者提供对LoRA模型在不同数据集上应用的全面理解。

D Hyperparameters Used in Experiments

这部分系统性地介绍了在实验过程中使用的各项超参数,包括适用于不同模型(如RoBERTa、DeBERTa、GPT-2和GPT-3)的训练配置。

每个子节详细列出了模型的超参数设置,如学习率、批量大小、最大序列长度、衰减率、梯度优化方法等。

通过这些超参数的调节,作者希望优化不同任务中的LoRA适应性表现,以实现参数效率和模型性能的平衡。

详细讲解和分析:

以下是对各模型超参数设置的逐项讲解和关键观点:

  1. RoBERTa
    • 配置 :RoBERTa模型在实验中使用 AdamW优化器和线性学习率衰减策略 。超参数包括学习率、训练轮次、批量大小等。为了提高LoRA的表现,作者对GLUE基准上的多个任务进行超参数调优,并限制模型序列长度为128
    • 论文原文"We train using AdamW with a linear learning rate decay schedule. We sweep learning rate, number of training epochs, and batch size for LoRA. Following Liu et al. (2019), we initialize the LoRA modules to our best MNLI checkpoint when adapting to MRPC, RTE, and STS-B, instead of the usual initialization; the pre-trained model stays frozen for all tasks."
  2. DeBERTa
    • 配置:类似于RoBERTa,DeBERTa使用AdamW优化器和线性学习率衰减,并调优了学习率、丢弃概率、预热步骤和批量大小。与He等人的研究一致,作者将LoRA模块初始化到MNLI任务的最佳检查点,以实现更高的适应性。
    • 论文原文"We again train using AdamW with a linear learning rate decay schedule. Following He et al. (2021), we tune learning rate, dropout probability, warm-up steps, and batch size."
  3. GPT-2
    • 配置:GPT-2模型的训练使用AdamW优化器,采用线性学习率衰减,训练轮次为5轮。作者基于Li和Liang的方法设置批量大小、学习率和束搜索大小,并对这些超参数进行了调优。
    • 论文原文"We train all of our GPT-2 models using AdamW (Loshchilov & Hutter, 2017) with a linear learning rate schedule for 5 epochs. We use the batch size, learning rate, and beam search beam size described in Li & Liang (2021)."
  4. GPT-3
    • 配置:GPT-3实验中使用AdamW优化器,训练轮次为2,批量大小为128,权重衰减系数为0.1,序列长度限制为384。此配置旨在在确保高效训练的前提下保持GPT-3性能的稳定性。
    • 论文原文"For all GPT-3 experiments, we train using AdamW (Loshchilov & Hutter, 2017) for 2 epochs with a batch size of 128 samples and a weight decay factor of 0.1."

这部分详细阐述了各模型的超参数设置及其在不同任务中的具体配置。这些超参数设置对于提升LoRA在自然语言处理任务中的适应性和效率至关重要,同时确保了在多任务训练环境下的性能稳定性。通过详细调优这些超参数,作者验证了LoRA方法在多模型、多任务场景下的适应性和效果。

E Combining LoRA with Prefix Tuning

Combining LoRA with Prefix Tuning:将 LoRA 与前缀优化相结合

这部分描述了LoRA和前缀调整(prefix tuning)结合的两种方式。

这些组合方法的目的是探索如何更高效地使用LoRA来提高模型在特定任务中的表现。

具体来说,这部分内容测试了LoRA与两种前缀调整变体的结合效果,分别是LoRA+PrefixEmbed (LoRA+PE) 和 LoRA+PrefixLayer (LoRA+PL)。通过这些组合方法,作者对比了单独使用LoRA和前缀调整与组合方式的优劣势。

详细讲解和分析:

  1. LoRA+PrefixEmbed (LoRA+PE)
    • 配置和方法 :LoRA+PE方法将LoRA和 前缀嵌入 调整结合,插入了多个特殊token,这些token的嵌入被视为可训练参数。通过这样的方法,前缀嵌入调整可以在训练过程中不断调整这些token的嵌入表示。
    • 论文原文"LoRA+PrefixEmbed (LoRA+PE) combines LoRA with prefix-embedding tuning, where we insert lp + li special tokens whose embeddings are treated as trainable parameters."
  2. LoRA+PrefixLayer (LoRA+PL)
    • 配置和方法 :LoRA+PL方法将LoRA和 前缀层调整结合,同样插入了特殊token。然而,在每个Transformer层中, 使用了输入无关的向量来替代这些token的隐藏表示。这种方法意味着不仅嵌入是可训练的,后续Transformer层的激活也是可训练的。
    • 论文原文"LoRA+PrefixLayer (LoRA+PL) combines LoRA with prefix-layer tuning. We also insert lp + li special tokens; however, instead of letting the hidden representations of these tokens evolve naturally, we replace them after every Transformer block with an input agnostic vector."
  3. 实验结果和性能分析
    • WikiSQL任务:在WikiSQL任务上,LoRA+PE显著优于单独使用LoRA和前缀嵌入调整,这表明LoRA和前缀嵌入调整在一定程度上是互补的。
    • MNLI任务:在MNLI任务中,LoRA+PE的性能未超过单独使用LoRA。这可能是因为LoRA单独使用时已经能够达到接近人类水平的表现。
    • LoRA+PL的表现:在多项任务中,LoRA+PL的表现略逊于单独的LoRA,即使它具有更多的可训练参数。作者将此归因于前缀层调整对学习率的敏感性,这增加了优化LoRA权重的难度。
    • 论文原文
      • "First of all, LoRA+PE significantly outperforms both LoRA and prefix-embedding tuning on WikiSQL, which indicates that LoRA is somewhat orthogonal to prefix-embedding tuning."
      • "On MultiNLI, the combination of LoRA+PE doesn't perform better than LoRA, possibly because LoRA on its own already achieves performance comparable to the human baseline."
      • "Secondly, we notice that LoRA+PL performs slightly worse than LoRA even with more trainable parameters."

总结:

结合前缀调整与LoRA可以带来一定的性能提升,特别是在特定的任务上如WikiSQL中。

然而,由于前缀层调整对学习率的敏感性,LoRA+PL的性能在某些任务中不如单独使用LoRA。

此研究为未来在低参数适应性方案上的多种组合方法提供了理论支持和实验依据。

F Additional Empirical Experiments

这部分进一步测试了LoRA在GPT-2和GPT-3模型上的表现。

通过在DART和WebNLG等生成任务上应用LoRA,并与其他调优方法(例如Prefix Tuning和Adapter Layers)对比,展示了LoRA在相似参数量下的优越性。

此外,该部分还考察了低数据环境下不同方法的表现,以评估在有限数据时LoRA的有效性。


详细讲解和分析:

  1. GPT-2上的额外实验
    • 任务和方法:作者在DART和WebNLG任务上对比了不同适应性调优方法。结果表明,与PrefixLayer和AdapterL方法相比,LoRA在生成任务上表现更为优异。例如,在DART任务中,LoRA在参数量为0.35M时的BLEU分数为47.1,优于PrefixLayer(46.4)和AdapterL(45.2)。
    • 论文原文"Similar to our result on E2E NLG Challenge, reported in Section 5, LoRA performs better than or at least on-par with prefix-based approaches given the same number of trainable parameters."
  2. GPT-3上的额外实验
    • 任务和方法:作者使用GPT-3模型在WikiSQL和MNLI数据集上验证了LoRA的适应性。在相同参数限制下,LoRA方法获得了较高的准确率。例如,LoRA在WikiSQL上的验证准确率达到了73.4%,而PrefixEmbed则为63.1%。
    • 论文原文"We present additional runs on GPT-3 with different adaptation methods in Table 15. The focus is on identifying the trade-off between performance and the number of trainable parameters."
  3. 低数据环境实验
    • 设置和结果:为了评估LoRA在低数据环境下的有效性,作者在MNLI任务上分别使用了100、1k和10k的训练样本量进行实验。结果表明,在数据量较小时,LoRA的表现优于Prefix-based方法。在MNLI-100任务上,LoRA的准确率为63.8%,而PrefixEmbed的表现仅略高于随机猜测(37.6%)。
    • 论文原文"PrefixEmbed and PrefixLayer performs very poorly on MNLI-100 dataset, with PrefixEmbed performing only slightly better than random chance (37.6% vs. 33.3%). PrefixLayer performs better than PrefixEmbed but is still significantly worse than Fine-Tune or LoRA on MNLI-100."

总结:

F Additional Empirical Experiments部分的实验结果表明,LoRA在不同模型和任务环境中都表现出了出色的适应性,尤其是在低数据环境和生成任务中。

相比于其他调优方法,LoRA不仅在相似参数量下提供了更优的性能,还展示出其在数据不足情况下的适应能力,为未来的低资源场景应用提供了有力支持。

G Measuring Similarity Between Subspaces

G Measuring Similarity Between Subspaces:测量子空间的相似性

这一块主要定义了一个用于 度量两个低秩矩阵子空间相似性 的方法。

作者使用一种子空间相似性度量 ϕ ( A , B , i , j ) \phi(A, B, i, j) ϕ(A,B,i,j),计算两个列正交矩阵 U A i U_A^i UAi和 U B j U_B^j UBj的相似度。

这个度量基于Grassmann流形的投影度量,与传统的投影度量在方向上相反。

子空间相似性度量定义为: ϕ ( A , B , i , j ) = ψ ( U A i , U B j ) = ∣ ∣ U A i T U B j ∣ ∣ F 2 min ⁡ { i , j } \phi(A, B, i, j) = \psi(U_A^i, U_B^j) = \frac{||{U_A^i}^T U_B^j||_F^2}{\min\{i, j\}} ϕ(A,B,i,j)=ψ(UAi,UBj)=min{i,j}∣∣UAiTUBj∣∣F2

其中:

  • U A i ∈ R d × i U_A^i \in \mathbb{R}^{d \times i} UAi∈Rd×i和 U B j ∈ R d × j U_B^j \in \mathbb{R}^{d \times j} UBj∈Rd×j是矩阵 A A A和 B B B的左奇异矩阵的前 i i i和 j j j列;
  • ψ ( U A i , U B j ) \psi(U_A^i, U_B^j) ψ(UAi,UBj)反映了两个子空间之间的相似度,其值在0到1之间,1表示完全相似,0表示完全不同;
  • 这个相似性度量是标准投影度量的反转形式,后者用于在Grassmann流形上测量子空间之间的距离。

这一部分通过定义一个 投影相似性度量,为分析LoRA低秩矩阵子空间相似性提供了一个工具。


对于这个表格,LoRA实验中不同调优方法的超参数分析:

表格 15 展示了不同适应方法(包括PrefixEmbed、PrefixLayer、Adapter、LoRA、LoRA+PE、LoRA+PL)在WikiSQL和MNLI基准上的性能对比。

每种方法在超参数(如可训练参数数量)和不同任务的验证准确率上都有不同的表现,具体分析如下:

  1. PrefixEmbed :
    • 配置和性能 :随着可训练参数 l p l_p lp和 l i l_i li的增大(即前缀token的数量增加),PrefixEmbed方法在WikiSQL和MNLI上的性能表现有所提升,但在参数大幅增加后,性能开始下降。对于最大配置( l p = 512 , l i = 8 l_p=512, l_i=8 lp=512,li=8),WikiSQL和MNLI的准确率分别达到 63.1 % 63.1\% 63.1%和 85.2 % 85.2\% 85.2%。
  2. PrefixLayer :
    • 配置和性能 :PrefixLayer方法比PrefixEmbed有更多的可训练参数,且性能稳定在较高水平。最高配置( l p = 64 , l i = 0 l_p=64, l_i=0 lp=64,li=0)对应的WikiSQL准确率为 64.9 % 64.9\% 64.9%,MNLI为 87.9 % 87.9\% 87.9%。
  3. Adapter :
    • 配置和性能 :Adapter方法在不同秩 r r r下的性能变化较大。当 r = 64 r=64 r=64时,可训练参数数达到 304.4 M 304.4M 304.4M,WikiSQL的准确率为 72.6 % 72.6\% 72.6%,MNLI的准确率为 91.5 % 91.5\% 91.5%。
  4. LoRA :
    • 配置和性能 :LoRA在不同配置下表现较稳定。即使在较小的可训练参数下(如 r q = r v = 2 r_q=r_v=2 rq=rv=2,参数数为 4.7 M 4.7M 4.7M),LoRA的WikiSQL准确率达到 73.4 % 73.4\% 73.4%,MNLI为 91.7 % 91.7\% 91.7%。随着参数数增大到 301.9 M 301.9M 301.9M( r q = r k = r v = r o = 64 r_q=r_k=r_v=r_o=64 rq=rk=rv=ro=64),其性能保持在高水平。
  5. LoRA+PE 和 LoRA+PL :
    • 配置和性能 :在LoRA和PrefixEmbed或PrefixLayer组合的设置下,LoRA+PE的最高性能出现在 r q = r v = 64 , l p = 8 , l i = 4 r_q=r_v=64, l_p=8, l_i=4 rq=rv=64,lp=8,li=4,对应的WikiSQL准确率为 76.2 % 76.2\% 76.2%,MNLI为 91.6 % 91.6\% 91.6%。LoRA+PL的最大配置( r q = r v = 8 , l p = 8 , l i = 4 r_q=r_v=8, l_p=8, l_i=4 rq=rv=8,lp=8,li=4)则提供了更均衡的表现。

小结:

从表格15可以看出,LoRA在不同配置下表现稳定,且在一定范围内可以随着参数数的增加而提高性能。

然而,PrefixEmbed和PrefixLayer在参数增加到一定程度后会出现性能下降,LoRA+PE组合提供了更好的性能表现


表格 16 ,不同方法在GPT-3上的MNLI子集验证准确率:

表格 16 展示了不同方法在GPT-3 175B模型上对MNLI数据集不同大小子集的验证准确率。MNLI(m)-100、MNLI(m)-1k、MNLI(m)-10k和MNLI(m)-392K分别代表不同数量的训练样本子集。

通过该表,作者展示了LoRA相较于其他方法在样本效率上的优势。


  1. GPT-3 (Fine-Tune) :
    • 性能 :在MNLI(m)-100数据集上,Fine-Tune方法的验证准确率为 60.2 % 60.2\% 60.2%,在MNLI(m)-1k上提升到 85.8 % 85.8\% 85.8%,并在MNLI(m)-392K上达到 89.5 % 89.5\% 89.5%。尽管Fine-Tune方法在大数据集上表现出色,但在小样本(MNLI(m)-100)上效果不佳。
  2. GPT-3 (PrefixEmbed) :
    • 性能 :PrefixEmbed在小样本集MNLI(m)-100上表现较差,验证准确率仅为 37.6 % 37.6\% 37.6%。随着样本量增加到MNLI(m)-392K,准确率上升至 88.6 % 88.6\% 88.6%。该方法在样本效率上较弱。
  3. GPT-3 (PrefixLayer) :
    • 性能 :PrefixLayer方法在MNLI(m)-100上的准确率为 48.3 % 48.3\% 48.3%,在MNLI(m)-392K上提升至 89.6 % 89.6\% 89.6%。该方法在样本效率上略优于PrefixEmbed,但仍不如LoRA。
  4. GPT-3 (LoRA) :
    • 性能 :LoRA方法在MNLI(m)-100数据集上的准确率达到 63.8 % 63.8\% 63.8%,显著优于其他方法。随着数据集规模增加,LoRA在MNLI(m)-1k、MNLI(m)-10k和MNLI(m)-392K上分别达到 85.6 % 85.6\% 85.6%、 89.2 % 89.2\% 89.2%和 91.7 % 91.7\% 91.7%。这表明LoRA在小数据集上具有较高的样本效率,并且在大数据集上保持较高的性能。

小结:

从表格16可以看出,LoRA在小样本设置(如MNLI(m)-100)中展示了显著的优势,验证了其高效的样本利用率。

相较于Fine-Tune、PrefixEmbed和PrefixLayer方法,LoRA在不同规模的数据集上 均保持了较高的性能

这说明LoRA不仅适用于大数据集,在小数据集下也表现出色。


表格17:

表格 17 列出了在MNLI数据集子集(MNLI-100、MNLI-1k、MNLI-10k、MNLI-392K)上针对不同GPT-3适应方法(如FineTune、PrefixEmbed、PrefixLayer、LoRA)的 超参数设定

主要超参数包括优化器(AdamW)、学习率调度、批量大小、学习率和方法特定的参数(如 l p l_p lp、 l i l_i li和 LoRA 的 r q = r v = 8 r_q=r_v=8 rq=rv=8)。


投影度量公式与子空间相似性定义:

投影度量定义

  1. 为了量化两个子空间的相似性,首先定义了投影度量 d ( U A i , U B j ) d(U_A^i, U_B^j) d(UAi,UBj)。
  2. 假设矩阵 U A i U B j U_A^i U_B^j UAiUBj的奇异值为 σ 1 , σ 2 , ... , σ p \sigma_1, \sigma_2, \dots, \sigma_p σ1,σ2,...,σp,其中 p = min ⁡ { i , j } p = \min\{i, j\} p=min{i,j},投影度量公式为: d ( U A i , U B j ) = p − ∑ i = 1 p σ i 2 ∈ [ 0 , p ] d(U_A^i, U_B^j) = \sqrt{p - \sum_{i=1}^p \sigma_i^2} \in [0, \sqrt{p}] d(UAi,UBj)=p−∑i=1pσi2 ∈[0,p ]
  3. 这个公式反映了两个子空间之间的距离,其中较大的 d d d值表示较大的子空间差异。

子空间相似性定义

  1. 基于投影度量 d ( U A i , U B j ) d(U_A^i, U_B^j) d(UAi,UBj),子空间相似性 ϕ ( A , B , i , j ) \phi(A, B, i, j) ϕ(A,B,i,j)被定义为 ϕ ( A , B , i , j ) \phi(A, B, i, j) ϕ(A,B,i,j)
  2. 公式: ϕ ( A , B , i , j ) = ψ ( U A i , U B j ) = ∑ i = 1 p σ i 2 p = 1 p ( 1 − ( d ( U A i , U B j ) ) 2 ) \phi(A, B, i, j) = \psi(U_A^i, U_B^j) = \frac{\sum_{i=1}^p \sigma_i^2}{p} = \frac{1}{p} \left( 1 - (d(U_A^i, U_B^j))^2 \right) ϕ(A,B,i,j)=ψ(UAi,UBj)=p∑i=1pσi2=p1(1−(d(UAi,UBj))2)
  3. 该定义确保了当 U A i U_A^i UAi和 U B j U_B^j UBj拥有 相同的列空间 时, ϕ ( A , B , i , j ) = 1 \phi(A, B, i, j) = 1 ϕ(A,B,i,j)=1;
    • 如果它们 完全正交 ,则 ϕ ( A , B , i , j ) = 0 \phi(A, B, i, j) = 0 ϕ(A,B,i,j)=0。否则, ϕ ( A , B , i , j ) \phi(A, B, i, j) ϕ(A,B,i,j)的值在 ( 0 , 1 ) (0, 1) (0,1)之间 。

H Additional Experiments on Low-Rank Matrices

附录 H 低秩矩阵的其他实验

其余不看了,单独看一下H.4 Amplification Factor扩增因子。

直观地说,当主要包含特定于任务的方向时 ΔW ,这个量衡量的是其中有多少被放大了 ΔW

相关推荐
袁庭新18 分钟前
安装luasocket模块时提示“sudo: luarocks:找不到命令“问题,该如何解决?
java·人工智能·ai·aigc·lua·luarocks·袁庭新
说私域4 小时前
私域流量圈层在新消费时代的机遇与挑战:兼论开源 AI 智能名片、2 + 1 链动模式、S2B2C 商城小程序的应用
人工智能·小程序
小森( ﹡ˆoˆ﹡ )4 小时前
词嵌入方法(Word Embedding)
人工智能·机器学习·自然语言处理·nlp·word·embedding
凡人的AI工具箱7 小时前
15分钟学 Go 第 49 天 :复杂项目开发
开发语言·人工智能·后端·算法·golang
YRr YRr7 小时前
ubuntu20.04 解决Pytorch默认安装CPU版本的问题
人工智能·pytorch·python
UQI-LIUWJ7 小时前
论文笔记:TravelPlanner: A Benchmark for Real-World Planning with Language Agents
人工智能
Matrix_117 小时前
论文阅读:DualDn Dual-domain Denoising via Differentiable ISP
论文阅读·人工智能·计算摄影
小嗷犬7 小时前
【论文笔记】The Power of Scale for Parameter-Efficient Prompt Tuning
论文阅读·人工智能·大模型·微调·prompt
OAK中国_官方7 小时前
OAK相机:纯视觉SLAM在夜晚的应用
人工智能·机器学习·slam
kejijianwen7 小时前
F5全新报告揭示AI时代API安全面临严峻挑战
人工智能·安全