(2024,LoRA-the-Explorer,并行 LoRA,合并延迟)使用并行 LoRA 从头开始训练神经网络

news2024/11/15 7:03:41

Training Neural Networks from Scratch with Parallel Low-Rank Adapters

公和众和号:EDPJ(进 Q 交流群:922230617 或加 VX:CV_EDPJ 进 V 交流群)

目录

0. 摘要

2. 基础

3. 方法

3.1. 动机:多头合并的视角

3.2. LoRA soup:延迟 LoRA 合并

3.3. LoRA-the-Explorer:并行低秩更新

4. 实验


0. 摘要

深度学习模型的可扩展性在根本上受到计算资源、内存和通信的限制。尽管像低秩适应(LoRA)这样的方法降低了模型微调的成本,但其在模型预训练中的应用仍然相对未被深入探讨。本文探讨了将 LoRA 扩展到模型预训练,识别了在这一背景下标准 LoRA 的固有约束和局限性。我们引入了 LoRA-the-Explorer(LTE),这是一种新颖的双层优化算法,旨在实现在计算节点上并行训练多个低秩头,从而减少频繁同步的需求。我们的方法在使用各种视觉数据集的视觉 transformer 上进行了大量实验,表明 LTE 在标准预训练中具有竞争力。

项目页面:minyoungg.github.io/LTE

2. 基础

3. 方法

为了理解使用 LoRA 进行预训练所需的条件,我们首先确定了一种具体的情景,在这种情景下,可以使用 LoRA 恢复标准训练性能。这为我们开发算法提供了指导,该算法保持了 LoRA 的内存效率。

尽管低秩适应器(LoRA)已被证明是一种有效的微调方法,但在预训练时它们存在明显的限制。正如图 2 所示,使用 LoRA 参数化的模型表现出比使用标准优化训练的模型更差的性能。这种性能差距并不令人惊讶,因为它可以归因于 LoRA 中固有的秩约束。具体而言,对于参数 W∈ R^(m×n),LoRA 基本上无法恢复超过秩 r < min(m, n) 的权重。当然,也有一些例外情况,偶然情况下,一个解存在于初始化的低秩邻域内。然而,在附录 B 中,我们观察到梯度的秩在训练过程中往往会增加,暗示了高秩更新的必要性。

3.1. 动机:多头合并的视角

本节提供关于为什么 LoRA 并行使用多个头可以达到标准预训练性能的直观解释。

正如图 2 所示,将 LoRA 的秩 r 提高到与权重矩阵 W ∈ R^(m×n) 的秩 min(m, n) 相同足以复制标准预训练性能,尽管在附录 B.2 中详细说明了其中不同的内在动态。然而,这种方法会损害低秩适应器的内存效率。

因此,我们调查通过并行使用多个低秩适应器来达到等效性能的可能性。我们的动机利用了这些适应器的线性特性来引入并行化的简单想法。

给定形式为 BA ∈ R^(d1×d2) 的矩阵,其中 B ∈ R^(d1×d) 和 A ∈ R^(d×d2),可以将乘积表示为两个低秩矩阵的和:B1A1+B2A2。为了证明这一点,让 bi 和 ai 分别是 B 和 A 的列向量。然后可以构造 B1 = [b_1, . . . , b_[d/2]],B2 = [b_[d/2], . . . , b_d],以及 A1 = [a_1,. . . ,a_[d/2]]^T,A2 = [a_[d/2],. . . ,a_d]^T。这种分解允许通过较低秩矩阵的线性组合来逼近高秩矩阵。通过从秩-1 矩阵的线性组合开始,可以得出相同的结论。这构成了一种新颖的多头 LoRA 参数化方法,我们将其用作与我们最终方法进行比较的基线之一。

Multi-head LoRA(MHLoRA):给定矩阵 W ∈ R^(m×n) 和常数 N,多头 LoRA 将权重参数化为N 个低秩矩阵 Bn 和 An 的线性组合:

多头 LoRA 将全秩权重重新参数化为低秩权重的线性组合。

现在,我们将指出一个微不足道的观察结果,即单个并行 LoRA 头可以近似多头 LoRA 的单个步骤的轨迹,前提是定期将并行 LoRA 头合并到完整权重中。

对所有 LoRA 参数使用相同的秩 r,单个并行 LoRA 头(用 ˆ· 表示)的动态与多头 LoRA 等效: 

等于 ^Bn​^An​,或

时,等式 3 成立;这里我们使用了一种简写符号,表示求和是对所有 LoRA 参数(除了索引n)进行的。我们假设方程两边的参数被初始化为相同的值:对于所有 n,^An​ = An​ 且 Bn ​= ^Bn​。

第一种情况是秩亏的,我们知道它无法恢复原始的模型性能。后一种情况要求 ^W 在每次迭代中累积所有 LoRA 参数的信息。因此,如果我们可以在每次迭代中应用合并运算符,我们就可以恢复精确的更新。

这个相当简单的观察意味着我们可以恢复多头 LoRA 参数化模型的精确梯度更新,我们观察到这些更新在各种任务中与预训练性能相匹配(请参见附录 D)。此外,在分布式设置中,只需在设备之间传递 LoRA 参数/梯度,这通常是原始模型大小的一小部分,这使其成为在计算节点之间的互连速度有限的情况下的良好选择。

3.2. LoRA soup:延迟 LoRA 合并

为了进一步降低 LTE 的通信成本,我们延伸并结合了局部更新(McMahan等,2017)和模型平均(Wortsman等,2022;Yadav等,2023;Ilharco等,2023)的思想。我们允许 LoRA 参数在合并运算符之前独立训练更长的时间,而不是每次迭代都进行合并。这相当于使用 LoRA 参数的过时估计(stale estimates)

其中 ′ 表示参数的过时估计。

每次迭代合并确保表示不会偏离预期的更新。虽然使用过时的估计会放宽这种等价性,但我们观察到它仍然可以匹配表 1 中所示的标准训练性能。然而,随着估计变得不准确,优化轨迹确实会偏离多头 LoRA 的优化路径。我们在图 4 中量化了这种偏差。这种偏离并不意味着模型不能优化;相反,它表明优化轨迹将偏离多头 LoRA 的轨迹。在这项工作中,我们选择了简单的平均方法,将更复杂的合并方法留给未来的工作,例如 (Karimireddy等,2020;Matena&Raffel,2022;Yadav等,2023)。

3.3. LoRA-the-Explorer:并行低秩更新

我们的算法设计考虑了两个主要因素:(1)实现一个具有信息量的更新 ΔW,在训练过程中不需要完整参数大小的实现,以及(2)对 W 进行参数化,使其可以以低精度存储和高效传递。后者可以通过使用量化权重并保留 W 的高精度副本来实现。 我们提出了 LoRA-the-Explorer(LTE),这是一种通过并行低秩更新来近似全秩更新的优化算法。该算法在初始化时为每个线性层创建 N 个不同的 LoRA 参数。每个工作器被分配 LoRA 参数,并创建一个局部优化器。接下来,数据从相同的分布中独立采样 x={x1​,...xN​}。对于每个 LoRA 头 n,参数根据其自己的数据分区进行 T 次迭代优化,导致更新

我们不同步工作器之间的优化器状态。优化之后,同步生成的 LoRA 参数以计算主要权重

的最终更新。 在下一个训练周期中,LoRA 参数将使用更新后的权重 W 进行训练。在这里,LoRA参数可以重新初始化,也可以使用相同的参数与修正项(参见附录A.2)。由于我们不直接在主参数 W 上进行训练,我们可以使用量化参数 q(W)。其中,可以将高精度权重保留在主节点上,也可以在训练期间从设备卸载它。这不仅减少了每个工作器的内存占用,还减少了传输开销。算法 1 中提供了伪代码,图 3 中提供了插图。

4. 实验

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

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

相关文章

C++ STL标准程序库开发指南学习笔记

一、类模板简介&#xff1a; 在现今的C标准模板库中&#xff0c;几乎所有的东西都被设计为template形式&#xff0c;不支持模板&#xff0c;就无法使用标准程序库。模板库可以认为是针对一个或多个尚未明确的类型而编写一套函数或类型。模板是C的一个新特性。通过使用模板&…

如何搭建自己的图床

前言 简单来说&#xff0c;图床是一种在线服务&#xff0c;允许用户上传、存储和分享图片。当把图片上传到该服务器上后&#xff0c;便能在互联网上通过链接来使用该图片&#xff0c;尤其是在不允许直接上传图片文件的平台上&#xff0c;也有些平台不允许上传其他平台的图片文…

基于C#开发OPC DA客户端——搭建KEPServerEX服务

简介 OPC DA (OLE for Process Control Data Access) 是一种工业自动化领域中的通信协议标准&#xff0c;它定义了应用程序如何访问由OPC服务器提供的过程控制数据。OPC DA标准允许软件应用程序&#xff08;客户端&#xff09;从OPC服务器读取实时数据或向服务器写入数据&…

Linux时间同步(PPS、PTP、chrony)分析笔记

1 PPS(pulse per second) 1.1 简介 LinuxPPS provides a programming interface (API) to define in the system several PPS sources. PPS means "pulse per second" and a PPS source is just a device which provides a high precision signal each second so t…

C++ //练习 10.16 使用lambda编写你自己版本的biggies。

C Primer&#xff08;第5版&#xff09; 练习 10.16 练习 10.16 使用lambda编写你自己版本的biggies。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 代码块 /*******************************************************************…

14:00面试,14:07就出来了,问的问题过于变态了。。。

我从一家小公司转投到另一家公司&#xff0c;期待着新的工作环境和机会。然而&#xff0c;新公司的加班文化让我有些始料未及。虽然薪资相对较高&#xff0c;但长时间的工作和缺乏休息使我身心俱疲。 就在我逐渐适应这种高强度的工作节奏时&#xff0c;公司突然宣布了一则令人…

Typora快捷键设置详细教程(内附每个步骤详细截图)

&#x1f60e; 作者介绍&#xff1a;我是程序员洲洲&#xff0c;一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号&#xff1a;程序员洲洲。 &#x1f388; 本文专栏&#xff1a;本文…

SpringBoot整合MySQL和Druid

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 循序渐进学SpringBoot ✨特色专栏: MySQL学习 🥭本文内容:SpringBoot整合MySQL和Druid 📚个人知识库: Leo知识库,欢迎大家访问 目录 …

HarmonyOS—开发云数据库

您可以在云侧工程下开发云数据库资源&#xff0c;包括创建对象类型、在对象类型中添加数据条目、部署云数据库。 创建对象类型 对象类型&#xff08;即ObjectType&#xff09;用于定义存储对象的集合&#xff0c;不同的对象类型对应的不同数据结构。每创建一个对象类型&#…

NVMe开发——PCIe复位

简介 PCIe中有4种复位机制&#xff0c;早期的3种被称为传统复位(Conventional Reset)。传统复位中的前2种又称为基本复位(Fundamental Resets)&#xff0c;分别为冷复位(Cold Reset)&#xff0c;暖复位(Warm Reset)。第3种复位为热复位(Hot Reset)。第4种复位被称为功能级复位…

docker 基础(二)

常见命令 Docker最常见的命令就是操作镜像、容器的命令&#xff0c;详见官方文档&#xff1a;https://docs.docker.com/ 数据卷 命令说明文档地址docker volume create创建数据卷docker volume createdocker volume ls创建数据卷docker volume lsdocker volume rm查看所有数…

【力扣白嫖日记】585.2016年的投资

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 585.2016年的投资 表&#xff1a;Person 列名类型pidinttiv_2015floattiv_2016floatlatfloatlonfloat pid …

c++之运算符,程序流程结构

运算符 作用&#xff1a;用于执行代码的运算 1算术运算符 作用&#xff1a;用于处理四则运算 下面我们用代码展示&#xff1a; #include<iostream> using namespace std; int main() {//加减乘除int a1 10;int b1 3;cout <<" a1 b1 "<< a1…

广汽埃安工厂:蔚来汽车的造车工厂有哪些?

具体来说&#xff0c;理想汽车目前在常州仅有一家汽车制造工厂。 一期项目于2017年12月竣工&#xff0c;2019年12月投产&#xff0c;年产能10万辆/年。 同时&#xff0c;正在规划二期工程。 产能将增至20万辆/年。 此外&#xff0c;理想还计划接管现代汽车在北京顺义的第一家工…

阿里云短信验证笔记

1.了解阿里云的权限操作 进入AccessKey管理 选择子用户 创建用户组和用户 先创建用户组&#xff0c;建好再进行权限分配 添加短信管理权限 创建用户 创建好后的id和密码在此处下载可以得到 2.开通阿里云短信服务 进行申请&#xff0c;配置短信模板 阿里云短信API文档 短信服务…

【蓝牙协议栈】【蓝牙分析工具】Ellisys 分析HCI Log和btsnoop Log

1.Ellisys 介绍 Ellisys 的 air log sniffer设备要二三十万,一般不是专业开发蓝牙的估计不会选择使用这个工具,但是即使我们不买这个设备,安装了 Ellisys 的工具也可以看 btsnoop 的,下面我就一步一步教你通过 Ellisys 来打开 btsnoop。 1.1 首先打开 APP(Ellisys 不能直…

零基础学编程,中文编程工具之进度标尺构件的编程用法

零基础学编程&#xff0c;中文编程工具之进度标尺构件的编程用法 一、前言 今天给大家分享的中文编程开发语言工具 进度条构件的用法。 编程入门视频教程链接 https://edu.csdn.net/course/detail/39036 编程工具及实例源码文件下载可以点击最下方官网卡片——软件下载——…

Mybatis | Mybatis的核心配置

目录: Mybatis的核心配置 :一、MyBatis的 “核心对象”1.1 SqlSessionFactory1.2 SqlSession :SqlSession对象中的操作数据库的方法 :\<T> T selectOne ( String statement )\<T> T selectOne( String statement , Object parameter )\<E> List\<E> se…

Stable Diffusion 3突然发布!与Sora同架构,一切都更逼真了

文字终于不乱码了&#xff01; 足足酝酿一年之多&#xff0c;相比上一代一共进化了三大能力。 来&#xff0c;直接上效果&#xff01; 首先&#xff0c;是开挂的文字渲染能力。 且看这黑板上的粉笔字&#xff1a; Go Big or Go Home &#xff08;不成功便成仁&#xff09;&…

2023中国PostgreSQL数据库生态大会:洞察前沿趋势,探索无限可能(附核心PPT资料下载)

随着数字化浪潮的推进&#xff0c;数据库技术已成为支撑各行各业数字化转型的核心力量。2023中国PostgreSQL数据库生态大会的召开&#xff0c;无疑为业界提供了一个深入交流、共同探索PostgreSQL数据库技术未来发展趋势的平台。本文将带您走进这场盛会&#xff0c;解析大会的亮…