VERA:基于向量的随机矩阵自适应
paper是阿姆斯特丹大学发表在ICLR 2024的工作
paper title:VERA: VECTOR-BASED RANDOM MATRIX ADAPTATION
ABSTRACT
低秩自适应 (LoRA) 是一种流行的方法,可在微调大型语言模型时减少可训练参数的数量,但在扩展到更大的模型或部署大量按用户或按任务自适应的模型时,仍然面临严峻的存储挑战。在这项工作中,我们提出了基于向量的随机矩阵自适应 (VeRA),与 LoRA 相比,它显著减少了可训练参数的数量,但保持了相同的性能。它通过使用在所有层之间共享的一对低秩矩阵并学习小缩放向量来实现这一点。我们在 GLUE 和 E2E 基准、图像分类任务上证明了它的有效性,并展示了它在 7B 和 13B 语言模型的指令调整中的应用。
1 INTRODUCTION
在语言模型越来越庞大和复杂的时代,高效适应特定任务的挑战变得比以往任何时候都更加重要。虽然这些模型提供了强大的功能,但它们对内存的大量需求构成了重大瓶颈,尤其是在将其调整为个性化使用时。例如,考虑一个基于云的操作系统助手,它不断学习并适应个人用户的行为和反馈。需要为每个用户存储多个微调模型检查点,这迅速增加了所需的存储空间,当多个任务发挥作用时更是如此。 当我们看看 GPT-4(OpenAI,2023)等最先进的模型时,这种情况进一步加剧。像 LoRA(Hu 等人,2022)这样的微调技术虽然有效,但仍会带来相当大的内存开销。举个例子,将秩为 16 的 LoRA 应用于 GPT-3 的查询和值层(Brown 等人,2020 年)将需要至少 288MB 的内存,如果以单精度存储——一百万个微调权重,例如每个用户一个,将达到 275TB。 鉴于最近语言模型的激增及其在个性化助手、边缘设备和类似应用中的部署,有效的适应方法至关重要。我们相信,更有效的方法还有尚未开发的潜力。先前的研究(Aghajanyan 等人,2021 年)指出了预训练模型特征的固有维度较低。这些研究报告的数字远低于 LoRA 中使用的可训练参数,表明还有改进的空间。 与此同时,最近的研究表明,利用随机权重和投影的模型具有令人惊讶的有效性(Peng 等人,2021 年;Ramanujan 等人,2020 年;Lu 等人,2022 年;Schrimpf 等人,2021 年;Frankle 等人,2021 年)。此类模型是我们提出的解决方案——基于向量的随机矩阵自适应 (VeRA) 的基础,该解决方案通过重新参数化权重矩阵来最大限度地减少微调过程中引入的可训练参数数量。具体来说,我们使用“缩放向量”来调整层间共享的一对冻结随机矩阵。通过这种方法,单个 GPU 的有限内存中可以驻留更多版本的模型。
综上所述,我们的主要贡献如下:
- 我们引入了一种新颖的微调方法,无需额外的推理时间成本。与最先进的 LoRA 方法相比,我们的方法进一步减少了可训练参数的数量,同时获得了可比的结果。
- 我们在自然语言理解 (GLUE) 和自然语言生成 (E2E) 基准上将我们的方法与 LoRA 和其他参数高效的自适应方法进行了比较,并在指令跟踪和图像分类任务上与 LoRA 进行了比较。
- 我们进行了一项消融研究,以更好地了解我们方法的各个组成部分及其对性能的影响。
2 RELATED WORK
低秩自适应 (LoRA)。LoRA 为大型预训练语言模型微调所带来的计算挑战提供了一种创新的解决方案。该方法由 Hu 等人 (2022) 提出,采用低秩矩阵来近似微调期间的权重变化,从而有效减少了需要训练的参数数量。LoRA 的优势之一是,它通过减少大多数参数的梯度计算和优化器状态维护的需求,显著降低了微调的硬件门槛。它还可以与量化模型权重一起使用 (Dettmers 等人,2023),从而进一步降低了要求。此外,LoRA 模块易于交换,使任务切换高效且资源密集度更低。重要的是,与基于适配器的微调方法(Houlsby 等人,2019 年;Lin 等人,2020 年;Pfeiffer 等人,2021 年;Ruckl ¨ e 等人,2021 年)不同,LoRA 在部署时不会产生额外的推理时间成本,因为可训练矩阵可以与冻结权重合并。 基于此,AdaLoRA(Zhang 等人,2023b)扩展了 LoRA 方法,在微调过程中引入了低秩矩阵的动态秩调整。核心思想是通过基于重要性度量选择性地修剪矩阵中不太重要的成分来最佳地分配参数预算。
现有方法中的参数效率虽然 LoRA 等方法在微调性能方面已显示出显着的改进,但它们仍然需要大量可训练参数。根据 Aghajanyan 等人 (2021) 的研究,内在维度的上限比此类方法中通常使用的上限小得多。例如,据报道 RoBERTabase 的 d 90 d_{90} d90为 896,而 LoRA 论文的作者报告称该模型使用了 0.3M 个可训练参数,这表明参数数量可以进一步减少。 虽然 AdaLoRA 通过将参数动态分配给更关键的层朝这个方向迈出了一步,但我们认为不同的方法可以实现显着的参数减少,同时容忍边际性能下降。这为我们在下一节中介绍的方法奠定了基础。
随机模型和投影。使用随机矩阵和投影来提高模型效率的概念得到了多项研究的支持。Frankle & Carbin (2019) 发现,随机初始化的神经网络包含经过训练后能够达到高性能的子网络。同时,Ramanujan 等人 (2020) 发现,存在一些子网络,即使在没有训练的情况下也能取得令人印象深刻的结果。Aghajanyan 等人 (2021) 表明,仅训练少量参数,随机投影回完整空间,就可以实现 90% 的全参数模型性能。Ruiz 等人 (2023) 利用 LoRA 内部的随机冻结矩阵,引入了一种参数高效的微调方法,用于个性化文本到图像模型。其他研究(Lu 等人,2022 年;Schrimpf 等人,2021 年;Frankle 等人,2021 年)表明,冻结的、随机初始化的模型,加上经过微调的小部分,可以表现得出奇的好。
总的来说,这些工作为在微调方法中使用冻结随机矩阵提供了令人信服的案例,为本文采用的方法提供了理论和经验基础。
图1:LoRA(左)和VeRA(右)的示意性比较。LoRA通过训练低秩矩阵 A A A 和 B B B 来更新权重矩阵 W W W,其中中间秩为 r r r。在 VeRA 中,这些矩阵是冻结的,并在所有层之间共享,同时使用可训练的向量 d d d 和 b b b 进行适配,从而显著减少了可训练参数的数量。在这两种情况下,低秩矩阵和向量都可以合并到原始权重矩阵 W W W 中,不会引入额外的延迟。
3 METHOD
在本节中,我们将介绍基于向量的随机矩阵自适应,这是一种新颖的参数高效微调方法,它建立在最先进的方法 LoRA 的基础上并对其进行了扩展。VeRA 的核心创新在于低秩矩阵的重新参数化。具体来说,我们冻结一对随机初始化的矩阵,并在所有适配层之间共享,并引入可训练的缩放向量,以实现逐层自适应,如图 1 所示。与 LoRA 类似,经过训练的缩放向量以及低秩矩阵可以合并到原始权重中,从而消除额外的推理延迟。
3.1 METHOD FORMULATION
LoRA (Hu et al., 2022) 通过微调两个低秩矩阵的乘积来使大语言模型适应新任务。形式上,对于一个预训练权重矩阵 W 0 ∈ R m × n W_0 \in \mathbb{R}^{m \times n} W0∈Rm×n,权重更新 Δ W \Delta W ΔW 被限制在一个低秩分解中,如公式 (1) 所示:
h = W 0 x + Δ W x = W 0 x + B A ‾ x , h = W_0 x + \Delta W x = W_0 x + \underline{B A} x, h=W0x+ΔWx=W0x+BAx,
其中我们用下划线标记通过梯度下降更新的参数。这种近似允许模型冻结原始权重 W 0 W_0 W0,仅优化新的低秩矩阵 A A A 和 B B B。由于其低秩性质,这些矩阵的大小远小于原始矩阵。具体来说, A A A 的形状为 m × r m \times r m×r, B B B 的形状为 r × n r \times n r×n,其中 r ≪ min ( m , n ) r \ll \min(m, n) r≪min(m,n) 作为瓶颈维度。
相比之下,我们的方法 VeRA 的公式如下:
h = W 0 x + Δ W x = W 0 x + Λ b ‾ B Λ d ‾ A x , h = W_0 x + \Delta W x = W_0 x + \underline{\Lambda_b} B \underline{\Lambda_d} A x, h=W0x+ΔWx=W0x+ΛbBΛdAx,
在这种方法中, B B B 和 A A A 是冻结的、随机的,并且在各层之间共享,而缩放向量 b b b 和 d d d 是可训练的,并形式上表示为对角矩阵 Λ b \Lambda_b Λb 和 Λ d \Lambda_d Λd。这种方法可以有效地对 A A A 和 B B B 的行和列进行缩放和禁用,从而允许通过极少量的可训练参数实现逐层适配。需要注意的是,在这种设置下, B ∈ R m × r B \in \mathbb{R}^{m \times r} B∈Rm×r 和 A ∈ R r × n A \in \mathbb{R}^{r \times n} A∈Rr×n 不需要是低秩的。这是因为它们保持静态状态,我们不需要存储它们的具体值。此外,调整 r r r 会通过 d ∈ R 1 × r d \in \mathbb{R}^{1 \times r} d∈R1×r 线性增加可训练参数的数量。
3.2 PARAMETER COUNT
表 1:用于存储训练后 VeRA 和 LoRA 权重的理论内存需求,针对 RoBERTa base { }_{\text {base }} base 、RoBERTa large { }_{\text {large }} large 和 GPT-3 模型。我们假设 LoRA 和 VeRA 方法应用于每个 Transformer 块的 Query 和 Key 层。
我们使用 L tuned L_{\text {tuned }} Ltuned 表示微调的层数, d model d_{\text {model }} dmodel 表示这些层的维度。在 VeRA 中,可训练参数的数量由以下公式决定:
∣ Θ ∣ = L tuned × ( d model + r ) , |\Theta| = L_{\text {tuned }} \times \left(d_{\text {model }} + r\right), ∣Θ∣=Ltuned ×(dmodel +r),
而 LoRA 的可训练参数数量为:
∣ Θ ∣ = 2 × L tuned × d model × r . |\Theta| = 2 \times L_{\text {tuned }} \times d_{\text {model }} \times r. ∣Θ∣=2×Ltuned ×dmodel ×r.
具体而言,在最低秩情况下(即 r = 1 r=1 r=1),VeRA 所需的可训练参数约为 LoRA 的一半。此外,随着秩的增加,VeRA 的参数数量每增加一级仅需 L tuned L_{\text {tuned }} Ltuned ,相比之下,LoRA 则需要 2 L tuned d model 2 L_{\text {tuned }} d_{\text {model }} 2Ltuned dmodel ,这在处理极深且宽的模型(如 GPT-3,Brown et al., 2020,具有 96 层注意力层和隐藏大小为 12288)时,体现出了显著的参数效率。
基于这一高效性,VeRA 的主要优势在于其对存储已训练权重调整所需内存的极小占用。由于随机冻结矩阵可以通过随机数生成器(RNG)的种子重新生成,因此无需将这些矩阵存储在内存中。这大幅减少了内存需求,仅需存储训练得到的 b b b 和 d d d 向量以及一个 RNG 种子所需的字节。与 LoRA 的内存效率对比如表 1 所示。
3.3 INITIALIZATION STRATEGIES
-
共享矩阵:在我们的方法中,冻结的低秩矩阵 A A A 和 B B B 使用 Kaiming 初始化(He et al., 2015)。通过根据矩阵的维度对值进行缩放,确保了 A A A 和 B B B 的矩阵乘积在所有秩上都保持一致的方差,从而无需为每个秩微调学习率。
-
缩放向量:缩放向量 b b b 被初始化为零,这与 LoRA 中矩阵 B B B 的初始化一致,确保权重矩阵在第一次前向传播中不受影响。而缩放向量 d d d 的所有元素则初始化为一个相同的非零值,从而引入了一个新的超参数,可通过调优以提升性能。
图1展示了 VeRA 中低秩矩阵和缩放向量的初始化示例。具体而言,低秩矩阵通过正态分布初始化,而 d d d 向量初始化为全为 1 的常量。需要注意的是,我们的实验中还探索了其他初始化方法,例如对 A A A 和 B B B 使用均匀分布,以及对 d d d 使用其他非零常量。
标签:2024,训练,模型,矩阵,VERA,参数,ICLR,LoRA,向量 From: https://blog.csdn.net/wl1780852311/article/details/145108537