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

论文简读 LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS

论文地址:https://arxiv.org/pdf/2106.09685.pdf
项目地址:https://github.com/microsoft/LoRA
全文翻译地址:https://zhuanlan.zhihu.com/p/611557340 本来想自行翻译的,但最近没有空

1、关键凝练

1.1 LORA是什么?

LORA是一个解决大模型finetune的技术。现行的大模型(如GPT3,参数量175B)的训练微调成本比较高,一次训练需要几个月才能完成,这提高了nlp大模型的准入门槛。大模型finetune的目的是为了将通用领域的大模型能力迁移到专业领域(下游应用环境), 因为直接在专业领域训练nlp模型存在难以收敛的风险(nlp的专业领域应用需要通用领域的词汇嵌入支持提供初级词汇理解能力,在通用领域的大数据规模下训练后可以增强词汇嵌入能力,再进行专业领域训练。

通俗来说,LORA技术就像一个化妆技术。感觉就像一个人颜值不高(大模型到专业领域精度不足),想去做整容手术又没钱(进行迁移学习达不到硬件门槛),只能通过化妆来改变自己(对部分参数进行改进训练) .

1.2 LORA解决了什么?

1、LORA有效的降低了大模型finetune的成本,将其硬件进入门槛降低了3倍,并提升了训练效率。现行的大模型finetune技术主要有adapter layers和optimizing Some forms of the input layer activations, 这两种形式修改了原有大模型的网络细节,增加了模型参数,导致推理延时。

2、LORA技术也解决了模型部署时的能力热切换,在模型运行时仅需替换掉部分微调的参数即可实现大模型能力的切换。大摸型参数量大,如1750亿参数的GPT3的模型文件估算有800Gb(fp32),哪怕在ddr5内存中(90GB/s=12.25Gb/s),也得一分钟上才能实现切换。而LORA切换模型仅涉及其优化部分的参数替换,仅为35M

1.3 LORA的技术方案?

1、LORA认为现有的大模型针对专业领域是一个过度参数化模型参数冗余模型,实际上存在于一个较低的内在维度可以表示这个这个大模型的全部维度即存在一个低秩矩阵可指代原有的参数。LORA对低
秩参数进行训练,冻结模型的原始参数,在训练结束后再将训练好的低秩矩阵叠加到原来的参数中。
类似于矩阵的奇异值分解,只对分解后的矩阵进行训练;然后将训练好的矩阵做乘法,得到最新的全尺寸参数,并叠加到原模型中。

下图既为ROLA的技术方案,其中蓝色区域表示为冻结的原始参数,橙色部分为LORA的新增参数部分(其中的d为为原始参数维度),其中A的初始化为高斯分布,B的初始化为全0(其中的r为原始参数的低秩数)。原始的参数训练量为d x d,ROLA技术的参数训练量为d x 2r。在LORA的实际操作中,BA得到的矩阵W`是通过缩放倍数后才接叠加到原有参数中
在这里插入图片描述

2、ROLA将参数冗余的研究目标具体到Transformer layer中,在其实验中主要针对attention模块,其对Wk、Wq、Wv和Wo都进行了低秩重构训练。其表明优化的的参数越靠近输出效果越好。LORA的实验效果表明,其只是在训练过程中放大了对下游任务有用的特征,而不是预训练模型中的主要特征。

2、原文关键

2.1 低秩参数化更新矩阵

内容参考自 https://zhuanlan.zhihu.com/p/611557340
在这里插入图片描述
原始的迁移学习是对 W 0 W_0 W0进行调优训练,其调优结果部分被定义为 ∆ W ∆W W ∆ W ∆W W W 0 W_0 W0具有相同的参数量。LORA将 ∆ W ∆W W分解为BA两个部分,假设原始W的维度为d x k,内在秩为r,则训练BA的参数量为 d x r + r x k = r x (d + k)。

2.2 LORA的实施效果

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

2.3 低秩结构的有效性

低秩结构在机器学习中非常常见。许多机器学习问题具有一定的内在低秩结构。此外,众所周知,对于许多深度学习任务,尤其是那些具有严重过参数化神经网络的任务,经过训练后,学习的神经网络将具有低秩属性。以前的一些工作甚至在训练原始神经网络时明确施加了低秩约束;然而,据我们所知,这些工作中没有一项考虑低秩更新到冻结模型以适应下游任务。在理论文献中,已知当基础概念类具有一定的低秩结构时,神经网络优于其他经典学习方法,包括相应的(有限宽度)神经正切核。Allen Zhu&Li(2020b)的另一个理论结果表明,低秩的适应对对抗性训练很有用。

这里所透露出的低秩结构与Criss-Cross Attention有点类似,其也与深度可分卷积存在某些相似。将模型的fineturn空间限定在原有参数的低秩子空间下(该操作必然会影响模型性能,但是将通用模型迁移到专业领域本质就是在降低原有模型的能力范围),在低秩范围优化参数,然后在适用到原有参数空间。

相关文章:

论文简读 LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS

论文地址:https://arxiv.org/pdf/2106.09685.pdf 项目地址:https://github.com/microsoft/LoRA 全文翻译地址:https://zhuanlan.zhihu.com/p/611557340 本来想自行翻译的,但最近没有空 1、关键凝练 1.1 LORA是什么? …...

23062网络编程day7

网络聊天室编写&#xff08;基于UDP&#xff09; 服务器 #include <myhead.h>#define PORT 8888 //端口号&#xff1a;接收方绑定的端口号 #define IP "192.168.114.56" //本机IP#define ERR_MSG(msg) do{\fprintf(stderr, "__%d__:&…...

Java面向对象学习笔记-2

前言 本文介绍了Java中类的定义和对象的创建的基本概念。我们通过示例代码演示了如何定义不同类型的类&#xff0c;包括管理员信息、顾客信息、学校信息和访客信息&#xff0c;并展示了如何创建这些类的对象以及如何访问它们的属性和方法。这些示例有助于理解面向对象编程的基…...

入栏需看——学习记忆

记忆方法千千种&#xff0c;本栏意在梳理其中道道来&#xff0c;旦有小得&#xff0c;肥肠幸耶。从不同角度分析学习记忆。 逻辑篇 有逻辑 用思维导图 思维导图记忆有逻辑的文本/内容 理论 巧记书本结构–思维导图 模仿 HCIE-Cloud Computing LAB备考第一步&#xff1a…...

[C++]杨辉三角

目录 题目 解题思路 代码实现 获取数字 打印函数 主函数 全部代码 运行结果 题目 给定一个非负整数numRows &#xff0c;生成「杨辉三角」的前numRows行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 解题思路 第k列的第i个数字的值第k-1列的(…...

算法通关村十三关-白银:数字与数学高频问题

有很多解题技巧&#xff0c;需要持续积累 1.数组实现加法专题 如果让你用数组来表示一个数&#xff0c;如何实现加法呢&#xff1f; 理论上仍然从数组末尾向前挨着计算就行了&#xff0c;但是实现的时候会发现很多问题&#xff0c;例如需要进位该怎么办&#xff1f; 进一步拓…...

【Linux】线程安全-互斥同步

文章目录 线程安全问题的引入线程互斥互斥概念互斥锁互斥锁的计数器当中如何保证原子性互斥锁基础API初始化互斥锁变量函数动态初始化静态初始化 加锁函数阻塞加锁非阻塞加锁带有超时时间的加锁 解锁函数销毁互斥锁函数 线程同步线程同步的必要性条件变量条件变量的使用原理条件…...

1.初识爬虫

爬虫是批量模拟网络请求的程序&#xff0c;想百度谷歌这种搜索类网站本质上就是爬虫 使用爬虫的时候不应该对别人的网站有严重的影响&#xff0c;比如你爬的频率太高了&#xff0c;让人家的网站崩溃了。不应该爬取网页上显示不到的内容&#xff0c;比如有一个直播的网站&#…...

TLA+学习记录1——hello world

0x01 TLA是个好工具 编程人员一个好习惯是凡事都想偷懒&#xff0c;当然是指要科学地偷懒&#xff0c;而不是真的偷懒。一直想找到一种能检验写出的代码&#xff0c;做出的设计是否真的完全正确&#xff0c;而不是靠经验检视、代码Review、反复测试去检验。因为上述方法不管怎…...

基于QWebEngine实现无头浏览器

无头浏览器 无头浏览器&#xff08;Headless Browser&#xff09;是一种没有图形用户界面&#xff08;GUI&#xff09;的浏览器。它通过在内存中渲染页面&#xff0c;然后将结果发送回请求它的用户或程序来实现对网页的访问&#xff0c;而不会在屏幕上显示网页。这种方式使得无…...

编译Micropython固件For树莓派Raspberry Pi Pico

1. 前言 由于想把自己编写的py文件打包的固件中&#xff0c;所以记录下如何编译micropython固件和打包。 2. 编译 最简单的方式就是在你的树莓派上进行&#xff0c;我用的是RP Pi2 下载所需文件&#xff1a; $ cd ~/ $ mkdir pico $ cd pico $ git clone -b pico https://gi…...

基于googlenet网络的动物种类识别算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ................................................................. % 获取输入层的尺寸 Inp…...

如何用Jmeter编写脚本压测?

随着商业业务不断扩张&#xff0c;调用adsearch服务频率越来越高&#xff0c;所以这次想做个压测&#xff0c;了解目前多少并发量可以到达adsearch服务的界值。 这次选用的jmeter压测工具&#xff0c;压测思路如图&#xff1a; 一、日志入参 日志选取的adsearch 的 getads部分…...

SpingMVC之拦截器使用详解

拦截器概述 SpringMVC的处理器拦截器,类似于Servlet开发中的过滤器Filter&#xff0c;用于对处理器进行预处理和后处理。 过滤器和拦截器区别 过滤器&#xff1a;依赖于servlet容器。在实现上基于函数回调&#xff0c;可以对几乎所有请求进行过滤&#xff0c;但是缺点是一个过…...

motionface respeak新的aigc视频与音频对口型数字人

在当今的数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;正在逐渐渗透到我们生活的方方面面。其中&#xff0c;AI技术在视频制作和处理领域的应用也日益广泛。本文将探讨如何利用AI技术实现视频中人脸与音频同步对口型的方法&#xff0c;旨在进一步丰富视频制作的效…...

【计算机网络】 静态库与动态库

文章目录 静态库实践使用方法总结 动态库实践使用方法总结 静态库与动态库的优缺点静态库优点缺点 动态库缺点优点 库有两种&#xff1a;静态库&#xff08;.a、.lib&#xff09;和动态库&#xff08;.so、.dll&#xff09;。所谓静态、动态是指链接。静态库是将整个库文件都拷…...

web端调用本地摄像头麦克风+WebRTC腾讯云,实现直播功能

目录 关于直播直播流程直播视频格式封装推流和拉流 获取摄像头和麦克风权限navigator.getUserMedia()MediaDevices.getUserMedia() WebRTC腾讯云快直播 关于直播 视频直播技术大全、直播架构、技术原理和实现思路方案整理 直播流程 视频采集端&#xff1a; 1、视频采集&#…...

React笔记(八)Redux

一、安装和配置 React 官方并没有提供对应的状态机插件&#xff0c;因此&#xff0c;我们需要下载第三方的状态机插件 —— Redux。 1、下载Redux 在终端中定位到项目根目录&#xff0c;然后执行以下命令下载 Redux npm i redux 2、创建配置文件 在 React 中&#xff0c;…...

数据库 | 数据库概述、关系型数据库、非关系型数据库

目录&#xff1a; 1.数据库&#xff1a;1.1 数据库的含义1.2 数据库的特点 2.数据表3.数据库管理系统4.数据库系统5.关系型数据库 和 非关系型数据库&#xff1a;5.1 关系型数据库5.2 关系型数据库“优势”5.3 非关系型数据库 6.关系型数据库 和 非关系型数据库 的“区别” 1.数…...

【备战csp-j】 csp常考题目详解(4)

四.数值转换与编码 1. 十进制数 11/128 可用二进制数码序列表示为( ) 。 A.1011/1000000 B.1011/100000000 C.0.001011 D.0.0001011 答案&#xff1a;D 解析&#xff1a;暂时未找到解决方法&#xff0c;以后会解决。 2. 算式(2047)10 &#xff0d; (3FF)16 &#xff0b; …...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

装饰模式(Decorator Pattern)重构java邮件发奖系统实战

前言 现在我们有个如下的需求&#xff0c;设计一个邮件发奖的小系统&#xff0c; 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式&#xff08;Decorator Pattern&#xff09;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其…...

React Native 导航系统实战(React Navigation)

导航系统实战&#xff08;React Navigation&#xff09; React Navigation 是 React Native 应用中最常用的导航库之一&#xff0c;它提供了多种导航模式&#xff0c;如堆栈导航&#xff08;Stack Navigator&#xff09;、标签导航&#xff08;Tab Navigator&#xff09;和抽屉…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...