2021-arxiv-LoRA Low-Rank Adaptation of Large Language Models
2021-arxiv-LoRA Low-Rank Adaptation of Large Language Models

Paper: https://arxiv.org/abs/2106.09685
Code: https://github.com/microsoft/LoRA
大型语言模型的LoRA低秩自适应
自然语言处理的一个重要范式包括对通用领域数据的大规模预训练和对特定任务或领域的适应。当预训练更大的模型时,完全微调(重新训练所有模型参数)变得不那么可行。以 GPT-3 175B 为例,部署微调模型的独立实例,每个实例都有 175B 参数,成本高得令人望而却步 因此, 作者提出了低秩自适应(Low-Rank Adaptation,简称LoRA),它冻结了预训练模型的权重,并将可训练的秩分解矩阵注入到Transformer架构的每一层中,大大减少了下游任务的可训练参数数量。与使用 Adam 微调的 GPT-3 175B 相比,LoRA 可以将可训练参数的数量减少 10,000 倍,将 GPU 内存需求减少 3 倍。LoRA 在 RoBERTa、DeBERTa、GPT-2 和 GPT-3 上的模型质量与微调相当或更好,尽管可训练参数更少、训练吞吐量更高,并且与适配器不同,没有额外的推理延迟。
LoRA用来降低大语言模型下游任务训练的算力及内存资源需求量,降低预训练大模型产品化落地的成本。
LoRA基本思想
- 在原始PLM旁边增加一个旁路,做一个降维再升维的操作,来模拟所谓的intrinsic rank。
- 训练的时候固定PLM的参数,只训练降维矩阵A与升维矩阵B。
- 而模型的输入输出维度不变,输出时将BA与PLM的参数叠加。用随机高斯分布初始化A,用0矩阵初始化B,保证训练的开始此旁路矩阵依然是0矩阵。

下面是参数的更新表示:
其中,预训练的矩阵为 W 0 ∈ R d × k W_0 \in \mathbb{R}^{d \times k} W0∈Rd×k,它的更新表示为:
W 0 + Δ W = W 0 + B A , B ∈ R d × r , A ∈ R r × k W_0+\Delta W=W_0+B A, B \in \mathbb{R}^{d \times r}, A \in \mathbb{R}^{r \times k} W0+ΔW=W0+BA,B∈Rd×r,A∈Rr×k
其中秩 r < < m i n ( d , k ) r << min(d,k) r<<min(d,k)。
对于 h = W 0 x h=W_0x h=W0x ,它的前向计算变为:
h = W 0 x + Δ W x = W 0 x + B A x = ( W 0 + B A ) x h=W_0 x+\Delta W x=W_0 x+B A x=\left(W_0+B A\right) x h=W0x+ΔWx=W0x+BAx=(W0+BA)x
这种方式类似与残差连接,同时使用这个旁路的更新来模拟full finetuning的过程。
参考
https://zhuanlan.zhihu.com/p/514033873
相关文章:
2021-arxiv-LoRA Low-Rank Adaptation of Large Language Models
2021-arxiv-LoRA Low-Rank Adaptation of Large Language Models Paper: https://arxiv.org/abs/2106.09685 Code: https://github.com/microsoft/LoRA 大型语言模型的LoRA低秩自适应 自然语言处理的一个重要范式包括对通用领域数据的大规模预训练和对特定任务或领域的适应。…...
dockefile
文章目录 应用的部署MySql的部署Tomcat的部署 dockerfileDocker原理镜像的制作容器转镜像Dockerfile 服务编排Docker Compose Docker 私有仓库 应用的部署 搜索app的镜像拉去app的镜像创建容器操作容器中的app MySql的部署 容器内的网络服务和外部机器无法直接通信外部机器和…...
rpc入门笔记 0x02 protobuf的杂七杂八
syntax "proto3"; // 这是个proto3的文件message HelloRequest{ // 创建数据对象string name 1; // name表示名称,编号是1 }生成python文件 安装grpcio和grpcio-tools库 pip install grpcio #安装grpc pip install grpcio-tools #安装grpc tools生成…...
keepalived与nginx与MySQL
keepalived VRRP介绍 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。 集群组成后,可…...
Pod基础概念
Pod是kubernetes中最小的资源管理组件,Pod也是最小化运行容器化应用的资源对象。一个Pod代表着集群中运行的一个进程。kubernetes中其他大多数组件都是围绕着Pod来进行支撑和扩展Pod功能的,例如,用于管理Pod运行的StatefulSet和Deployment等控…...
WebDAV之π-Disk派盘 + 一叶日记
推荐一款操作方便、界面简洁,记录生活点滴与心情,具有诗情画意的日记软件。 一叶日记是一款记录日记的手机软件,在这款软件中它里面有着各种不同的工具,可以方便用户去随时随地的记录日记,同时里面还有着各种不同的主题背景,可以供用户去选择使用各种功能,给用户记录带…...
在IDEA运行spark程序(搭建Spark开发环境)
建议大家写在Linux上搭建好Hadoop的完全分布式集群环境和Spark集群环境,以下在IDEA中搭建的环境仅仅是在window系统上进行spark程序的开发学习,在window系统上可以不用安装hadoop和spark,spark程序可以通过pom.xml的文件配置,添加…...
无穷级数例子
计算 lim x → ∞ ( 1 n 1 1 n 2 1 n 3 . . . 1 n 2 n − 1 1 n 2 n ) 计算\lim _{x\to \infty} (\frac{1}{n1} \frac{1}{n2}\frac{1}{n3} ... \frac{1}{n2n-1} \frac{1}{n2n} ) 计算x→∞lim(n11n21n31...n2n−11n2n1) 解: lim x …...
C++构造函数和析构函数详解
一、构造函数 1、概念 构造函数是特殊的成员函数,需要注意的是,构造函数虽然名叫做构造,但是构造函数的主要任务并不是开空间创建对象,而是初始化对象。 2、特征 函数名与类名相同。无返回值对象实例化时编译器自动调用对应的…...
MySQL数据库干货_16—— SQL99标准中的查询
SQL99标准中的查询 MySQL5.7 支持部分的SQL99 标准。 SQL99中的交叉连接(CROSS JOIN) 示例: 使用交叉连接查询 employees 表与 departments 表。 select * from employees cross join departments;SQL99中的自然连接(NATURAL JOIN) 自然连接 连接只能发生在两…...
LLM大语言模型训练中常见的技术:微调与嵌入
微调(Fine-Tuning): 微调是一种用于预训练语言模型的技术。在预训练阶段,语言模型(如GPT-3.5)通过大规模的文本数据集进行训练,从而学会了语言的语法、语义和世界知识。然后,在微调阶…...
每日一练 | 网络工程师软考真题Day47
阅读以下关于Linux文件系统和Samba效劳的说明,答复以下【问题1】至【问题3】。 【说明】 Linux系统采用了树型多级目录来管理文件,树型结构的最上层是根目录,其他的所有目录都是从根目录生成的。通过Samba可以实现基于Linux操作系统的效劳器和…...
Kafka - 监控工具 Kafka Eagle:实时洞察Kafka集群的利器
文章目录 引言Kafka Eagle简介Kafka Eagle的特点Kafka Eagle的优势使用Kafka Eagle的步骤结论 引言 在现代大数据架构中,Apache Kafka已成为一个不可或缺的组件,用于可靠地处理和传输大规模的数据流。然而,随着Kafka集群规模的不断增长&…...
infercnv hpc东南服务器 .libpath 最终使用monocle2环境安装
安装不成功就用conda安装 conda install -c bioconda bioconductor-infercnv Installing infercnv There are several options for installing inferCNV. Choose whichever you prefer: Option A: Install infercnv from BioConductor (preferred) From within R, run the…...
【音视频 | Ogg】RFC3533 :Ogg封装格式版本 0(The Ogg Encapsulation Format Version 0)
😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…...
Hadoop时代落幕,开源大数据将何去何从?
Hadoop时代落幕,谁是大数据的新宠儿? 1、 1、...
作为一名程序员面临哪些挑战?应该如何应对?
在现今互联网失业潮的大环境下,每一位程序员都面临着被淘汰的风险,但逃避没有用,今天我们就来总结这些挑战与风险,找准自己的方向与定位,做好职业规划,希望这些信息能对大家有所帮助。 一、面临的挑战 老…...
flink的安装与使用(ubuntu)
组件版本 虚拟机:ubuntu-20.04.6-live-server-amd64.iso flink:flink-1.18.0-bin-scala_2.12.tgz jdk:jdk-8u291-linux-x64.tar flink 下载 1、官网:https://flink.apache.org/downloads/ 2、清华镜像:https://mirr…...
容器:软件性能测试的最佳环境
容器总体上提供了一种经济的和可扩展的方法来测试产品在实际情况下的性能,同时还能保持较低的资源成本和开销成本。 软件性能和可伸缩性是我们谈论应用程序开发时经常遇到的话题。一个很大的原因是应用程序的性能和可伸缩性直接影响其在市场上的成功。一个应用程序…...
【Qt控件之QMovie】详解
Qt控件之QMovies 概述公共类型属性公共函数公共槽函数信号静态公共成员示例使用场景 概述 QMovie类是一个方便的类,用于播放具有QImageReader的动画。此类用于显示没有声音的简单动画。如果您想显示视频和媒体内容,请改用Qt多媒体框架Qt Multimedia mul…...
如何通过CyberpunkSaveEditor实现赛博朋克2077存档编辑与自定义体验?
如何通过CyberpunkSaveEditor实现赛博朋克2077存档编辑与自定义体验? 【免费下载链接】CyberpunkSaveEditor A tool to edit Cyberpunk 2077 sav.dat files 项目地址: https://gitcode.com/gh_mirrors/cy/CyberpunkSaveEditor 赛博朋克2077存档修改是许多玩家…...
基于STM32LXXX的无线收发芯片(CMT2300A-EQR)应用程序设计
一、简介: CMT2300A是一款超低功耗,高性能,适用于各种127至 1020 MHz无线应用的OOK,(G)FSK射频收发器。它是 CMOSTEK NextGenRFTM射频产品线的一部分,这条产品线 包含完整的发射器,接收器和收发器。CMT2300A的高集成 度,简化了系统设计中所需的外围物料。高达+20 dBm及-…...
AI辅助开发新体验:让快马智能模型为你的动漫应用增添推荐引擎
AI辅助开发新体验:让快马智能模型为你的动漫应用增添推荐引擎 最近在开发一个动漫推荐小应用时,尝试了用AI来增强功能体验,整个过程比想象中顺利很多。这个项目主要实现了四个核心功能:动漫展示、智能问答、简介生成和友好交互。…...
2种开源工具解决方案解决Beyond Compare 5授权失效问题
2种开源工具解决方案解决Beyond Compare 5授权失效问题 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen Beyond Compare 5作为一款专业的文件比较与同步工具,在软件开发和数据管理领域…...
突破Cursor限制的5个实用技巧:从原理到实践
突破Cursor限制的5个实用技巧:从原理到实践 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your trial request…...
暗黑3效率革命:D3keyHelper全流程自动化实战指南
暗黑3效率革命:D3keyHelper全流程自动化实战指南 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面,可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper D3keyHelper是一款基于AutoHotkey&#…...
3步永久保存青春记忆:GetQzonehistory让QQ空间数据永不消逝
3步永久保存青春记忆:GetQzonehistory让QQ空间数据永不消逝 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你的数字回忆正在流失吗? 每天有超过10万条QQ空间动…...
每日一题 力扣 3418. 机器人可以获得的最大金币数 力扣 215. 数组中的第K个最大元素 动态规划 TopK问题 C++ 题解
文章目录力扣 3418. 机器人可以获得的最大金币数题目描述思路简介代码实现复杂度分析力扣 215. 数组中的第K个最大元素题目描述思路简介代码实现复杂度分析踩坑记录力扣 3418. 机器人可以获得的最大金币数 题目描述 力扣 3418. 机器人可以获得的最大金币数 示例 1࿱…...
AI 学习笔记:LLM 的部署与测试
关于 LLM 的本地部署 正如我之前在《[[关于 AI 的学习路线图]]》一文中所提到的,从学习的角度来说,如果我们要想切实了解 LLM 在计算机软件系统中所处的位置,以及它在生产环境中所扮演的角色,最直接的方式就是尝试将其部署到我们…...
OpenClaw自动化测试:Qwen3.5-9B持续集成实践
OpenClaw自动化测试:Qwen3.5-9B持续集成实践 1. 为什么选择OpenClaw做自动化测试 去年我在迭代一个NLP模型时,每次代码提交后都需要手动跑测试用例、截图对比结果、再发邮件给团队——这套流程每周要重复十几次。直到发现OpenClaw这个"能操作电脑…...
