上海市工程质量建设管理协会网站,WordPress表单系统,带搜索网站建设视频教程,桂林网站制作哪家公司好文献阅读#xff1a;LoRA: Low-Rank Adaptation of Large Language Models 1. 文章简介2. 方法介绍3. 实验 结论 1. 基础实验 1. Bert系列模型2. GPT系列模型 2. 消解实验 1. 作用矩阵考察2. 中间维度考察3. 扰动程度分析 4. 总结 思考 文献链接#xff1a;htt…文献阅读LoRA: Low-Rank Adaptation of Large Language Models 1. 文章简介2. 方法介绍3. 实验 结论 1. 基础实验 1. Bert系列模型2. GPT系列模型 2. 消解实验 1. 作用矩阵考察2. 中间维度考察3. 扰动程度分析 4. 总结 思考 文献链接https://arxiv.org/abs/2106.09685
1. 文章简介
这篇文章是微软在21年的一篇文章不过我了解得比较晚最近才发现有这个工作就匆匆地扫了眼里面的内容。
如前所述这篇文章是21年的一个工作了当时应该是GPT3刚出LLM的影响力还没有那么大主流的范式还是使用大数据进行预训练之后在小数据集上进行finetune。
因此针对大模型的finetune优化还是一个非常关键的问题尤其当参数量巨大而普遍使用的GPU显存并没有那么大的时候如何在不损失模型效果的情况下缩小模型以及加速推理就是一个巨大的问题。
而这篇文章就是在这里进行了一些讨论给出了一个名为LoRA的方法优化了模型finetune具体来说就是通过LoRA的方式在不损伤模型效果的前提下缩减了模型的参数总量从而大幅缩减了模型finetune所需的内存提升finetune的速度。
下面我们就来看一下LoRA的具体方法设计以及对应的实验效果考察。
2. 方法介绍
LoRA的整体思路个人觉得还是非常巧妙的。
众所周知finetune的本质是在小的特定数据集下对预训练大模型的参数进行微调使得其能够在保留大数据预训练的只是前提下在特定的小数据集当中获得更好的表现。因此finetune的本质就是对模型增加一个微扰使得其收敛到一个更适合于某特定任务的局部最优点。
而LoRA的核心思路就是直接freeze模型的全部参数然后额外给模型增加一个扰动的module来模拟finetune之后参数改变的效果。如此一来只要这些扰动的module参数量够小且推理够快就不会影响模型整体的inference成本且可以大幅地缩减模型finetune的开销因为我们只需要训练极小量的一部分参数即可。
我们给出文中的LoRA结构示意图如下 对应的数学公式如下 h W 0 ⋅ x Δ W ⋅ x W 0 ⋅ x B A x h W_0 \cdot x \Delta W \cdot x W_0 \cdot x BAx hW0⋅xΔW⋅xW0⋅xBAx
其中关于这里扰动部分的设计也就是公式中的 Δ W \Delta W ΔW的设计文中应该是借鉴了Adapter的设计思路也就是先将输入向量投影到一个较小维度 r r r的向量当中再恢复到原始的维度 d d d从而即可将计算复杂度从 O ( d 2 ) O(d^2) O(d2)降低至 O ( r d ) O(rd) O(rd)。
给出LoRA模型带来的推理速度的变化如下表所示 可以看到
LoRA会略微增加inference的成本但是并不会产生太大的影响。
3. 实验 结论
下面我们来看一下文中的实验以及对应的实验结果。
1. 基础实验
首先文中在Bert系列模型以及GPT系列模型当中分别考察了一下LoRA的模型效果。
1. Bert系列模型
给出以Roberta以及DeBerta为代表的Bert系列模型上LoRA的效果表现如下 可以看到
LoRA大幅缩减了finetune过程中的参数总量且效果基本与finetune的效果持平。
2. GPT系列模型
同样的我们给出GPT2与GPT3上的模型效果如下 可以看到
LoRA的策略在GPT系列模型上面同样有效。
最后文中还给出了LoRA策略对于参数量的可扩展性也就是说对于不同量级的参数LoRA策略是否一直有效。 可以看到
其他方法对于大模型都会有一定的效果退化但是LoRA一直可以保持较好的效果。
2. 消解实验
除了上述基本的效果考察之外文中还对LoRA具体的生效机制进行了考察具体来说包括
作用矩阵放缩比例扰动程度分析
下面我们来具体看一下这些内容。
1. 作用矩阵考察
首先文中考察了以下在限制LoRA额外增加的参数总量的情况下如何对扰动进行分配可以获得最好的效果得到结果如下 可以看到
将 W q , W k , W v , W o W_q, W_k, W_v, W_o Wq,Wk,Wv,Wo上面都添加LoRA扰动可以获得最好的效果。
2. 中间维度考察
然后确定了添加方式之后文中还考察了以下放缩比例对模型效果的影响得到结果如下 可以看到
放缩比例事实上并不会对模型效果产生较大的影响因此我们可以适当收窄中间维度。
为了进一步说明上述结论文中还给出了 r 8 r8 r8以及 r 64 r64 r64时矩阵的相似度比较如下 可以看到
两者是比较接近的因此 r 8 r8 r8与 r 64 r64 r64的效果是相接近的。
更进一步地文中还考察了两次训练后参数的相似度以及其和未经过训练的随机初始化参数的相似度结果如下 可以看到
模型确实学到了信息表现出了相似的特征且明显区分于未经过训练的随机初始化结果。
3. 扰动程度分析
最后文中还考察了一下LoRA的扰动项带来的扰动量级与原始矩阵的对比得到结果如下 可以看到
和预期一致LoRA带来的影响相较于原始矩阵确实是一个小量但是也远高于随机矩阵带来的影响了这说明LoRA确实是在生效着的。
4. 总结 思考
综上我们可以看到
LoRA提供了一种新的针对大模型的模型finetune的思路可以在不显著增加推理成本的情况下大幅缩减finetune所需的模型参数总量从而简化和加速模型的finetune过程。
这个问题在当前LLM盛行且越来越巨大化的趋势下就显得尤为重要了尽管现在工作中暂时还不需要对大模型进行finetune不过有这些知识储备终归还是有备无患了。
毕竟书到用时方恨少事非经过不知难加油頑張れ