大模型微调技术揭秘——LoRA

背景

现有 PEFT 方法的局限与挑战

  • Adapter方法,通过增加模型深度而额外增加了模型推理延时。
  • Prompt Tuning、Prefix Tuning、P-Tuning等方法中的提示较难训练,同时缩短了模型可用的序列长度。
  • 往往难以同时实现高效率和高质量,效果通常不及完全微调(full-finetuning)。
  • 简而言之,尽管大模型参数规模巨大,但关键作用通常是由其中的低秩本质维度(low
    intrinsic dimension)发挥的。

受此启发,微软提出了低秩适配(LoRA)方法,设计了特定结构,在涉及矩阵乘法的模块
中引入两个低秩矩阵A和B,以模拟完全微调过程。这相当于只对语言模型中起关键作用
的低秩本质维度进行更新。

小模型有大智慧

根据论文《LoRA: Low-Rank Adaptation of Large Languge Models》可知,为了使微调更加高效,LoRA的方法是通过低秩分解将权重更新表示为两个较小的矩阵(称为更新矩阵)。这些新矩阵可以在适应新数据的同时保持整体变化数量较少进行训练。
原始权重矩阵保持冻结状态,并且不再接受任何进一步的调整。最终结果是通过将原始权重和适应后的权重进行组合得到。
在这里插入图片描述
上图为LoRA核心结构。由图可得LoRA采用了自下而上的结构思想。最下的x代表局部输入。中间部分的左侧为预训练模型的模型权重,Pretrained Weights,其结构为D*D的高维空间。右侧为通过多个小矩阵,如图中的矩阵A和矩阵B,模拟左侧的大矩阵并进行计算。h为模型局部的输出值,再作为输入进行传输至大模型的其它结构。

LoRA 核心技术揭秘

在LoRA方法中,实际上是在原始预训练语言模型(PLM)旁增加一个附加的网络通路,这可以视作一种“外挂”结构。这个外挂结构的目的是通过两个矩阵A和B的相乘来模拟本征秩(intrinsic rank),计算式为:
在这里插入图片描述
在这里插入图片描述
相比于原始数据量, LoRA 的每个小矩阵数据量会小很多,这样不仅可以实现减少计算资源,降低现存存储量,还可以提高模型微调的效果。
那么为什么大模型训练需要这么大的数据量呢?一方面当模型参数特别小,维度很低时,而训练的数据量比较大时,会导致欠拟合。因为当模型的复杂度较高而数据量较少时,在模型训练的过程中不支持需要训练的模型参数。

  • 整体设计:(两个小模型)输入和输出的维度均为d,这与预训练模型层的维度相同。
  • 低秩分解:A矩阵会将输入的d维数据降维至r维(增量矩阵的本征秩),r远小于d(r<< d)。矩阵计算从d x d变为d x r + r x d,减少了模型的参数量和计算量。
  • 回映射:B矩阵将这些r维数据再映射回d维,以便与预训练模型的其他部分保持兼容。

通过这样的低秩适配,LoRA能够有效地在保持预训练模型的复杂性和表达能力的同时,减少所需的计算资源,并提高微调的效率。这种结构使得只有一小部分参数(A和B矩阵)需要在特定任务上进行训练,而不是整个模型,从而提高了微调的效率和实用性。

LoRA的优势

LoRA 相比 Adapter 方法的优势

1.推理性能高效

  • 与Adapter方法相比,LoRA在推理阶段直接利用训练好的A、B低秩矩阵替换原预训练模型的对应参数,每个矩阵维度低,计算式速度快、低延时且不影响原始性能。这种替换避免了增加网络深度所带来的额外计算量和推理延时。
  • LoRA方法使得推理过程与全参数微调(Full-finetuning)相似,但并不增加额外的计算负担。保持了高效的推理性能,同时实现了对模型的有效调整。

2.模拟全参数微调的效果

  • LoRA通过对模型关键部分的低秩调整,实际上模拟了全参数微调的过程。这种方法几乎不会导致训练效果的损失,后续实验结果也证明了这一点。
    综上所述,LoRA提供了一种在保持推理效率的同时,有效微调大型预训练模型的方法,特别适用于对推理速度和模型性能都有高要求的应用场景,例如文生图。

LoRA 相比Soft Prompts方法的优势

1.更深层次的模型修改:

• LoRA通过修改模型的权重矩阵,直接影响模型的内部表示和处理机制,而不仅仅是输入层级。
• 这意味着LoRA能够在模型的更深层次上产生影响,可能导致更有效的学习和适应性。

2.无需牺牲输入空间:

• Soft prompts通常需要占用模型的输入空间,这在有限的序列长度下可能限制了其他实际输入内容的长度。
• LoRA不依赖于Prompt调整方法,避免了相关的限制,因此不会影响模型能处理的输入长度。

3.直接作用于模型结构:

  1. LoRA通过在模型的特定层(如Transformer层)内引入低秩矩阵来调整模型的行为,这种修改是直接作用于模型结构的。
  2. 相比之下,soft prompts更多是通过操纵输入数据来影响模型的输出。

4.更高的灵活性和适应性:

  1. LoRA提供了更大的灵活性,在不同的层和模型部件中引入低秩矩阵,可以根据具体任务进行调整。
  2. 这种灵活性使得LoRA可以更精细地调整模型以适应特定的任务。

5.模拟全参数微调的效果:

  1. LoRA的设计思路是模拟全参数微调的过程,这种方法通常能够带来更接近全面微调的效果,尤其是在复杂任务中。
    总的来说,LoRA的优势在于其能够更深入地、不占用额外输入空间地修改模型,从而提供更高的灵活性和适应性,尤其适合
    于需要深层次模型调整的场景。

LoRA 实验结果

采用两个基准实验进行对比,左右为WikiSQL,右边为MultiNLI,横坐标均为要训练的模型参数,可以理解为需要的成本。训练的参数越多,则需要GPU显存越多,计算量越大,训练时间越长。纵轴为验证集的准确率。
在这里插入图片描述
由上图可得,LoRA 显示出更好的可扩展性和任务性能。从GPT3的大语言模型使用LoRA后,训练的参数总量有十倍的提升,但是在特定的测试集上面表现效果更差了。这就涉及到大语言模型一些超参数的调整。
在这里插入图片描述
在这里插入图片描述
上表展示了不同适应方法在GPT-3 175B上的性能。 WikiSOL上的逻辑形式验证准确率、MultiNLI-matched上的验证准确率以及Rouge-1/2/L onSAMSum 上的验证准确率。LoRA 的表现优于之前的方法,甚至包括完全微调。在三个指标上,WikiSOL的结果波动在 +0.5% 左右,NLI-m的结果波动在+0.1%左右,SAMSum的结果波动在+0.2/+0.2/+0.1左右。
在这里插入图片描述
在WebNLG上使用不同适配方法的GPT-2。在所有实验中,MET和TER的方差都小于0.01。"U"表示未见过的类别,"S "表示已见的类别,"A "表示WebNLG测试集中的所有类别。

权重矩阵种类和秩r的选择对训练效果的影响

在这里插入图片描述
在这里插入图片描述
由表可得weight type及权重种类,影响较大,r即为矩阵的秩。LoRA使用 GPT-2 Medium 在 E2E NLG上实现的验证损失和测试集指标,与 GPT-3不同的是,GPT-2 Medium的r=1适合许多任务,而这里的性能峰值是验证损失r=16和BLEU r= 4、这表明,与 GPT-3 175B相比,GPT-2Medium在适应性方面内在具有相似的等级。请注意,一些超参数是在 r= 4 的基础上调整的,这与另一个基线的参数数相匹配,因此对于其它r的选择来说可能不是最佳的。

在这里插入图片描述

AdaLoRA: 自适应权重矩阵的高效微调

LoRA 核心思想:
对下游任务增量训练小模型,针对性地对下游任务增量训练小模型(W=W0+△W)。实质上,就是寻找小矩阵B、A等,使得整体的训练效果最好。
LoRA 问题:

  • 预先指定超参数增量矩阵的本征秩 r,无法自适应调整
  • 低估了权重矩阵的种类和不同层对的微调效果影响
  • 只微调了Attention,忽略了FFN模块。

AdaLoRA 解决思路:

  • 使用 SVD 提升矩阵低秩分解性能
  • 模型剪枝:对模块参数(特征)的重要性建模
  • 根据重要性评分,动态调整不同权重矩阵的本征秩r

AdaLoRA的核心结构

在这里插入图片描述
左侧是Adapter tuning的网络结构图,右侧是AdaLoRA的结构图。

AdaLoRA 使用 SVD 提升矩阵低秩分解性能

需要对哪些变量进行关注?

  • 1.由SVD分解出来的三个矩阵(奇异值、左奇异向量和右奇异向量)
  • 2.任意参数的敏感性,权重,梯度
  • 3.重要性建模中的训练步数和滑动平均超参数
    在这里插入图片描述

AdaLoRA的理念就是通过SVD的三元组替代了LoRA的二元组。
1.定义:

  • 奇异值分解(Singular Value Decomposition, SVD)是一种在数学和信号处理中常用的矩阵分解技术。
  • 它将任意一个矩阵分解为三个特定的矩阵的乘积:一个左奇异向量矩阵、一个奇异值矩阵和一个右奇异向量矩阵。

2.数学表示:

  • 对于任意一个矩阵 (A),SVD 表示为 (A = UΣV^T)。 其中,(U) 和 (V) 是正交矩阵,表示左右奇异向量;Σ 是对角矩阵,对角线上的元素是奇异值。

3.应用:

  • 在数据科学和机器学习中,SVD用于降维、数据压缩、噪声过滤等。
  • 在自然语言处理中,SVD用于提取文本数据的潜在语义结构。
    新增正则项R(P,Q),确保P和Q的正交性:
    在这里插入图片描述

AdaLoRA 对模块参数(特征)重要性建模

在这里插入图片描述
敏感性:有不同下有任务,任务有特定的训练集,为了更好地训练模型寻找可以较好反馈模型的那一批训练集。
任意参数的敏感性:
在这里插入图片描述
在这里插入图片描述
AdaLoRA使用SVD的三元组替代了LoRA的二元组。

AdaLoRA根据重要性评分剪枝和自适应调整本征秩r

AdaLoRA根据重要性评分剪枝和自适应调整本征秩r,算出很多值以后,筛选哪些需要更新以及不需要更新。通过Sk,i(t)确定更新哪些模型参数,总预算是超参数,AdaLoRA有这个超参数,但是LoRA没有超参数 。
重要性评分:
在这里插入图片描述
目标函数:
在这里插入图片描述
第t步 参数更新:
在这里插入图片描述
第t步 模型剪枝:
在这里插入图片描述
b(t)为预算(奇异值数量)。
预算计算方式:
在这里插入图片描述

AdaLoRA 实验结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
上图为不同预算水平下的微调性能对比,具体将 AdaLoRA 与适用于每个权重矩阵的LoRA 进行了比较。
在这里插入图片描述
在这里插入图片描述
用AdaLoRA微调基于 MNLI的DeBERTaV3时每个增量矩阵的秩。这里的a轴是层指数,y轴代表不同类型的适配权重矩阵。

QLoRA: 高效微调量化大模型

论文《QLoRA:Efficient Finetuning of Quantized LLMs》提出了一种QLoRA训练微调方法,通过这种方式可以在单个48G的GPU显卡上微调65B的参数模型,采用这种方式训练的模型可以保持16字节微调任务的性能。QLoRA通过冻结的int 4量化预训练语言模型反向传播梯度到低秩适配器LoRA来实现微调。
在这里插入图片描述

FFT vs LoRA vs QLoRA

QLoRA提出新数据类型4-bit NormalFloat(NF4),NF4就是将所有的权重转化到特定的分布上,并通过缩放因子还原初始值,并以正态因子的形式存储下来。

在这里插入图片描述

具体应该怎么做呢?

量化方式不一样

  • int 8的量化 & 量化常数c:是通过一个常数乘以初始数字 ;
    NormalFloat (NF) 数据类型建立在分位数量化之上,Quantile quantization是一种信息论最优的数据类型,可确保每个量化bin具有从输入张量分配的相同数量的值。
    分位数量化的工作原理是通过经验累积分布函数估计输入张量的分位数,主要限制是分位数估计的过程是昂贵的。因此,快速分位数近似算法,如SRAM分位数,常被用来估计它们。由于预训练的神经网络权重通常具有标准差为σ的零中心正态分布,可以通过缩放σ将所有权重转换为单个固定分布,以便分布恰好符合我们数据类型的范围。
  • NF4 的量化:支持存一个小数,只不过这个小数区间在[-1 ,1]。
    在神经网络中,预训练的权重通常具有零中心的正态分布,标准差为σ。通过缩放σ,可以使得分布恰好适应NF的范围。对于NF,作者设置了一个任意的范围[-1, 1]。因此,数据类型和神经网络权重的分位数都需要被归一化到这个范围。范围[−1,1]中具有任意标准差σ的零均值正态分布的信息理论最优数据类型计算如下:
    1. 估计理论N(0,1)分布的2k+1 分位数,得到正态分布的k位分位数量化数据类型;
    1. 采用这种数据类型并将其值归一化到[−1,1]范围内;
    1. 通过绝对最大缩放将其归一化到[−1,1]范围内来量化输入权重张量。

一旦权重范围和数据类型范围匹配,我们就可以像往常一样量化。3.相当于重新缩放权重张量的标准差以匹配k位数据类型的标准差。

QLoRA 提出双量化技术:量化(量化常数)

双量化技术思想是通过分位数这个函数,将真实的数据存储到存储桶中。所存储的数据又可以通过解压缩的方式转化为初始数据。在存储过程中会产生量化常数,而量化常数需要进行解压缩,就必须乘上这些数字,这些数字也可以被量化存下来。

分页技术

**核心思想:**为了防止系统崩溃,需要选择数据并加载进来以后,再进行前向和后向传播计算的过程。一旦数据没有选择正确,就有可能导致所存储一层显存崩溃掉。为了解决这个问题,英伟达会自动对所选数据存储到CPU,分页技术实现了CPU和GPU之间传输数据不会导致数据异常,又可以实现数据之间的相互传输。
QLoRA 将权重从存储数据类型反量化为计算数据类型,以执行前向和后向传播,但仅计算 16-bitBrainFloat 的 LoRA 参数的权重梯度。权重仅在需要时才解压缩,因此在训练和推理期间内存使用率都能保持较低水平。
存算分离:
针对参数的存储规模达到100GB,甚至上千GB的情况下,NF4通过极致压缩存储空间,并将计算和存储分离。需要计算的时候将压缩的数据进行解压缩,进行计算。计算完成以后再次将计算结果进行压缩存储。从而实现了“时间换空间”的策略。

QLoRA 实验结果

在这里插入图片描述
在这里插入图片描述

大模型高效微调(PEFT)未来发展趋势

1. 更高效的参数优化: 研究将继续寻找更高效的方法来微调大型模型,减少所需的参数量和计算资源。这可
能包括更先进的参数共享策略和更高效的 LoRA 等技术。
2. 适应性和灵活性的提升: 微调方法将更加灵活和适应性强,能够针对不同类型的任务和数据集进行优化。
3. 跨模态和多任务学习: PEFT可能会扩展到跨模态(如结合文本、图像和声音的模型)和多任务学习领域,
以增强模型处理不同类型数据和执行多种任务的能力。
4. 模型压缩和加速: 随着对边缘设备和移动设备部署AI模型的需求增加,PEFT技术可能会重点关注模型压缩
和推理速度的提升。
5. 低资源语言和任务的支持: 将PEFT技术应用于低资源语言和特定领域任务,提供更广泛的语言和任务覆盖。

PEFT 主流技术分类

在这里插入图片描述

UniPELT 探索 PEFT 大模型的统一框架

UIUC 和 Meta AI 研究人员发表的 UniPELT 提出将不同的 PEFT 方法模块化。通过门控机制学习激活最适合当前数据或任务的方法,尤其是最常见的3大类 PEFT 技术:
• Adapters
• Soft Prompts
• Reparametrization-based
将已经被广泛证明有效的技术,整合为一个统一的微调框架。针对不同的下游任务,可以学习和配置不同的微调模块。门控机制的核心是:将百家之长加以关联并控制,可以对其进行直连,也可以直接跳过。
在这里插入图片描述
关于组合3类主流PEFT技术的探讨:
Adapter:
• 接入位置(如:FFN)
• 接入方式(串行 or 并行)
• MLP 设计(△h)
Soft Prompts:
• 嵌入方式(Prompt-tuning, Prefix-Tuning, P-Tuning)
• Prompt 微调方法(手工生成 or 连续可微优化)
Reparametrization-based:
• 缩放因子(Scale: Rank r)
• 模型参数/模块类型(如:WQ, WV)

(IA)3 探索新的增量训练方法

为了使微调更加高效,北卡罗来纳教堂山分校的研究人员提出新的增量训练方法(IA)3( 通过学习向量来对激活层加权进行缩放)。本文基于作者团队之前的工作T0大模型,修改了损失函数以适应小样本学习,无需针对特定任务进行调整或修改即可应用于新任务,命名为 T-Few,并在RAFT基准测试上取得了全新的SOTA结果,超过了人类基准水平。

与LoRA相似,IA3具有许多相同的优势:

IA3通过大幅减少可训练参数的数量使微调更加高效。(对于T0,一个使用IA3模型仅有大约0.01%的可训练参数,而即使是LoRA也有大于0.1%的可训练参数)
• 原始的预训练权重保持冻结状态,这意味着您可以构建多个轻量且便携的IA3模型,用于各种基于它们构建的下游任务。
• 使用IA3进行微调的模型的性能与完全微调模型的性能相媲美。
• IA3不会增加推理延迟,因为适配器权重可以与基础模型合并。
• 原则上,IA3可以应用于神经网络中的任何权重矩阵子集,以减少可训练参数的数量。根据作者的实现,IA3权重被添加到Transformer模型的关键、值和前馈层中。具体来说,对于Transformer模型,IA3权重被添加到关键和值层的输出,以及每个Transformer块中第二个前馈层的输入。
鉴于注入IA3参数的目标层,可根据权重矩阵的大小确定可训练参数的数量。

原则上,IA3可以应用于神经网络中的任何权重矩阵子集,以减少可训练参数的数量。根据作者的实现,IA3权重被添加到Transformer模型的K、V和FFN中。具体来说,对于Transformer模型,IA3权重被添加到关键和值层的输出,以及每个Transformer块中第二个前馈层的输入。根据注入IA3参数的目标层,可以根据权重矩阵的大小确定可训练参数的数量。
在这里插入图片描述

(IA)3 实验结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
RAFT 上排名前五的最佳方法。T-Few 是第一个超越人类基准线的方法,其准确率比次佳方法高出 6% 以上。

  • 26
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
LoRA(Large-scale Reinforcement Learning from Image Pixels with Latent Actions)是一种用于微调大型模型的方法,它结合了强化学习和图像像素级别的训练。LoRA的目标是通过观察环境中的图像像素,并根据这些像素采取相应的行动来学习一个能够解决复杂任务的模型。 具体来说,LoRA使用了一个基于像素的强化学习框架,其中模型通过观察环境中的图像像素来学习如何采取最佳行动。这种方法的一个关键特点是,模型不需要任何先验知识或手工设计的特征,而是直接从原始像素数据中学习。 LoRA的训练过程包括两个阶段:预训练和微调。在预训练阶段,使用自编码器来学习图像的表示。自编码器是一种无监督学习方法,它通过将输入图像压缩成低维编码,然后再将编码解压缩为重构图像。通过这种方式,自编码器可以学习到图像的有用特征。 在微调阶段,使用强化学习算法(如Proximal Policy Optimization)来优化模型的策略。模型通过观察环境中的图像像素,并根据当前的状态选择最佳的行动。通过与环境进行交互并根据奖励信号进行反馈,模型逐渐优化其策略,以实现更好的性能。 LoRA的优势在于它能够处理高维度的原始输入数据,并且不需要手工设计的特征。通过使用像素级别的训练,LoRA可以学习到更丰富和复杂的特征表示,从而提高模型的性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Whitney_mao

您的认可和鼓励是持续分享的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值