优化|大语言模型中的优化问题(LoRA相关算法)

一、LoRA

在大语言模型中,参数矩阵 W ∈ R d × d W\in \mathbb{R}^{d \times d} WRd×d的维度往往可以达到百亿甚至千亿,如果从头开始训练将会特别的消耗时间和资源。因此往往大家都会预先训练好一组初始参数 W 0 ∈ R d × d W_0\in \mathbb{R}^{d \times d} W0Rd×d,然后针对不同的任务进行微调,即 W = W 0 + Δ W W = W_0+\Delta W W=W0+ΔW。对于微调量,通常假设 Δ W \Delta W ΔW是一个低秩矩阵,即 Δ W = B A \Delta W = BA ΔW=BA B ∈ R d × r B \in \mathbb{R}^{d \times r} BRd×r A ∈ R r × d A \in \mathbb{R}^{r \times d} ARr×d r < < d r << d r<<d,实际结果中也往往能得到很好的效果[2],如图1所示。因此我们针对特定任务只需要重新训练矩阵 B , A B,A B,A即可,它们的维度也远远小于原矩阵 W W W的维度。初始化时设置 A A A是随机生成的矩阵(高斯分布均值为0, 标准差为 σ \sigma σ), B B B为零矩阵可以保证初始微调量 Δ W \Delta W ΔW为0。

而在推理过程中,推理输出 h = W x h = Wx h=Wx也可以表示成
h = W 0 x + B A x . h = W_0 x + BAx. h=W0x+BAx.


图1:LoRA算法原理图[1]

下图是截取原文中的部分实验结果。相比于fine-tuning (FT)的方法,LoRA算法只需要很少的训练模型参数就可以得到相似的效果。


图2:LoRA实验结果[1]

二、LoRA性能加速

2.1 LoRA+

LoRA给两个低秩适配器矩阵 A , B A,B A,B设置了相同的学习率。在LoRA+[3]中,研究人员为适配器矩阵A和B设置不同的学习率,通过对学习率进行精细调整,确保在大模型宽度下,微调过程可以有效地进行特征学习。文中实验说明在相同的计算成本下,LoRA+能获得1% - 2%的性能提高和2倍的计算加速。


图3:LoRA和LoRA+算法比较[3]

2.2 QLoRA

LoRA成功地减少了所需要的模型的参数个数。除此之外,我们还需要注意模型的实际计算时间(包括训练和推理)也和使用的数据结构有紧密的关系。对于相同的运算,低精度(如FT4)的数据相比于高精度(FT32)的数据花费的时间要少很多。同时,存储高精度数据还需要更多的内存,对于大语言模型而言也是一笔很大的开销。

对于LoRA的计算公式

QLoRA的降精度操作具体如下:

可以看到,高维参数 W W W只使用低精度4 bit的FT4数据类型,只有和梯度有关的参数 L 1 , L 2 L_1,L_2 L1,L2的计算用到相对高精度的BF16数据类型,而 L 1 , L 2 L_1,L_2 L1,L2本身的维度远小于 W W W(低秩假设)。这样数据存储时使用FT4可以大大减少 W W W所需内存,而在需要计算时,我们将需要更新的部分的 W W W(例如1%的参数量)从FT4转化为高精度数据进行计算,这样只需要更新参数时候需要高精度数据,并且参数更新完后又变成低精度数据存储。

关于QLoRA方法,数据量化也分两层:

4比特量化(Quantization)

在对 W W W的量化过程中,首先要将参数 W W W归一化使其满足正态分布,即 N ( 0 , 1 ) \mathcal{N}(0,1) N(0,1)。通常会采用分块归一化,每一块会有对应的系数 c 1 c_1 c1

二次量化(Double Quantization)

对于每一个block都会一个系数 c 1 c_1 c1,在计算的过程中我们可以使用高精度数据类型(FT32),但是存储的时候我们也只需要使用低精度数据类型(FT8)就可以了。这样可以进一步减少所需要的内存空间。

基于LoRA算法还有很多改进的方法,感兴趣的同学可以参看[5],列举了一些最新相关成果。

参考文献

[1] LoRA: Hu, E. J., Shen, Y., Wallis, P., Allen-Zhu, Z., Li, Y., Wang, S., … & Chen, W. (2021). Lora: Low-rank adaptation of large language models. International Conference on Learning Representations (ICLR), 2022

[2] Armen Aghajanyan, Luke Zettlemoyer, and Sonal Gupta. Intrinsic Dimensionality Explains the Effectiveness of Language Model Fine-Tuning. Proceedings of the 59th Annual Meeting of the Association for Computational Linguistics and the 11th International Joint Conference on Natural Language Processing

[3] Hayou, S., Ghosh, N., & Yu, B. (2024). LoRA+: Efficient Low Rank Adaptation of Large Models. arXiv preprint arXiv:2402.12354.

[4] Dettmers, Tim and Pagnoni, Artidoro and Holtzman, Ari and Zettlemoyer, Luke (2023). QLoRA: Efficient Finetuning of Quantized LLMs. arXiv preprint arXiv:2305.14314

[5] https://towardsdatascience.com/an-overview-of-the-lora-family-515d81134725

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

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

相关文章

MQ如何保证可靠性

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;MQ ⛺️稳中求进&#xff0c;晒太阳 消息到达MQ以后&#xff0c;如果MQ不能及时保存&#xff0c;也会导致消息丢失&#xff0c;所以MQ的可靠性也非常重要。 2.数据持久化 为了提高性能&a…

在uniapp里面使用 mp-html 并且开启 latex 功能

在uniapp里面使用 mp-html 并且开启 latex 功能 默认情况下 mp-html 是不会开启 latex 功能的, 如果需要开启 latex 功能是需要到代码操作拉取代码自行打包的。 这里说一下 mp-html 里面的 latex 功能是由 https://github.com/rojer95/katex-mini 提供的技术实现&#xff0c;…

与 Apollo 共创生态:Apollo 7 周年大会的启示与心得

文章目录 前言Apollo X 全新征程Application X 企业预制套件总结 前言 在过去的七年中&#xff0c;Apollo 开放平台经历了一段令人瞩目的发展历程。从最初的构想到如今的成熟阶段&#xff0c;Apollo 已经推出了 13 个版本&#xff0c;吸引了来自全球 170 多个国家和地区的 16 …

大数据技术主要学什么,有哪些课程

大数据技术是指在海量数据的环境下&#xff0c;采集、存储、处理、分析和管理数据的一系列技术与方法。随着互联网、物联网以及各种智能设备的普及&#xff0c;数据量呈爆炸性增长&#xff0c;传统数据处理手段已难以应对&#xff0c;因此大数据技术应运而生&#xff0c;旨在从…

[Collection与数据结构] 七大排序算法汇总

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏:&#x1f355; Collection与数据结构 (90平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 &#x1f9c0;Java …

PyTorch中 DataLoader 和 TensorDataset 的详细解析

DataLoader 和 TensorDataset PyTorch DataLoader 和 TensorDataset 的详细解析DataLoader 介绍DataLoader 的核心功能 TensorDataset 介绍TensorDataset 的核心功能 使用 DataLoader 和 TensorDataset 加载数据关键内容解析 结论 PyTorch DataLoader 和 TensorDataset 的详细解…

VTK —— 三、图形格式 - 示例1 - 读取.vtp文件并输出.ply文件(附完整源码)

代码效果&#xff1a;演示程序读取.vtp后输出.ply文件&#xff0c;使用paraview打开该输出的.ply文件 本代码编译运行均在如下链接文章生成的库执行成功&#xff0c;若无VTK库则请先参考如下链接编译vtk源码&#xff1a; VTK —— 一、Windows10下编译VTK源码&#xff0c;并用V…

堡垒机——网络技术手段

目录 一、简介 1.什么是跳板机 2.跳板机缺陷 3.什么是堡垒机 4.为什么要使用堡垒机 4.1堡垒机设计理念 4.2堡垒机的建设目标 4.3堡垒机的价值 4.4总结 5.堡垒机的分类 6.堡垒机的原理 7.堡垒机的身份认证 8.堡垒机的运维方式常见有以下几种 9.堡垒机其他常见功能…

低代码优于无代码?

从1804年打孔式编程出现&#xff0c;编程语言至今已经存在了200多年。而从50年代以来&#xff0c;新的编程语言也不断涌现&#xff0c;现在已经有250多种了。这就意味着&#xff0c;开发人员最需要习惯的事情就是不断改变。 编程界最近的一个变化是集成开发环境&#xff08;IDE…

如何使用摇摆交易?fpmarkets实例讲解

各位投资者五一节后快乐&#xff01;祝愿投资者在接下来的日子里每次交易都以盈利结算。 五一节日也是劳动节&#xff0c;在这个特殊的日子里fpmarkets澳福和各位勤劳的投资者一起学习如何使用摇摆交易策略进行交易&#xff1f; 其实很简单&#xff0c;首先判断出买卖点&#x…

FANUC机器人故障诊断—报警代码(五)

FANUC机器人故障诊断中关于报警代码的介绍更新如下&#xff1a; 一、报警代码&#xff08;SRVO-214&#xff09; SRVO-214 6轴放大器保险丝熔断 [原因]6轴伺服放大器上的保险丝(FS2,FS3)已熔断。括号内的数字表示在第几台6轴伺服放大器上检测出了保险丝熔断。 [对策] 1.保险…

省公派出国|社科类普通高校教师限期内赴英国访学交流

在国外访问学者申请中&#xff0c;人文社科类相对难度更大&#xff0c;尤其是英语语言学&#xff0c;作为非母语研究并不被国外高校看重。经过努力&#xff0c;最终我们帮助Z老师申请到英国坎特伯雷基督教会大学的访学职位&#xff0c;并在限期内出国。 Z老师背景&#xff1a; …