[论文阅读笔记77]LoRA:Low-Rank Adaptation of Large Language Models

news2024/11/25 16:20:05

1. 基本信息

题目论文作者与单位来源年份
LoRA: Low-Rank Adaptation of Large Language ModelsmicrosoftInternational Conference on Learning Representations2021

524 Citations

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

论文代码:https://github.com/microsoft/LoRA

2. 要点

研究主题问题背景核心方法流程亮点数据集结论论文类型关键字
微调大模型对比较大的模型进行全部参数的微调显得不太可行,例如GPT-3 175B,每介任务都部署一个单独的GPT-3,这个显得十分的昂贵。提出Low-Rank Adaptation,LoRA.冻结了预先训练的模型权值,并将可训练的秩分解矩阵注入变压器架构的每一层,大大减少了下游任务的可训练参数的数量。效果与全参微调相当或比全参要好,并且没有推理延迟。LoRa

目的主要是不想微调模型的所有参数,去满足下游任务,因为这个成本太大的,特别是大模型例如175B的GPT-3;同时,这个方法也有人提出了相关的方法,可是这些方法存在问题,通过扩展模型的深度或减少模型的可用序列长度来实现存在推理延迟。最重要的是质量不太行呀。

启发于:学习到的过度参数化模型实际上存在于一个较低的intrinsic dimension(内在维度)上。即是训练下游任务不需要这么多参数,采用降秩的方法来保留最内在的参数。

Measuring the Intrinsic Dimension of Objective Landscapes, Intrinsic Dimensionality Explains the Effectiveness of Language Model Fine-Tuning. arXiv:2012.13255 [cs], December 2020.

优点:

只共享一个大模型,对于不同的任务,只训练不同的A,B.

训练更有效,训练参数少;

在推理方面,线性合并,没有推理延迟;

LoRA与许多先前的方法正交,可以与其中许多方法结合,比如前缀调优。

3. 模型(核心内容)

3.1 形式表达

pCmZfhQ.png

3.2 模型结构

pCmASwF.png

W0 + ∆W = W0 + *BA, 其中 *B:d*r, A:r*k, r << min(d, k).

在训练的时候W0的冻结的。

pCmmbYF.png

Transformer中,自关注力有4个矩阵,MLP模块有2个矩阵;

这里实验只关心自关注力相关的权重矩阵。

4. 实验与分析

对比实验

Fine-Tuning (FT):传统的微调。FT变体,只训练最后两层(FTTop2);

Bias-only or BitFit: 只训练bias vectors;

**Prefifix-embedding tuning (PreEmbed):**在输入标记中插入特殊的标记;

Prefix-layer tuning (PreLayer):是对前缀嵌入调优的扩展;

Adapter tuning:在自注意模块(和MLP模块)和后续的剩余连接之间插入适配器层;

Adapter_H:Houlsby et al. (2019) ;

Adapter_L:Lin et al. (2020)

Adapter_P: Pfeiffer et al. (2021),

**Adapter_***D: *AdapterDrop (R¨uckl′e et al., 2020)

所有模型,限制相关的参数大小规模Θ

pCmNA5d.png

结果:
pCmUnY9.png

pCmUgYj.png

pCmByJe.png

训练参数量与性能对比实验:

pCmanHS.png

对于GPT-3随着样本的增加的效果:

pCma6u6.png

5. 代码

https://github.com/microsoft/LoRA

6. 总结

从效果来看,不论预训练模型的大小,LoRA采用更少的参数,可以达到全参模型的更好的效果。

7. 知识整理(知识点,要读的文献,摘取原文)

通过更少的参数去适应下游任务,主要是两个方向(adapter, soft Prompt):

adding adapter layers,optimizing some forms of the input layer activations

The major downside of fine-tuning is that the new model contains as many parameters as in the original model.

微调的主要缺点是,新模型包含的参数与原始模型一样多。

8. 参考文献

made by happyprince

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

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

相关文章

IMX6ULL裸机篇之SPI实验

一. SPI 实验 SPI实验&#xff1a;学习如何使用 I.MX6U 的 SPI 接口来驱动 ICM-20608&#xff0c;读取 ICM-20608 的六轴数据。 本文学习 SPI主控芯片的代码编写。其中&#xff0c;包括SPI工作模式设置&#xff0c;主从模式设置&#xff0c;时钟配置等实现。 二. SPI 主控芯…

EBU5476 Microprocessor System Design 知识点总结_2 Arm architecture

ARM架构 ARM是一个指令集&#xff0c;前面讲的几个汇编指令这些都算做指令。 ARM公司有意思的地方是&#xff0c;他们不做ARM设备&#xff0c;他们只设计指令集架构&#xff0c;然后授权&#xff08;知识产权核&#xff0c;IP核&#xff09;给其他半导体厂商做。 A&#xff…

大数据分析与机器学习:技术深度与实例解析【上进小菜猪大数据系列】

上进小菜猪&#xff0c;沈工大软件工程专业&#xff0c;爱好敲代码&#xff0c;持续输出干货。 大数据分析与机器学习已成为当今商业决策和科学研究中的关键组成部分。本文将深入探讨大数据技术的背景和原则&#xff0c;并结合实例介绍一些常见的大数据分析和机器学习技术。 …

chatgpt赋能python:Python如何拟合直线:使用最小二乘法

Python如何拟合直线&#xff1a;使用最小二乘法 在数据分析和机器学习领域&#xff0c;拟合一个最佳的直线是很常见和有用的。Python中有很多库可以拟合直线&#xff0c;但最小二乘法是其中最常用的一种方法。在本文中&#xff0c;我们将介绍最小二乘法的原理和如何在Python中…

【Goalng 开源项目】还在手写重复的 CRUD 吗?这个开源项目帮你解放双手

gormpher Gormpher 介绍快速开始WebObject 接口约定查询单条数据删除单条数据创建单条数据编辑单条数据条件查询多条数据 进阶WebObject 配置项动态接口函数Gorm 泛型函数Admin 源码handleEditObjecthandleQueryObject Gormpher 介绍 gormpher 是一个轻量级的 Golang 库 基于…

编译原理及应用期末复习

杂 3型文法 右线性文法 短语、直接短语、句柄 、判断是否是二义性文法 1、证明是二义性文法&#xff1a;证明存在一个句子有两颗不同的语法树 ① 画语法分析树 ② 、NFA、DFA K&#xff1a;所有状态&#xff0c;包含初始状态 Σ&#xff1a;终结字符集 M&#xff1a;状…

chatgpt赋能python:Python中替换字符串成int类型的方法

Python中替换字符串成int类型的方法 简介 在Python编程过程中&#xff0c;经常需要对字符串进行处理。有时候我们需要将字符串中的某些字符替换成int型数据&#xff0c;以便于进行一定的数值计算或其他操作。本文将介绍如何在Python中找出需要替换的字符&#xff0c;并将其转…

Python实现将txt文件转换成对应的excel或csv文件

前言 本文是该专栏的第29篇,后面会持续分享python的各种干货知识,值得关注。 工作上可能会遇到这样的情况,使用python将某个txt文本,按照行索引和列索引转换成对应的excel文件或者是csv文件。 那对于这样的需求,用python如何实现呢?跟着笔者直接往下看解决方法。(附完…

UART协议总结

UART&#xff08; Universal Asynchronous Receiver-Transmitter&#xff0c;通用异步收发器&#xff09;&#xff0c;是异步串行通信协议&#xff0c;用来传输串行数据。 1、UART原理说明 UART是全双工工作模式&#xff0c;其数据传输方法如下&#xff1a; 发送数据时&…

Hive 和 Oracle 中 Decode 函数的用法差异

前言 在数仓构建过程中,需要从业务那边进行数据的迁移!数仓大多数公司都是使用Hive,而业务那边使用的是Oracle数据库居多。最近就有个小伙伴在迁移的时候碰到了问题: 从报错来看,在使用 Decode() 函数的时候,传参有问题! 既然问题来了,我们就来解决一下呗,只有不断地…

基础知识学习---牛客网C++面试宝典(五)操作系统--第一节

1、本栏用来记录社招找工作过程中的内容&#xff0c;包括基础知识学习以及面试问题的记录等&#xff0c;以便于后续个人回顾学习&#xff1b; 暂时只有2023年3月份&#xff0c;第一次社招找工作的过程&#xff1b; 2、个人经历&#xff1a; 研究生期间课题是SLAM在无人机上的应…

LeetCode_Day6 | 四数相加||、赎金信、三数之和、四数之和!

LeetCode_哈希表 454.四数相加1.题目描述2.思路3.代码实现 383.赎金信1.题目描述2.暴力法3.哈希法思路代码实现 15.三数之和1.题目描述 454.四数相加 1.题目描述 详情leetcode链接 2.思路 解题步骤&#xff1a; 首先定义 map&#xff0c;key放a和b两数之和&#xff0c;valu…

神器CLIP:连接文本和图像,打造可迁移的视觉模型

2021年见证了vision transformer的大爆发&#xff0c;随着谷歌提出ViT之后&#xff0c;一大批的vision transformer的工作席卷计算机视觉任务。除了vision transformer&#xff0c;另外一个对计算机视觉影响比较大的工作就是Open AI在2021年1月份发布的DALL-E和CLIP&#xff0c…

chatgpt赋能python:一、Python在数据可视化中的应用

一、Python在数据可视化中的应用 Python是一种功能强大的编程语言&#xff0c;早已成为数据科学家和分析师的首选语言。数据可视化对于从数据中汲取信息和传达想法来说至关重要。Python也是数据可视化的理想工具之一。Python提供了许多强大的库&#xff0c;其中包括了一些流行…

( 2023版)互联网 Java 工程师面试题及答案汇总

最近很多粉丝朋友私信我说&#xff1a;熬过了去年的寒冬却没熬过现在的内卷&#xff1b;打开 Boss 直拒一排已读不回&#xff0c;回的基本都是外包&#xff0c;薪资还给的不高&#xff0c;对技术水平要求也远超从前&#xff1b;感觉 Java 一个初中级岗位有上千人同时竞争&#…

【野指针】

野指针 1. 指针是什么&#xff1f;2. 指针和指针类型2.1 指针-整数2.2 指针的解引用 3. 野指针3.1 野指针成因3.2 如何规避野指针 1. 指针是什么&#xff1f; 指针是什么&#xff1f; 指针理解的2个要点&#xff1a; 指针是内存中一个最小单元的编号&#xff0c;也就是地址平…

MySQL性能优化:慢查询优化

一、执行计划 执行计划的语法 在SQL查询的前面加上EXPLAIN关键字就行。比如: EXPLAIN select* from order_exp;执行效果如下。 &#xff08;一&#xff09;参数详解&#xff1a; 1、id 在一个大的查询语句中每个SELECT关键字都对应一个唯一的id。我们知道我们写的查询语句一…

【框架源码】Spring源码解析之BeanDefinition加载流程解析

观看本文之前&#xff0c;我们先思考一个问题&#xff0c;Spring是如何描述Bean对象的&#xff1f; Spring是根据BeanDefinition来创建Bean对象&#xff0c;BeanDefinition就是Spring中表示Bean定义。BeanDefinition用来存储Bean的相关信息&#xff0c;主要包括&#xff1a;Be…

【Linux问题】删除用户时错把rm当成userdel删除后,该如何解决彻底删除?

问题引入&#xff1a;之前创建的用户默认在home目录中&#xff0c;过了段时间以为是一个目录就直接使用rm删除了&#xff0c;结果在创建一个和之前用户同名的用户时发现报错&#xff1a;useradd: user ‘cjs’ already exists&#xff08;该用户已存在&#xff09;。 1、问题 …

chatgpt赋能python:Python怎么找出最大数的位置?

Python怎么找出最大数的位置&#xff1f; Python是一种高级编程语言&#xff0c;它的简单易学和适用范围广泛使其成为了很多开发者的首选语言。在Python中&#xff0c;有许多方便的内置函数可以帮助我们轻松地处理各种任务。其中之一是查找最大值&#xff0c;但是我们如何找出…