LORA详解

news2024/11/18 6:01:41

参考论文: low rank adaption of llm

背景介绍:

自然语言处理的一个重要范式包括对一般领域数据的大规模预训练和对特定任务或领域的适应处理。在自然语言处理中的许多应用依赖于将一个大规模的预训练语言模型适配到多个下游应用上。这种适配通常是通过更新预训练模型所有参数的微调来进行的。

部署完整独立的微调模型实例每次都将花费高昂的代价。所以我们提出了低秩自适应的方法,即LoRA。它冻结了预训练模型的权重值,并给Transformer架构的每一层都注入了可训练的秩分解矩阵,从而极大的减少了下游任务需要训练的参数数量。虽然使用了更少的训练参数,提供了更高的训练吞吐量。

Pytorch架构集成了LoRA模型并提供了我们针对RoBERTa, DeBERTa, and GPT-2的应用集成和相关模型,链接为 https://github.com/microsoft/LoRA。

很多时候人们通过只调整部分参数,或者给新任务添加外部模块的方式来解决这个问题。这样,在每个任务中,除预训练模型外,我们只需要额外存储和加载少量特定任务所需的参数即可,从而极大地提高了部署时的操作效率。但是现有技术在扩展模型深度或减少模型可用序列长度(Li et al. (2018a))时,通常会引入推理时延。更重要的是,这些方法往往无法与微调基线相匹配,从而在效率和模型质量之间产生权衡。

图1 

我们受到Li et al. (2018a); Aghajanyan et al. (2020)等工作的启发,他们发现学习到的过参数化模型实际上存在于一个低内在维度上。我们假设模型自适应过程中权重的变化也具有较低的“内在秩”,这帮助我们提出的低秩自适应(LoRA)方法。LoRA允许我们在适配过程中,通过优化密集层变化的秩分解矩阵的方式来间接的训练神经网络的密集层,同时保持预训练权重不变。如图1所示。以GPT-3 175B 模型为例,我们发现即便全秩达到了12288,一个非常低的秩(图1中r为1或者2)也足够了。这使得LoRA在存储和计算方面都很高效。

LoRA具备以下几个关键优势:

  • 一个预训练模型可以用来针对不同任务建立为很多小的LoRA模块。我们可以冻结共享模型,仅仅通过更换图1中的A,B矩阵来快速地切换任务,从而显著降低存储需求和任务切换开销。
  • 当使用自适应优化器时,LoRA使训练更加高效,并将硬件门槛降低了3倍,因为对于大多数参数,我们不需要计算梯度或维护的优化器状态。相反,我们只优化注入的、小得多的低秩矩阵。
  • 在构造上,我们简单的线性设计允许我们在部署时将可训练矩阵与冻结的权重合并,同时保证了相较于全微调模型的性能并不产生推理时延。
  • LoRA与许多现有方法不冲突,并且可以与其中许多方法相结合,比如前缀调整法。我们在附录E中提供了一个这样的例子。

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

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

相关文章

unity学习(91)——云服务器调试——补充catch和if判断

本机局域网没问题,服务器放入云服务器后,会出现异常。 想要找到上面的问题,最简单的方法就是在云服务器上下载一个vs2022! 应该不是大小端的问题! 修改一下readMessage的内容,可以直接粘贴到云服务器的。 …

【Python系列】字符串操作

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

PostgreSQL的学习心得和知识总结(一百三十九)|深入理解PostgreSQL数据库GUC参数 allow_alter_system 的使用和原理

目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《PostgreSQL数据库内核分析》 2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》 3、PostgreSQL数据库仓库…

K8s: 部署 kubernetes dashboard

部署 Dashboard K8s 官方有一个项目叫 dashboard,通过这个项目更方便监控集群的状态 官方地址: https://github.com/kubernetes/dashboard 通常我们通过命令行 $ kubectl get po -n kube-system 能够查看到集群所有的组件,但这样的方式比较不太直观 …

力扣爆刷第127天之动态规划五连刷(整数拆分、一和零、背包)

力扣爆刷第127天之动态规划五连刷(整数拆分、一和零、背包) 文章目录 力扣爆刷第127天之动态规划五连刷(整数拆分、一和零、背包)关于0 1 背包问题的总结01背包遍历顺序:完全背包遍历顺序: 一、343. 整数拆…

探讨mfc100u.dll丢失的解决方法,修复mfc100u.dll有效方法解析

mfc100u.dll丢失是一个比较常见的情况,由于你电脑的各种操作,是有可能引起dll文件的缺失的,而mfc100u.dll就是其中的一个重要的dll文件,它的确实严重的话是会导致程序打不开,系统错误的。今天我们就来给大家科普一下mf…

明天报名!!济宁教师招聘报名照片及常见问题

明天报名!!济宁教师招聘报名照片及常见问题 山东济宁教师招聘1000多人 报名时间: 2024年4月25日9:00-4月28日16:00 缴费时间: 2024年4月25日11:00-4月30日16:00 打印准考证:2024年5月23日9:00-5月26日9:30 初审时间: 2024年4月25日11:00-4月29日16:00 查询时间: 2024年4月…

c++初阶——类和对象(中)

大家好,我是小锋,我们今天继续来学习类和对象。 类的6个默认成员函数 我们想一想如果一个类什么都没有那它就是一个空类,但是空类真的什么都没有吗? 其实并不是,任何类在什么都不写时,编译器会自动生成以…

JCE cannot authenticate the provider BC

前言: 公司项目有用AES加密的,报错原因是BC(Bouncy Castle)提供的加密服务时,JCE(Java Cryptography Extension)无法进行验证。这通常是由于 JCE 的默认策略文件不支持所需的加密算法&#xff…

北京车展“第一枪”:长安汽车发布全球首款量产可变新汽车

4月25日,万众瞩目的2024北京国际汽车展览会在中国国际展览中心如期而至。作为中国乃至全球汽车行业的盛宴,本次车展也吸引了无数业内人士的高度关注。 此次北京车展以“新时代 新汽车”为主题,汇聚了1500余家主流车企及零部件制造商&#xff…

最优化理论探析:函数优化与组合优化,约束优化与无约束优化的交织与应用

最优化理论作为运筹学、数学规划和工程科学中的核心研究领域,涵盖了函数优化、组合优化、约束优化和无约束优化等多个分支。这些理论在解决实际问题中发挥着重要作用,从资源分配、生产调度到网络路由、物流优化,再到机器学习、人工智能等领域…

DevOps(十四)怎么实现Gitlab更新后Jenkins自动发布

目录 1、在 Jenkins 中安装 GitLab 插件 2、在 GitLab 中创建一个访问令牌(Access Token) 3、在 Jenkins 中配置 GitLab 连接 4、在 Jenkins 中创建一个新的任务(Job) 5、在 GitLab 中配置 Webhook 6、以下是一些补充说明和建议 持续集成的一个特点就是开发可以随时提交&…

SRE运维和DevOps之间是什么关系?

一、SRE运维和DevOps之间是什么关系? SRE运维和DevOps之间存在紧密的联系和相互依赖。 首先,两者都是开发运维一体化时代的产物,旨在通过协同工作来构建高效可靠的软件运维团队。SRE(Site Reliability Engineering&#x…

【UE5.1 C++】提升编译速度

步骤 1. 在“C:\Users\用户\AppData\Roaming\Unreal Engine\UnrealBuildTool”目录下找到“BuildConfiguration.xml”文件 打开“BuildConfiguration.xml”&#xff0c;添加如下部分内容 <?xml version"1.0" encoding"utf-8" ?> <Configuratio…

FastGPT编译前端界面,并将前端界面映射到Docker容器中

建议在linux系统下编译 1、克隆代码 git clone https://github.com/labring/FastGPT 2、进入FastGPT目录&#xff0c;执行 npm install 3、进入projects/app目录&#xff0c;执行 npm run dev 此时会自动下载依赖包&#xff0c;这里如果执行npm install的话&#xff0c;…

OS复习笔记ch4

引言 上一章&#xff0c;我们学习了进程的相关概念和知识&#xff0c;不知道小伙伴们的学习进度如何&#xff0c;没看的小伙伴记得去专栏看完哦。 线程从何而来 我们之前说过&#xff0c;进程是对程序运行过程的抽象&#xff0c;它的抽象程度是比较高的。 一个进程往往对应一…

LabVIEW专栏九、类的应用

一、类的应用 接上一章"类" 类在项目中&#xff0c;一般会在类的私有成员簇内&#xff0c;包含一个数据类型为参数类的队列。 例如网口类&#xff0c;里面实际会包含很多信息&#xff0c;有IP地址和端口等等参数。这些参数如果不放在队列引用中缓存下来&#xff0c;…

【热门前端【vue框架】】——vue框架和node.js的下载和安装保姆式教程

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;程序员-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

FPM 快速报表开发

背景&#xff1a; 使用FPM开发报表时&#xff0c;如果报表字段过多&#xff0c;页面拖拽等操作不方便 报表数量过多时&#xff0c;新建应用操作步骤较为繁琐 更习惯通过少量代码而非页面操作去实现功能 处理&#xff1a; 将FPM报表开发简化为类似GUI端ALV的开发过程:&#xff…

大模型微调之 使用 LLaMA-Factory 微调 Llama3

大模型微调之 使用 LLaMA-Factory 微调 Llama3 使用 LLaMA Factory 微调 Llama-3 中文对话模型 安装 LLaMA Factory 依赖 %cd /content/ %rm -rf LLaMA-Factory !git clone https://github.com/hiyouga/LLaMA-Factory.git %cd LLaMA-Factory %ls !pip install "unsloth…