当前位置: 首页 > news >正文

LoRA的原理简介

在文章开始前先澄清一个概念,需要区分形近的单词"LoRa"(long range),这是一项通信技术。熟悉物联网行业的朋友相对会比较熟悉LoRa这项技术,因为有些设备比如电梯的控制就使用了这个技术进行本地数据和命令的传输。

本文介绍的LoRA(最后两个字母大写),是Low-Rank Adaptation的缩写,Low-Rank来自于对权重矩阵的分解。LoRA技术通过将权重矩阵分解成低秩矩阵的乘积,降低了参数数目,进而达到减少硬件资源、加速微调进程的目的。

众所周知,大模型所涉及的参数都是以10亿起的,往往上百亿千亿级的参数。这些模型进行预训练后的基座模型(Base Model)在具体的应用场景下需要进一步微调。这时面临两种选择:

  • 全参数的微调:毫无疑问,这个需要加载所有的参数进行调整训练,费时费力更费钱。
  • 部分参数的微调:只针对某些层的权重和参数进行调整训练,能够减少存储空间和加速部署,但存在一些性能和模型质量的损耗。

LoRA在保留基座模型全部参数的同时,拆分出权重矩阵的更新并进行矩阵分解,通过调整训练这个由低秩矩阵乘积表示的更新矩阵来减少存储空间的同时保留了模型的质量和微调速度。

LoRA原理

LoRA的详细论文介绍可以阅读参考资料2(LORA: LOW-RANK ADAPTATION OF LARGE LAN- GUAGE MODELS)。其原理如下图所示:对于一个预训练好的基座模型,保留其原有的权重矩阵W不变,仅微调训练更新部分,且这个更新权重矩阵被分解成A和B两个低秩矩阵。下图中A矩阵初始化为高斯分布矩阵,B矩阵初始化为0矩阵。

数学表达:

h=W_{0}x + \Delta Wx=W_{0}x+BAx

其中的B\in \mathbb{R}^{d\times r}A\in \mathbb{R}^{r\times d},同时r << d。

这里的好处显而易见,假设d=10000, r = 8,在使用LoRA前需要对10000 * 10000共计1亿个参数进行计算更新,而LoRA仅需要10000*8 + 8*10000共计16万个参数的更新计算。论文中使用的模型是“GPT-3 175B”,这个差距读者可以自行计算。

具体微调时会引入两个超参数:\alphar,它俩的比\alpha / r\Delta W进行缩放,类似学习率(learning rate)超参数来控制\Delta W的更新步长。

这里有个疑问,为什么将\Delta W能进行分解呢?这里就涉及到矩阵秩和列向量的线性相关性之类的数学概念,以及参考资料3中的发现。有兴趣的读者可以自己再深究。

同时,参考资料2作者还发现仅对W_{q}进行分解更新的效果不够,但对全部4个权重矩阵进行更新并没有大幅提升,对W_{q}W_{v}进行分解更新就能取得足够好的效果,一般r取4或者8:

参考资料:

1. YouTube LoRA explained (and a bit about precision and quantization)

2. LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS

3. INTRINSIC DIMENSIONALITY EXPLAINS THE EFFEC- TIVENESS OF LANGUAGE MODEL FINE-TUNING

相关文章:

LoRA的原理简介

在文章开始前先澄清一个概念&#xff0c;需要区分形近的单词"LoRa"&#xff08;long range&#xff09;&#xff0c;这是一项通信技术。熟悉物联网行业的朋友相对会比较熟悉LoRa这项技术&#xff0c;因为有些设备比如电梯的控制就使用了这个技术进行本地数据和命令的…...

安卓使用Fiddler抓包 2024

简介 最近试了一下安卓使用fiddler 抓包&#xff0c;发现https包基本都会丢失。原因是Anandroid 7版本针对ssl安全性做了加强&#xff0c;不认可用户的证书。我们要做的就是把fiddler导出的证书进过处理后放置到系统证书目录下面&#xff0c;这样才能抓包https请求。 这里使用…...

【前端每日基础】day2 const var const的区别

var: 在早期的 JavaScript 中&#xff0c;var 是声明变量的唯一方式。它有以下特点&#xff1a; var 声明的变量是函数作用域&#xff08;function-scoped&#xff09;&#xff0c;而不是块作用域&#xff08;block-scoped&#xff09;&#xff0c;这意味着它们在整个函数内部都…...

乡村振兴的文化旅游融合:整合乡村文化资源与旅游资源,发展文化旅游产业,提升美丽乡村的文化内涵和旅游吸引力

一、引言 随着城市化进程的加速和人们精神文化需求的日益增长&#xff0c;乡村旅游逐渐成为旅游市场的新热点。乡村振兴战略的提出&#xff0c;为乡村旅游的发展提供了新的契机。在这一背景下&#xff0c;如何整合乡村文化资源与旅游资源&#xff0c;发展文化旅游产业&#xf…...

力扣题目101:对称二叉树

作者介绍&#xff1a;10年大厂数据\经营分析经验&#xff0c;现任大厂数据部门负责人。 会一些的技术&#xff1a;数据分析、算法、SQL、大数据相关、python 欢迎加入社区&#xff1a;码上找工作 作者专栏每日更新&#xff1a; LeetCode解锁1000题: 打怪升级之旅 python数据分析…...

struct和union大小计算规则

Union 一&#xff1a;联合类型的定义 联合也是一种特殊的自定义类型&#xff0c;这种类型定义的变量也包含一系列的成员&#xff0c;特征是这些成员公用同一块空间&#xff08;所以联合也叫共用体&#xff09; 比如&#xff1a;共用了 i 这个较大的空间 二&#xff1a; 联合的…...

数据库课程设计《基于Spring Boot + MyBatis + MySQL 实现Java医院药品管理系统》+源代码

文章目录 源代码下载地址项目介绍项目功能 项目备注源代码下载地址 源代码下载地址 点击这里下载源码 项目介绍 项目功能 库存管理 登记入库的药品。 登记出库的药品。 每日检查库存下限&#xff0c;报警。 每日检查过期的药品&#xff0c;报警并做退回销毁处理。 对有问题…...

【每日力扣】98. 验证二叉搜索树 与 108. 将有序数组转换为二叉搜索树

&#x1f525; 个人主页: 黑洞晓威 &#x1f600;你不必等到非常厉害&#xff0c;才敢开始&#xff0c;你需要开始&#xff0c;才会变的非常厉害 98. 验证二叉搜索树 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&a…...

Django3 个人开发笔记

查询函数 select_related 在 Django ORM 中&#xff0c;select_related 是一个查询性能优化工具&#xff0c;用于解决关联对象的查询效率问题。当你有两个通过外键&#xff08;ForeignKey&#xff09;或一对一字段&#xff08;OneToOneField&#xff09;连接的模型时&#xf…...

【全开源】Java U U跑腿同城跑腿小程序源码快递代取帮买帮送源码小程序+H 5+公众号跑腿系统

特色功能&#xff1a; 智能定位与路线规划&#xff1a;UU跑腿小程序能够利用定位技术&#xff0c;为用户提供附近的跑腿服务&#xff0c;并自动规划最佳路线&#xff0c;提高配送效率。订单管理&#xff1a;包括订单查询、订单状态更新、订单评价等功能&#xff0c;全行业覆盖…...

物联网实战--平台篇之(五)账户界面

目录 一、界面框架 二、首页(未登录) 三、验证码登录 四、密码登录 五、帐号注册 六、忘记密码 本项目的交流QQ群:701889554 物联网实战--入门篇https://blog.csdn.net/ypp240124016/category_12609773.html 物联网实战--驱动篇https://blog.csdn.net/ypp240124016/cat…...

9. Django Admin后台系统

9. Admin后台系统 Admin后台系统也称为网站后台管理系统, 主要对网站的信息进行管理, 如文字, 图片, 影音和其他日常使用的文件的发布, 更新, 删除等操作, 也包括功能信息的统计和管理, 如用户信息, 订单信息和访客信息等. 简单来说, 它是对网站数据库和文件进行快速操作和管…...

ELK+kafka日志采集

ElasticSeach&#xff08;存储日志信息&#xff09; Logstash&#xff08;搬运工&#xff09; Kibana 连接ElasticSeach图形化界面查询日志 ELK采集日志的原理&#xff1a; 在每个服务器上安装LogstashLogstash需要配置固定读取某个日志文件Logstash将日志文件格式化为json的…...

【C++ list所有函数举例如何使用】

C 中的 std::list 是一个双向链表&#xff0c;提供了在列表中添加、删除、访问元素等操作的方法。以下是一些常用的 std::list 函数以及如何使用它们的示例&#xff1a; push_back(const T& value): 在列表的末尾添加一个值为 value 的元素。 std::list<int> mylis…...

HTML5(1)

目录 一.HTML5(超文本&#xff08;链接&#xff09;标记&#xff08;标签<>&#xff09;语言) 1.开发环境&#xff08;写代码&#xff0c;看效果&#xff09; 2.vscode 使用 3.谷歌浏览器使用 4.标签语法 5.HTML基本骨架&#xff08;网页模板&#xff09; 6.标签的…...

【LAMMPS学习】八、基础知识(6.2)LAMMPS GitHub 教程

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语&#xff0c;以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…...

专业习惯:避开本地语言,使用通用语言

如果你的目标是走一步看一步&#xff0c;那躺平就得了&#xff0c;学习什么的都没有必要。如果你的目标是远方&#xff0c;那么就需要未雨绸缪。 在工作之中&#xff0c;本地语言及习惯固然可用&#xff0c;但非常局限&#xff0c;随便换一个地方和场景&#xff0c;别人就难以理…...

【Leetcode每日一题】 综合练习 - 逆波兰表达式求值(难度⭐⭐)(73)

1. 题目解析 题目链接&#xff1a;150. 逆波兰表达式求值 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 2.算法原理 数据结构选择&#xff1a; 使用栈&#xff08;stack<int>&#xff09;来存储操作数&#xff0c;以便进…...

2G 3G LTE 5G的区别

2G、3G、LTE和5G是不同代的移动通信技术&#xff0c;每一代技术都在其前一代的基础上提供了改进的性能、更高的数据速率和新的功能。以下是这些技术的主要区别&#xff1a; ### 2G (第二代移动通信技术): - **数据速率**&#xff1a;较低的数据速率&#xff0c;通常在几百kbps…...

《21天学通C++》(第二十章)STL映射类(map和multimap)

为什么需要map和multimap&#xff1a; 1.查找高效&#xff1a; 映射类允许通过键快速查找对应的值&#xff0c;这对于需要频繁查找特定元素的场景非常适合。 2.自动排序&#xff1a; 会自动根据键的顺序对元素进行排序 3.多级映射&#xff1a; 映射类可以嵌套使用&#xff0c;创…...

智能家居中枢:OpenClaw+GLM-4.7-Flash语音指令转Home Assistant API调用

智能家居中枢&#xff1a;OpenClawGLM-4.7-Flash语音指令转Home Assistant API调用 1. 为什么需要本地化的智能家居控制&#xff1f; 去年冬天的一个深夜&#xff0c;我被空调突然启动的噪音惊醒。查看日志才发现&#xff0c;某个云端语音助手的误识别触发了设备开关。这次经…...

OpenClaw安全加固实践:Qwen3-32B私有镜像+本地防火墙配置

OpenClaw安全加固实践&#xff1a;Qwen3-32B私有镜像本地防火墙配置 1. 为什么需要安全加固&#xff1f; 当我第一次看到OpenClaw能够自动操作我的电脑时&#xff0c;既兴奋又担忧。兴奋的是它能够帮我完成重复性工作&#xff0c;担忧的是它本质上是一个拥有系统操作权限的AI…...

OpenClaw团队协作版:ollama-QwQ-32B支持多用户任务隔离实践

OpenClaw团队协作版&#xff1a;ollama-QwQ-32B支持多用户任务隔离实践 1. 为什么我们需要团队协作版的OpenClaw 去年我带领一个5人内容团队时&#xff0c;遇到了一个典型问题&#xff1a;每个人都想用AI自动化处理日常工作&#xff0c;但共享同一套系统会导致文件混乱、任务…...

SkeyeVSS中SSE(Server-Sent Events)架构设计

本文说明 core/app/sev/vss 信令服务内 SSE 长连接 的实现方式&#xff1a;独立 HTTP 服务、/events 入口、按 type 路由到不同 Logic&#xff0c;以及 messageChan → 文本帧 → Flush 的推送模型。可与《SkeyeVSS中HTTP架构设计》《skeyeVSS中WebSocket架构设计》对照阅读。 …...

企业信息化一站式方案,开启高效管理新时代

企业信息化一站式方案&#xff0c;提升核心竞争力在当今数字化时代&#xff0c;企业面临着日益激烈的市场竞争&#xff0c;如何提升核心竞争力成为企业发展的关键。企业信息化一站式方案应运而生&#xff0c;为企业提供了全面、高效、便捷的解决方案&#xff0c;帮助企业实现数…...

3大突破!MiroFish群体智能引擎如何重构分布式协作系统?

3大突破&#xff01;MiroFish群体智能引擎如何重构分布式协作系统&#xff1f; 【免费下载链接】MiroFish A Simple and Universal Swarm Intelligence Engine, Predicting Anything. 简洁通用的群体智能引擎&#xff0c;预测万物 项目地址: https://gitcode.com/GitHub_Tren…...

Intel RealSense深度相机3D点云生成终极指南:从原理到实战

Intel RealSense深度相机3D点云生成终极指南&#xff1a;从原理到实战 【免费下载链接】librealsense Intel RealSense™ SDK 项目地址: https://gitcode.com/GitHub_Trending/li/librealsense 想要快速构建高质量的三维视觉应用&#xff1f;Intel RealSense深度相机为你…...

OpenClaw:打破AI空谈,打造本地可控的智能执行助手

在AI工具层出不穷的当下&#xff0c;多数大模型仍停留在“对话生成”层面&#xff0c;只能输出文字却无法落地执行任务&#xff0c;隐私泄露风险也让不少用户望而却步。2026年走红的开源项目OpenClaw&#xff08;俗称“龙虾”&#xff09;&#xff0c;彻底颠覆了这一局面&#…...

Vivado工程移植遇IP核被锁?手把手教你从源码重建自定义IP(附路径避坑指南)

Vivado工程移植遇IP核被锁&#xff1f;手把手教你从源码重建自定义IP&#xff08;附路径避坑指南&#xff09; 当你从同事或开源社区获取一个Vivado工程时&#xff0c;最令人头疼的问题莫过于打开后发现关键IP核显示为锁定状态。那些灰色的锁形图标不仅意味着无法查看源码&…...

ESP32逆向复现Enjoy Motors遮阳帘433MHz滚动码协议

1. 项目概述EnjoyRemoteLib 是一个专为 ESP32 平台设计的 Arduino 库&#xff0c;核心目标是完整复现 Enjoy Motors 系列电动遮阳帘遥控器的无线通信协议&#xff0c;从而实现对 EMSTEEL4 及兼容型号遮阳帘设备的非侵入式远程控制。该库并非基于厂商公开 SDK&#xff0c;而是通…...