首页 > 其他分享 >VeRA——更高效的大型语言模型微调方法

VeRA——更高效的大型语言模型微调方法

时间:2024-09-09 14:52:52浏览次数:9  
标签:高效 训练 模型 微调 矩阵 VeRA 参数 LoRA

人工智能咨询培训老师叶梓 转载标明出处

大模型在特定任务上的高效适应性训练面临着巨大的挑战,尤其是在需要针对大量用户或任务进行个性化调整时,存储和计算资源的需求急剧增加。为了解决这一问题,来自阿姆斯特丹大学QUVA实验室的研究者团队提出了一种名为Vector-based Random Matrix Adaptation(VeRA)的新方法,旨在显著减少在微调大模型时所需的可训练参数数量,同时保持模型性能。

VeRA方法的核心在于通过重新参数化权重矩阵来最小化微调过程中引入的可训练参数数量。在不增加额外推理时间成本的前提下,以比LoRA方法更少的可训练参数数量,取得不错的结果。LoRA 方法见前面文章:LoRA - 大型语言模型的低秩适应方法_lora 可否 a 初始化为 0 ,b 随机初始化?-CSDN博客

论文链接:https://arxiv.org/pdf/2310.11454

方法

VeRA方法在现有LoRA方法的基础上进行改进,主要创新点在于对低秩矩阵的重新参数化。VeRA方法通过冻结一对随机初始化的矩阵,并在所有适应层之间共享,引入可训练的缩放向量以实现逐层适应。与LoRA类似,训练后的缩放向量和低秩矩阵可以合并到原始权重中,从而消除额外的推理延迟。

图1为LoRA和VeRA方法的示意图。左侧是LoRA方法,它通过训练低秩矩阵A和B来更新权重矩阵W。右侧是VeRA方法,其中这些矩阵是固定的、在所有层之间共享的,并通过可训练的向量d和b进行调整,从而大幅减少了可训练参数的数量。

LoRA方法通过微调两个低秩矩阵的乘积来适应大型语言模型面对新任务的挑战。对于预训练权重矩阵,权重更新ΔW被限制为低秩分解,如公式(1)所示: 其中,参数通过梯度下降法更新。这种近似允许模型在优化新的低秩矩阵A和B时保持原始权重不变。由于其秩减性质,A和B的大小远小于原始矩阵。A的形状为m×r,B的形状为r×n,其中r≪min(m,n)作为瓶颈维度。

相比之下,VeRA方法表达为(公式2): 在这个方案中,B和A是固定的、随机的,并且在各层之间共享,而缩放向量b和d是可训练的,分别由对角矩阵Λb​和Λd​正式表示。这种方法可以有效地缩放和禁用A和B的行和列,允许以最少数量的可训练参数进行逐层适应。需要注意的是,在这种设置中,不要求是低秩的。这是因为它们是静态的,不需要存储它们的值。相反,通过变化,可训练参数的数量线性增加。

表1展示了存储训练后的VeRA和LoRA权重所需的理论内存。假设LoRA和VeRA方法应用于每个transformer块的查询和键层。VeRA的可训练参数数量由决定,与LoRA的形成对比。具体而言对于最低秩(即r=1),VeRA需要的可训练参数大约是LoRA的一半。随着秩的增加,VeRA的参数计数每个增量增加​,与LoRA的​相比,节省显著。在处理极其深和宽的模型,如GPT-3时,这种参数效率变得特别重要。

基于这种效率,VeRA的主要优势在于其存储训练后的权重调整所需的最小内存占用。因为随机冻结的矩阵可以从随机数生成器(RNG)种子重新生成,这些矩阵不需要存储在内存中。这大大减少了内存需求,现在仅限于训练后的b和d向量和单个RNG种子所需的字节。与LoRA相比的内存效率见表1。

VeRA方法中随机矩阵和缩放向量的初始化策略如下:

  • 共享矩阵:本方法对冻结的低秩矩阵A和B采用Kaiming初始化。通过根据矩阵维度缩放值,确保A和B的矩阵乘积对所有秩保持一致的方差,消除了对每个秩微调学习率的需要。

  • 缩放向量:缩放向量b初始化为零,这与LoRA中矩阵B的初始化相一致,并确保在第一次前向传递期间权重矩阵不受影响。缩放向量d在所有元素上用单一非零值初始化,从而引入了一个新的超参数,可以为更好的性能进行调整。

想要掌握如何将大模型的力量发挥到极致吗?叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具。9月22日晚,实战专家1小时讲解让您轻松上手,学习如何使用 Llama Factory 微调模型。

加助理微信提供直播链接:amliy007,29.9元即可参加线上直播分享,叶老师亲自指导,互动沟通,全面掌握Llama Factory,关注享粉丝福利,限时免费CSDN听直播后的录播讲解。
 

LLaMA Factory 支持多种预训练模型和微调算法。它提供灵活的运算精度和优化算法选择,以及丰富的实验监控工具。开源特性和社区支持使其易于使用,适合各类用户快速提升模型性能。

实验

研究者们首先在GLUE基准测试上评估了VeRA方法。GLUE基准测试是一个广泛用于评估自然语言理解能力的数据集集合。实验使用了RoBERTa模型的两个变体:RoBERTabase和RoBERTalarge。对于RoBERTabase,使用了1024的秩,而对于RoBERTalarge,使用了256的秩。共享矩阵使用PyTorch实现的均匀版本的Kaiming初始化,而d向量的初始值设为0.1。

实验设置与Hu等人(2022年)的工作大体一致,将VeRA方法应用于每个自注意力模块的查询和值投影矩阵,并完全训练分类头。与Hu等人(2022年)使用额外的超参数α来调整适应层的梯度不同,研究者们为分类头和适应层引入了不同的学习率。通过超参数调整确定了学习率和训练周期的数量。RoBERTabase的批量大小设置为64,RoBERTalarge的批量大小设置为32,最大序列长度分别为512和128。

由于时间和预算的限制,研究者们省略了耗时的MNLI和QQP任务,因此没有使用MNLI技巧来处理MRPC、RTE和STS-B任务。与Hu等人(2022年)一致,报告了归因于微调层的可训练参数数量,明确排除了以标准方式训练的分类头。进行了5次不同随机种子的运行,记录了每次运行的最佳周期结果,并报告了这些结果的中位数。

表2显示了VeRA在两个模型上与LoRA的竞争性能,但使用的参数数量却少了一个数量级。

研究者们在E2E基准测试上进行了实验,这是另一个自然语言处理的基准测试。实验遵循了Hu等人(2022年)的实验设置,并对GPT-2的Medium和Large模型进行了微调。对于LoRA,使用了Hu等人(2022年)提供的实现和超参数集,而对于VeRA,调整了秩和学习率,两者都经过了调整。所有使用的超参数都可以在附录A中找到。

表3显示了VeRA在GPT2 Medium和Large模型上的性能,与LoRA相比,VeRA在可训练参数数量上少了3倍和4倍。

指令调整是微调语言模型以更有效地遵循特定指令的过程。研究者们展示了VeRA在使Llama和Llama2模型遵循指令方面的有效性,对于7B和13B变体,分别仅使用了1.6M和2.4M可训练参数,相比之下,使用LoRA和64秩时提出了159.9M和250.3M可训练参数。

表4显示了使用VeRA和LoRA方法微调的模型在MT-Bench上的平均得分,以及基础Llama 13B模型。尽管可训练参数数量减少了100倍,VeRA在指令遵循任务上的性能与LoRA相当。

为了在图像分类任务上评估VeRA方法,研究者们对CIFAR100、Food101、Flowers102和RESISC45数据集上的Vision Transformer(ViT)进行了微调。对于每个数据集,研究者们在每个类别的10个样本上进行训练,并在完整的测试集上进行评估。使用了在ImageNet-21k数据集上预训练的ViT模型的权重。

表5显示了在不同图像分类数据集上使用VeRA和LoRA微调的ViT模型的性能。VeRA在较小的模型上接近LoRA的性能,在较大的模型上,即使使用的可训练参数数量少了10倍以上,也超过了LoRA。

最后研究者们使用RoBERTalarge模型在GLUE基准测试的RTE任务上,研究了LoRA和VeRA方法在参数可扩展性方面的权衡。对于VeRA,使用了一组秩{1, 4, 16, 64, 256, 1024},对于LoRA,使用了一组秩{1, 2, 4, 8, 16, 32, 64},并观察了可训练参数数量与准确性之间的权衡。每种配置都重复了五次,以不同的随机种子进行,报告了结果的中位数。

图2显示了在RTE任务上,随着秩的变化,LoRA和VeRA方法的性能。结果表明,VeRA方法在参数效率上显著更高。值得注意的是,当较高秩的VeRA具有与标准LoRA相同数量的参数时,它的性能比LoRA高出4个百分点。

研究者们还进行了消融研究,以检查VeRA方法中各个组成部分的影响。所有后续实验都集中在MRPC和RTE任务上,并使用了RoBERTalarge模型。研究者们坚持使用先前实验中使用的超参数,只为每次测试修改正在研究的组件。每个实验都使用5个随机种子运行,并报告了结果的平均值和标准差。

表6显示了消融研究的结果,研究了d和b缩放向量的影响以及不同的初始化策略。研究者们发现,省略任何一个缩放向量都会损害性能。仅d配置的性能略好于仅b配置。这种性能差异突显了d缩放向量的高表达性。

图3提供了在RTE任务上微调后d向量变化幅度的可视化。由于低秩冻结矩阵对每个层都保持相同,我们可以直接比较d向量在各层的长度,以说明其相对适应性。总之查询矩阵的适应性最大,这表明在这些层进行微调的需求或容易程度更大。另外与之前高效适应方法的发现类似,研究者们也观察到较后层的适应性比前层更高。

表7显示了在RTE、MRPC、CoLA和STS-B任务上使用共享和唯一随机矩阵的结果。结果显示,使用唯一矩阵时,MRPC和CoLA任务的平均性能略有提高,而RTE和STS-B任务的性能则与共享矩阵时相同。

这些实验结果表明,VeRA方法在保持性能的同时,显著减少了所需的可训练参数数量,这使得它在资源受限的环境中特别有用。

标签:高效,训练,模型,微调,矩阵,VeRA,参数,LoRA
From: https://blog.csdn.net/weixin_44292902/article/details/141956569

相关文章

  • 解锁高效驱动密码:SiLM8260A系列SiLM8260ABCS-DG 集成米勒钳位的双通道隔离驱动芯片
    附上SiLM8260A同系列型号参考:SiLM8260ADCS-DG 12.5V/11.5VSiLM8260ABCS-DG 8.5V/7.5VSiLM8260AACS-DG 5.5V/5VSiLM8260AGCS-DG 3.5V/3VSiLM8260ABCS-DG是一款集成了米勒钳位功能的双通道隔离驱动芯片,它精准地满足了上述严苛条件。具备10A的拉电流和灌电流能......
  • 嵌入式QT开发:构建高效智能的嵌入式系统
    摘要: 本文深入探讨了嵌入式QT相关的各个方面。从QT框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式QT的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式QT的界面设计与开发,涵盖了从基本控件的使用到......
  • 指令微调与参数微调的代码实践与分析
    文章目录指令微调的实验性分析LoRA代码实践与分析    指令微调的示例代码与预训练的代码高度一致,区别主要在于指令微调数据集的构建(SFTDataset)和序列到序列损失的计算(DataCollatorForSupervisedDataset)。以下代码展示了LLMBox和YuLan-Chat中指令微调......
  • Linux系统与高效进程控制的实战技巧
    Linux系统与高效进程控制的实战技巧Linux,作为一种开源的Unix-like操作系统内核,自1991年由芬兰程序员LinusTorvalds首次发布以来,已成为全球范围内广泛使用的操作系统之一。其强大的功能、灵活的配置以及高度的可定制性,使得Linux在服务器、嵌入式系统、超级计算机等多个领域......
  • AI赋能司法,助力法院高效办工
    传统的法院裁决流程中,法官往往需要花费大量时间在法律法规的检索和判例参考上,且文书生成工作耗时费力,容易出现人工误判。法院智能助手利用AI大模型和RAG知识库技术,帮助法官快速检索相关法律法规和历史判例,自动生成初步裁决文书,并提供法律风险预警。系统支持私有化部署和多终端应......
  • Ftrans跨域文件传输方案,数据流动无阻的高效路径!
    大型集团企业由于其规模庞大、业务广泛且往往将分支机构、办事处分布在多个地域,因此会涉及到跨域文件传输的需求。主要源于以下几个方面:1.业务协同:集团内部的不同部门或子公司可能位于不同的地理位置,但需要进行紧密的业务协同。文件传输是实现这种协同的重要方式之一,包括项目文档......
  • 提高编程效率的秘密武器:探索高效开发工具
          ......
  • 大数据新视界--大数据大厂之Java 与大数据携手:打造高效实时日志分析系统的奥秘
           ......
  • Plant Com | 创制水稻高效单倍体诱导系并实现两系不育系单倍体的大规模生产
    2024年8月23日,中国水稻研究所王克剑团队与钱前院士团队、江西省农科院严松团队合作,在植物学知名期刊_PlantCommunications_杂志在线发表了题为“Large-scaleproductionofricehaploidsbycombiningsuperiorhaploidinducerwithPTGMSlines”的文章。该研究成功开发出诱导......
  • 初次使用Typora,让学习更高效
    Typora软件遵循着Markdown语法,我们能够在Typora软件中编写笔记后,直接将其全选复制到网页中进行文章的发布,以下有9点快捷方式来供大家参考。1.标题'#*n+空格+标题内容+回车(#有几个就表示几级标题)一级二级三级四级五级六级2.字体1)粗体在文字内容两侧加**,即**+文字内......