【深度学习】LoRA: Low-Rank Adaptation of Large Language Models,论文解读

news2024/11/19 17:26:07

文章:
https://arxiv.org/abs/2106.09685

文章目录

  • 摘要
  • 介绍
  • LoRA的特点
  • 什么是低秩适应矩阵?什么是适应阶段?
  • 低秩适应矩阵被注入到预训练模型的每一层Transformer结构中,这一步是如何做到的?

摘要

自然语言处理的一个重要范式是在通用领域数据上进行大规模预训练,并适应特定任务或领域。随着我们预训练更大的模型,全面微调,即重新训练所有模型参数,变得不太可行。以GPT-3 175B为例 - 部署独立的微调模型实例,每个模型有175B个参数,成本过高。我们提出了低秩适应,或LoRA,它冻结了预训练模型的权重,并将可训练的秩分解矩阵注入到Transformer架构的每一层中,大大减少了下游任务的可训练参数数量。与使用Adam微调的GPT-3 175B相比,LoRA可以将可训练参数数量减少10,000倍,GPU内存需求减少3倍。LoRA在RoBERTa、DeBERTa、GPT-2和GPT-3的模型质量上表现出与微调相当或更好的性能,尽管它具有更少的可训练参数、更高的训练吞吐量,并且与适配器不同,没有额外的推理延迟。我们还对语言模型适应中的秩缺失进行了实证研究,这揭示了LoRA的有效性。我们发布了一个软件包,可以方便地将LoRA与PyTorch模型集成,并在https://github.com/microsoft/LoRA 上提供我们的RoBERTa、DeBERTa和GPT-2的实现和模型检查点。

介绍

许多自然语言处理中的应用依赖于将一个大规模、预训练的语言模型适应到多个下游应用程序。这种适应通常通过微调来完成,微调会更新预训练模型的所有参数。微调的主要缺点是新模型包含与原始模型一样多的参数。随着每隔几个月训练更大的模型,这从仅仅是对于GPT-2(Radford等,b)或RoBERTa大型(Liu等,2019)的一个“不便”变成了对于具有1750亿个可训练参数的GPT-3(Brown等,2020)的一个关键的部署挑战。

许多人试图通过仅适应一些参数或为新任务学习外部模块来缓解这一挑战。这样,我们只需要在每个任务中存储和加载一小部分与任务相关的参数,除了预训练模型,这样在部署时可以大大提高操作效率。然而,现有的技术往往通过扩展模型深度或减少模型可用序列长度(Li&Liang,2021;Lester等,2021;Hambardzumyan等,2020;Liu等,2021)(第3节)引入推理延迟。更重要的是,这些方法往往无法与微调基线相匹配,提出了效率和模型质量之间的折衷。

我们受到Li等人(2018a)和Aghajanyan等人(2020)的启发,他们表明学习的过度参数化模型实际上驻留在低固有维度上。我们假设模型适应期间权重的变化也具有低“固有秩”,这导致了我们提出的低秩适应(LoRA)方法。LoRA允许我们通过优化适应期间密集层的秩分解矩阵间接地训练一些密集层,同时保持预训练权重冻结,如图1所示。以GPT-3 175B为例,我们展示了即使在完整秩(即d)高达12,288时,非常低的秩(即图1中的r可以是一或两)也足以满足要求,使LoRA在存储和计算方面都非常高效。LoRA具有几个关键优势。

  • 预训练模型可以被共享,并用于构建许多不同任务的小LoRA模块。我们可以冻结共享模型,并通过替换图1中的矩阵A和B来高效地切换任务,从而大大降低存储需求和任务切换开销。
  • LoRA使训练更加高效,并且在使用自适应优化器时将硬件门槛降低了最多3倍,因为我们不需要计算大多数参数的梯度或维护优化器状态。相反,我们只优化注入的、更小的低秩矩阵。
  • 我们简单的线性设计允许我们在部署时将可训练矩阵与冻结的权重合并,与完全微调的模型相比,不会引入推理延迟,因为构造上是如此。
  • LoRA与许多先前的方法是正交的,可以与其中许多方法结合使用,例如前缀调整。我们在附录E中提供了一个示例。

在这里插入图片描述

LoRA的特点

低秩适应矩阵:在适应阶段,LoRA引入了一个低秩矩阵,将其与预训练的权重矩阵相乘,以生成适应后的权重。这个低秩矩阵的引入使得适应过程中的参数数量大大减少,从而降低了计算成本和内存需求。

参数共享:LoRA允许大部分模型参数在不同任务之间进行共享,只有少量参数需要在适应特定任务时进行微调。这种参数共享的机制使得在部署时可以快速切换任务,而无需针对每个任务都维护独立的模型实例。

无额外推理延迟:在部署时,可以通过计算和存储适应后的权重矩阵来执行推理,而无需额外的推理延迟。当需要切换到另一个任务时,可以通过简单的操作来恢复原始的权重矩阵,实现快速任务切换。

与其他方法的结合:LoRA是一种灵活的适应策略,可以与其他高效适应方法结合使用,从而进一步提升模型性能。例如,可以将LoRA与前缀调整等方法相结合,实现更好的适应效果。

什么是低秩适应矩阵?什么是适应阶段?

低秩适应矩阵是指在LoRA(Low-Rank Adaptation)中引入的一种机制,用于在适应阶段对预训练模型进行调整以适应特定任务或领域。在适应阶段,低秩适应矩阵被注入到预训练模型的每一层Transformer结构中,以减少可训练参数的数量,从而降低计算成本和内存需求。

具体来说,适应阶段是指在将预训练模型应用于特定任务之前的阶段,其中通过引入低秩适应矩阵来对模型进行微调以适应任务的需求。在适应阶段,预训练模型的权重被冻结,而低秩适应矩阵则被训练以调整模型以适应新任务。通过这种方式,可以在不重新训练所有模型参数的情况下实现对模型的有效调整,从而提高了适应的效率和速度。

低秩适应矩阵是LoRA中的关键组成部分,用于在适应阶段对预训练模型进行调整,以实现高效的任务适应和模型优化。适应阶段是指在应用模型于特定任务之前的阶段,其中通过引入低秩适应矩阵来对模型进行微调以适应任务的需求。

低秩适应矩阵被注入到预训练模型的每一层Transformer结构中,这一步是如何做到的?

在LoRA中,低秩适应矩阵被注入到预训练模型的每一层Transformer结构中是通过以下步骤实现的:

  1. 选择注入层:首先,确定要将低秩适应矩阵注入的Transformer模型的每一层。通常,这些层包括Self-Attention层和前馈神经网络(Feed-Forward Neural Network)层。

  2. 构建低秩适应矩阵:为每个选择的层构建低秩适应矩阵。这些矩阵通常由两个较小的矩阵相乘得到,其中一个矩阵的维度较小,从而降低了参数数量。

  3. 将低秩适应矩阵与权重矩阵相乘:在适应阶段,将构建的低秩适应矩阵与每一层的权重矩阵相乘,以生成适应后的权重矩阵。这样可以在保持模型结构的同时,通过调整低秩矩阵的参数来实现对模型的微调。

  4. 训练低秩适应矩阵:在训练过程中,通过优化算法(如梯度下降)来调整低秩适应矩阵的参数,以最大程度地适应特定任务或领域的需求。这样可以在不改变预训练模型大部分参数的情况下,实现对模型的有效调整。

通过以上步骤,低秩适应矩阵可以被成功注入到预训练模型的每一层Transformer结构中,从而实现对模型的高效适应和优化。这种注入机制使得在适应阶段可以快速调整模型以适应特定任务的需求,同时保持模型的整体结构和质量。

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

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

相关文章

vue video 多个视频切换后视频不显示的解决方法

先说一下我这边的需求是视频需要轮播&#xff0c;一个人员有多个视频&#xff0c;左右轮播是轮播某个人员下的视频&#xff0c;上下切换是切换人员。 vue 代码 <el-carouselindicator-position"none"ref"carousel"arrow"always":interval&qu…

CSS 面试题汇总

CSS 面试题汇总 1. 介绍下 BFC 及其应 参考答案&#xff1a; 参考答案&#xff1a; 所谓 BFC&#xff0c;指的是一个独立的布局环境&#xff0c;BFC 内部的元素布局与外部互不影响。 触发 BFC 的方式有很多&#xff0c;常见的有&#xff1a; 设置浮动overflow 设置为 auto、scr…

uniapp 使用 z-paging组件

使用 z-paging 导入插件 获取插件进行导入 自定义上拉加载样式和下拉加载样式 页面结构 例子 搭建页面 <template><view class"content"><z-paging ref"paging" v-model"dataList" query"queryList"><templ…

笔记-电感充放电过程状态记录

描述&#xff1a;电感充放电过程状态记录 为加深对电感充放电的理解&#xff0c;特做一次记录。 目录 一、准备工作二、电感状态记录1、电感刚开始充电瞬间2、电感充电期间3、电感充电完毕4、电感开始放电瞬间5、电感放电完毕6、电感充放电完整记录 一、准备工作 1、在线平台…

C语言知识复习及拓展

复习内容&#xff1a; 指针、数组、关键字、内存布局、堆和栈的区别、队列、链表。 关键字 1、数据类型关键字 A基本数据类型&#xff08;5个&#xff09; void&#xff1a; 是用来修饰函数的参数或返回值的&#xff0c;代表函数没有参数或没有返回值。 char&#xff1a;用…

飞书被破了,文档可复制可下载

使用过飞书的用户都知道&#xff0c;许多文档、表格被设置权限&#xff0c;只能阅读&#xff0c;不能复制&#xff0c;更别说下载&#xff0c;不方便资料保存。 一、破解 今天无意中发现一个软件&#xff0c;居然可以复制、下载飞书文档&#xff0c;直接看效果&#xff0c;CTR…

开源大语言模型作为 LangChain 智能体

概要 开源大型语言模型 (LLMs) 现已达到一种性能水平&#xff0c;使它们适合作为推动智能体工作流的推理引擎: Mixtral 甚至在我们的基准测试中 超过了 GPT-3.5&#xff0c;并且通过微调&#xff0c;其性能可以轻易的得到进一步增强。 引言 针对 因果语言建模 训练的大型语言模…

Canal + Kafka 同步 MySQL 数据到 Redis

解决缓存和数据库一致性问题 一般来说&#xff0c;缓存中的数据没什么问题&#xff0c;但是数据库更新后&#xff0c;就容易出现缓存&#xff08;Redis&#xff09;和数据库&#xff08;MySQL&#xff09;间的数据一致性问题。由于写和读是并发的&#xff0c;没法保证顺序&…

java_URL中的URL编码转换成中文

问题描述 上传文件后&#xff0c;获得的URL中包含了URL编码&#xff0c;导致在前端展示文件名时出现乱码 最终效果 解决思路&#xff1a; 1、先按照英文逗号切割URL 2、截取字符串中URL编码部分(含后缀名) 3、使用正则匹配截取到的字符串中的URL编码 4、转换URL编码为中文&a…

创建一个基于Node.js的实时聊天应用

在当今数字化社会&#xff0c;实时通讯已成为人们生活中不可或缺的一部分。无论是在社交媒体平台上与朋友交流&#xff0c;还是在工作场合中与同事协作&#xff0c;实时聊天应用都扮演着重要角色。与此同时&#xff0c;Node.js作为一种流行的后端技术&#xff0c;为开发者提供了…

1TB! 台湾最新倾斜摄影3DTiles数据分享

之前的文章分享了546GB香港倾斜摄影3DTiles数据&#xff0c;主要是验证倾斜模型3DTiles转换工具的生产效率和数据显示效率&#xff0c;结果对比可以看出无论是数据生产速度以及成果数据显示效率上&#xff0c;都优于其他两种技术路线。最近使用倾斜模型3DTiles工具生产了台湾地…

Spring 手动实现Spring底层机制

目录 一、前言 二、Spring底层整体架构 1.准备工作 : 2.架构分析 : &#xff08;重要&#xff09; 3.环境搭建 &#xff1a; 三、手动实现Spring容器结构 1.自定义注解 : 1.1 Component注解 1.2 Scope注解 2.自定义组件 : 3.自定义用于封装Bean信息的BeanDefinition类&a…

STM32 SPI(基础概念)

文章目录 前言一、SPI通信协议概述二、SPI硬件框图和软件层次三、SPI通信时序四、SPI控制器总结 前言 本篇文章来给大家讲解一个非常重要的通信协议SPI&#xff0c;SPI在MCU和外设之间的通信用的是非常多的&#xff0c;这篇文章将带大家先来学习SPI的一些概念。 一、SPI通信协…

alist修改密码(docker版)

rootarmbian:~# docker exec -it [docker名称] ./alist admin set abcd123456 INFO[2024-02-20 11:06:29] reading config file: data/config.json INFO[2024-02-20 11:06:29] load config from env with prefix: ALIST_ INFO[2024-02-20 11:06:29] init logrus..…

《TCP/IP详解 卷一》第3章 链路层

目录 3.1 引言 3.2 以太网 3.3 全双工 省点 自动协商 流量控制 3.4 网桥和交换机 3.5 WiFi 3.6 PPP协议 3.6.1 PPP协议流程 3.7 环回 3.8 MTU和路径MTU 3.9 隧道基础 3.9.1 GRE 3.9.2 PPTP 3.9.3 L2TP 3.10 与链路层相关的攻击 3.11 总结 3.1 引言 城域网&…

2024年1月京东洗衣机行业数据分析:TOP10品牌销量销额排行榜

鲸参谋监测的京东平台1月份洗衣机市场销售数据已出炉&#xff01; 根据鲸参谋电商数据分析平台显示&#xff0c;今年1月份&#xff0c;京东平台上洗衣机的销量约160万件&#xff0c;环比上个月增长约42%&#xff0c;同比去年下滑7%&#xff1b;销售额约28亿元&#xff0c;环比…

Java零基础 - 三元运算符

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一个人虽可以走的更快&#xff0c;但一群人可以走的更远。 我是一名后…

Golin 弱口令/漏洞/扫描/等保/基线核查的快速安全检查小工具

下载地址&#xff1a; 链接&#xff1a;https://pan.quark.cn/s/db6afba6de1f 主要功能 主机存活探测、漏洞扫描、子域名扫描、端口扫描、各类服务数据库爆破、poc扫描、xss扫描、webtitle探测、web指纹识别、web敏感信息泄露、web目录浏览、web文件下载、等保安全风险问题风险…

强大的文本绘图——PlantUML

PlantUML是一款开源工具&#xff0c;它允许用户通过简单的文本描述来创建UML图&#xff08;统一建模语言图&#xff09;。这种方法可以快速地绘制类图、用例图、序列图、状态图、活动图、组件图和部署图等UML图表。PlantUML使用一种领域特定语言&#xff08;DSL&#xff09;&am…

通过platform总线驱动框架编写LED灯的驱动,编写应用程序测试,发布到CSDN

效果图 设备树代码 myplatform{compatible "hqyj,myplatform";led1-gpio<&gpioe 10 0>;led2-gpio<&gpiof 10 0>;led3-gpio<&gpioe 8 0>; interrupt-parent <&gpiof>;interrupts<9 0>;reg<0X12345678 …