论文简读 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.hqwc.cn/news/102836.html

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

相关文章

服务器中了Malloxx勒索病毒应该怎么办?勒索病毒解密,数据恢复

Malloxx勒索病毒是一种近年来发现的电脑病毒,它以加密用户电脑中的重要文件数据为手段,威胁用户并以此勒索钱财。这种病毒的传播方式多种多样,可以通过电子邮件、恶意网站、网络下载等方式进行传播。一旦电脑被感染,病毒会立即锁住…

数据结构之队列的实现(附源码)

目录 一、队列的概念及结构 二、队列的实现 拓展:循环队列 三、初学的队列以及栈和队列结合的练习题 一、队列的概念及结构 队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出FIFO(Fi…

processflow流程图多人协作预热

前言 在线上办公如火如荼的今天,多人协作功能是每个应用绕不开的门槛。processflow在线流程图(前身基于drawio二次开发)沉寂两年之久,经过长时间设计开发,调整,最终完成了多人协作的核心模块设计。废话不多…

基于网络表示学习的 新闻推荐算法研究与系统实现

摘要 第1章绪论 新闻推荐通常是利用用户的阅读行为和习惯、阅读选择和爱好等信息,为 用户推荐新闻内容。新闻推荐能够减少用户在数量庞大数据信息中获取信息的 时间消耗,从而能够缓解“信息过载[7]”的难题。以文本为内容的新闻,和商品、 电影、短视频等推荐系统相比,新闻推…

【LeetCode】202. 快乐数 - hash表 / 快慢指针

目录 2023-9-5 09:56:152023-9-6 19:40:51 202. 快乐数 2023-9-5 09:56:15 关键是怎么去判断循环: hash表: 每次生成链中的下一个数字时,我们都会检查它是否已经在哈希集合中。 如果它不在哈希集合中,我们应该添加它。如果它在…

966SEO扫地僧站群·万能HTML模板[V1.9.1]

扫地僧站群万能HTML模板是一款站点管理软件,其主要特点是可以将原始的html模板放入程序中,无需编写任何标签,程序会全自动替换处理,从而快速构建出一个完整的网站,这种模式相对于传统的网站建设方式更加快速、简单,同时可以大幅度降低网站建设的成本和难度.服务器及域名量的配置…

PaddleOCR学习笔记2-初步识别服务

今天初步实现了网页&#xff0c;上传图片&#xff0c;识别显示结果到页面的服务。后续再完善。 采用flask paddleocr bootstrap快速搭建OCR识别服务。 代码结构如下&#xff1a; 模板页面代码文件如下&#xff1a; upload.html : <!DOCTYPE html> <html> <…

[git] 如何克隆仓库,进行项目撰写,并绑定自己的远程仓库

摘要&#xff1a;删除.git文件&#xff0c;才可重新绑定远程仓库。 具体步骤&#xff1a; 文件夹右键&#xff0c;进入”Git Bash Here“执行命令 1. 执行 ”git clone 仓库地址“&#xff0c;克隆仓库 2. 在生成的仓库中&#xff0c;删除 .git 文件 3. git init 初始化仓库…

Leetcode.174 地下城游戏

题目链接 Leetcode.174 地下城游戏 hard 题目描述 恶魔们抓住了公主并将她关在了地下城 d u n g e o n dungeon dungeon 的 右下角 。地下城是由 m x n 个房间组成的二维网格。我们英勇的骑士最初被安置在 左上角 的房间里&#xff0c;他必须穿过地下城并通过对抗恶魔来拯救公…

Spring MVC入门必读:实现增删改查

目录 引言 一、前期准备 1.1.搭建Maven环境 1.2.导入pom.xml依赖 1.3.导入配置文件 ①jdbc.properties ②generatorConfig.xml ③log4j2.xml ④spring-mybatis.xml ⑤spring-context.xml ⑥spring-mvc.xml ⑦修改web.xml文件 二、逆向生成增删改查 2.1.导入相关u…

【数据结构与算法系列5】螺旋矩阵II (C++ Python)

给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;[[1,2,3],[8,9,4],[7,6,5]]示例 2&#xff1a; 输入&#xff1a;n 1 输出&am…

Linux-Shell整理集合

Shell变量 参考文章&#xff1a; Shell脚本中变量的使用 shell语法之 , ‘ ‘ , {},, ,‘‘,(),$(())四种语法含义 参考文章&#xff1a; shell语法之 , ‘ ‘ , {},, ,‘‘,(),$(())四种语法含义 grep常用用法 Shell awk命令详解 grep 跟awk连着用&#xff1a; 获取某程序的…