论文简读 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空间限定在原有参数的低秩子空间下(该操作必然会影响模型性能,但是将通用模型迁移到专业领域本质就是在降低原有模型的能力范围),在低秩范围优化参数,然后在适用到原有参数空间。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于java SpringBoot和Vue uniapp的影楼摄影预约小程序

摘要 今天信息技术的发展很快,其足迹在我们的生活中随处可见。它影响着我们的衣食住行等各种需求。影响也在逐渐增加,逐渐渗透到各行各业,在这种背景下,经过实地考察后,为了让婚纱照管理更加高效方便,我决定…

gitlab 点击Integrations出现500错误

背景:在新服务器重新搭建了gitlab,并导入原来gitlab的备份,在项目中点击点击Integrations出现500错误。 解决方法:1.进入新服务器,将 /etc/gitlab/gitlab-secrets.json重命名为 /etc/gitlab/gitlab-secrets.json.bak …

JavaScript的内置类

一、认识包装类型 1.原始类型的包装类 JavaScript的原始类型并非对象类型,所以从理论上来说,它们是没有办法获取属性或者调用方法的。 但是,在开发中会看到,我们会经常这样操作: var message "hello world&q…

文件上传漏洞(CVE-2022-30887)

简介 多语言药房管理系统(MPMS)是用PHP和MySQL开发的,该软件的主要目的是在药房和客户之间提供一套接口,客户是该软件的主要用户。该软件有助于为药房业务创建一个综合数据库,并根据到期、产品等各种参数提供各种报告…

python超详细安装

目录 初始python获取python安装包python解释器安装pycharm编译器安装pycharm的简单使用(第一个hello world) 初始python Python 是一款易于学习且功能强大的编程语言。 它具有高效率的数据结构,能够简单又有效地实现面向对象编程。 Python简…

uni-app(微信小程序)图片旋转放缩,文字绘制、海报绘制

总结一下: 要进行海报绘制离不开canvas,我们是先进行图片,文字的拖拽、旋转等操作 最后再对canvas进行绘制,完成海报绘制。 背景区域设置为 position: relative,方便图片在当前区域中拖动等处理。添加图片&#xff0…

Python 图形化界面基础篇:添加标签( Label )到 Tkinter 窗口

Python 图形化界面基础篇:添加标签( Label )到 Tkinter 窗口 引言什么是 Tkinter 标签( Label )?步骤1:导入 Tkinter 模块步骤2:创建 Tkinter 窗口步骤3:创建标签&#x…

Mybatis---resultMap详解

目录 一、resultMap介绍 二、自定义映射关系 一、resultMap介绍 该标签的作用是自定义映射关系。 Mybatis可以将数据库结果封装到对象中,是因为结果集和对象属性名相同(也就是你写的pojo类型的参数名和数据库的字段名相同) 但是如果当他们不…

npm publish包报404,is not in the npm registry错误

1. 指定发布目标2. 登录npm,使用登录名发布包,包名命名原则“登录名/包名”,或 “包名” 3. 删除某一个版本npm unpublish pvfhv/eslint-config-prettier1.0.1 --force 删除后的版本不能重复使用,正式解释: Unfortun…

小米13Pro/13Ultra刷面具ROOT后激活LSPosed框架微X模块详细教程

喜欢买小米手机,很多是因为小米手机的开放,支持root权限,而ROOT对普通用户来说更多的是刷入DIY模块功能,今天ROM乐园小编就教大家如何使用面具ROOT,实现大家日常情况下非常依赖的微X模块功能,体验微X模块的…

makefile之链接静态库

make之链接静态库 (1)方法一: 指定静态库全路径和全名 APP_S_LIBS ./app_lib/libhost.a $(CC) $(CFLAGS) $(SRCOBJ) $(APP_S_LIBS) -o $(TARGET) APP_HEAD_DIR -I./include #APP_LIBS_DIR -L ./app_lib#APP_S_LIBS -lhost APP_S_LIBS ./app_lib/libhost.aCFLAGS $(APP_…

企业密码安全:ADSelfService Plus 提升密码管理的千里之行

在当今数字化时代,企业的密码安全变得至关重要。密码是保护企业敏感信息和数据的第一道防线,而有效的密码管理对于确保网络安全至关重要。ADSelfService Plus是一款强大的密码管理和自助服务解决方案,它在提供密码安全方面走在了前沿。 ADSel…

Ajax + Promise复习简单小结simple

axios使用 先看看老朋友 axios axios是基于Ajaxpromise封装的 看一下他的简单使用 安装:npm install axios --save 引入:import axios from axios GitHub地址 基本使用 axios({url: http://hmajax.itheima.net/api/province}).then(function (result…

普中 51 单片机点亮LED灯

普中 51 单片机 (STC89C52RC) LED / IO 将LED1进行闪烁操作 为啥要进行延时操作?依据人的肉眼余晖效应, 延时时间不能太短,否则就无法观察到 LED 闪烁 #include "reg52.h" typedef unsigned int u16; //对…

2023 最新前端面试题 (HTML 篇)

1. src 和 href 的区别 src 用于替换当前元素(引入),href 用于在当前文档和引用资源之间确立联系(引用) (1)src(source) 指向外部资源的位置,指向的内容将会嵌…

开开心心带你学习MySQL数据库之节尾篇

Java的JDBC编程 各种数据库,MySQL, Oracle, SQL Server在开发的时候,就会提供一组编程接口(API) API ~~ Application Programming Interface ~~ 应用程序编程接口 计算机领域里面的一个非常常见的概念, 给你个软件,你能对他干啥(从代码层次上的) 基于它提供的这些功能,就可以写…

【MySQL】表的操作

目录 MySQL表的操作 创建表 创建表案例 查看表结构 修改表 删除表 MySQL表的操作 表操作至少会涉及如下两类SQL语句: DDL(Data Definition Language)数据定义语言:比如建表、删表、该表、新增列、删除列等。DML&#xff08…

JavaWeb_LeadNews_Day11-KafkaStream实现实时计算文章分数

JavaWeb_LeadNews_Day11-KafkaStream实现实时计算文章分数 KafkaStream概述案例-统计单词个数SpringBoot集成 实时计算文章分值来源Gitee KafkaStream 概述 Kafka Stream: 提供了对存储与Kafka内的数据进行流式处理和分析的功能特点: Kafka Stream提供了一个非常简单而轻量的…

星际争霸之小霸王之小蜜蜂(十二)--猫有九条命

系列文章目录 星际争霸之小霸王之小蜜蜂(十一)--杀杀杀 星际争霸之小霸王之小蜜蜂(十)--鼠道 星际争霸之小霸王之小蜜蜂(九)--狂鼠之灾 星际争霸之小霸王之小蜜蜂(八)--蓝皮鼠和大…

使用navicat for mongodb连接mongodb

使用navicat for mongodb连接mongodb 安装navicat for mongodb连接mongodb 安装navicat for mongodb 上文mongodb7.0安装全过程详解我们说过,在安装的时候并没有勾选install mongodb compass 我们使用navicat去进行可视化的数据库管理 navicat for mongodb下载地址…