赞
踩
LoRA(Low-Rank Adaptation Of Large Language Model),是一种大语言模型的低秩自适应方法。LoRA 在保持预训练模型的权重不变的情况下,通过给做下游微调任务的模型注入可以训练的秩分解矩阵。通过这种方式,可以使预训练模型在下游的微调任务当中,不用去学习全量的训练参数,因此大大降低了模型的训练参数量,同时降低了GPU内存的需求。
LoRA已经证实了在RoBERTa,DeBERTa,GPT系列模型以及一系列的LLM中证明了自己的效果。在175B 的GPT3使用Adam 的微调学习中,LoRA能降低10000倍的训练参数,同时GPU内存使用降低了三倍。在RoBERTa、DeBERTa、GPT-2和GPT-3上,LoRA在模型质量方面表现与微调相当或更好,LoRA具有更少的可训练参数、更高的训练吞吐量,且与适配器不同,它没有额外的推理延迟。
LoRA 的具体实现可以参照上图,这也是LoRA论文中的说明图,非常的简洁而且易懂。LoRA 把预训练模型的权重冻结,将微调阶段学习到的权重的增量部分进行矩阵的秩分解,将秩分解后的矩阵A与B注入到模型的Transformer架构的每一层中。
具体来说,对于预训练模型的transformer结构中的学习权重 ,LoRA 可以通过以下的方式来实现其权重的更新,其中,。且秩。其中,参数在学习中是被冻结的,更新的部分是,通过LoRA转化为。
为什么秩r 需要远小于d和k?那是因为我们要更新的权重的参数量为d*k个。而我们通过LoRA,把更新的那部分转化为了。更新的参数量因此从d*k 转化为了 B的参数量 + A的参数量,即 d * r + r *k 个参数。因此,当 秩r 需要远小于d和k 时,我们可以大幅度的降低更新的参数量。
同时,我们把模型的反馈函数转化为了:
。
问题1:LoRA用在模型的什么地方?
答:LoRA 用在预训练模型的Transformer架构上的每一层。注意,是每一层!LoRA的主要思想是在预训练模型的每一层中保持训练前权重不变,同时在每一层中注入可训练的秩分解矩阵,从而大大减少了针对下游任务的可训练参数数量。因此,不管是Transformer的FFN,还是attention,都会注入LoRA的秩分解矩阵。
问题2:如何确定适当的秩分解矩阵大小?
答:确定适当的秩分解矩阵大小(即LoRA的秩r)需要考虑以下几点:
性能:选择合适的秩分解矩阵大小以实现理想的模型性能。在实验中,即使使用很小的r(例如1或2),LoRA仍然可以与完全微调相媲美,甚至表现更好。
子空间相似性:检查不同秩选择和不同随机种子下学习到的子空间之间的相似性。增加r并不能涵盖更有意义的子空间,这表明低秩适应矩阵就足够了。
适应矩阵与预训练权重的关系:研究适应矩阵∆W与预训练权重W之间的关系。∆W与W之间的相关性可以帮助了解适应预训练语言模型的机制。
综上所述,选择适当的秩分解矩阵大小需要在性能、子空间相似性和适应矩阵与预训练权重的关系等方面进行综合评估。
问题3:LoRA(Low-Rank Adaptation)相对于其他自适应方法具有哪些优势?
答:
存储和计算效率:LoRA通过优化训练过程中权重更新的低秩分解矩阵,大大减少了可训练参数的数量,从而降低了存储和计算需求。
无需额外的推理延迟:与适配器层不同,LoRA在训练过程中并行地添加可训练的低秩矩阵,因此不会引入额外的推理延迟。
高度可组合性:LoRA可以与许多现有方法(如前缀调整)结合使用,进一步提高模型的效果和效率。
快速任务切换:LoRA允许在共享大部分模型参数的情况下快速切换任务,从而降低了存储需求和任务切换开销。
与模型质量相当或更好的表现:尽管LoRA具有较少的可训练参数、更高的训练吞吐量和与适配器不同的无额外推理延迟,但在RoBERTa、DeBERTa、GPT-2和GPT-3上的表现与完全微调相当或更好。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。