Stable Diffusion模型训练(3):最流行的训练方式Lora
!(https://picx.zhimg.com/70/v2-c2a7d47b9a62b51258a0644a50f8ce88_1440w.image?source=172ae18b&biz_tag=Post)作者:正气凛然郭大侠
## 0 论文来源
论文题目:**LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS**
论文链接:
[https://arxiv.org/abs/2106.09685v2**arxiv.org/abs/2106.09685v2**](https://link.zhihu.com/?target=https%3A//arxiv.org/abs/2106.09685v2)
Github代码:
[https://github.com/microsoft/LoRA**github.com/microsoft/LoRA**](https://link.zhihu.com/?target=https%3A//github.com/microsoft/LoRA)
## 1. 简述
这两年大火的AIGC领域中的**LLM**和**AI绘画**都是基于超大参数量的模型和超大训练数据。各领域为了跟上技术的发展,也积极投身于领域模型定制化训练,但是训练大模型需要巨大的投入,一般中小企业很难承担的起。例如175Billion参数量的GPT-3,据非权威信息GPT3的一次训练成本为140万美元,更何况这种超大模型的训练难度加上试错成本就决定了这只能是头部大公司玩得起的。
不过,微软提出了一种低秩自适应训练方式Low-Rank Adaptation,**Lora** , **该方式固定预训练模型,往模型中添加少量可训练的tensor矩阵,通过对该部分可训练的参数,实现对整个模型输出效果的定制化** 。通过这种方式需要训练的参数量只有原模型的1/1000甚至1/10000,并且也大大缩小了训练时长,从根本上解决了中小企业训练大模型难的问题。
举个例子,如下图:
![](https://pic2.zhimg.com/80/v2-adca1a13b031a3279f3fe0a567f21a89_1440w.webp)
Figure 1: Our reparametrization. We only train A and B.
!(data/attachment/forum/202307/01/125327mkaowbpj2fmwomwc.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")
**总的来说Lora的主要优点有:**
* 训练前后预训练模型保持不变,Lora可以看作为"插件",可以添加、删除,以及替换,操作容易,资源占用少。
* 训练效率高,只需要训练Lora部分,参数量小,且硬件要求不高。
* 训练后将Lora添加到原模型中,推理速度不受影响,保持不变。
* 可多个Lora进行叠加,具备融合效果。
## 2. 具体方案
!(data/attachment/forum/202307/01/125225beyexbkjbn4p4jnh.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")
### 2.3 向Transformer模型中添加LoRA
Transformer的模型结构主要包括了Attention、MLP和Norm几部分,其中Attention的计算公式中有3个矩阵参数WQ/WK/WV,将Lora应用在该部分如下图:
![](https://pic3.zhimg.com/80/v2-3c00ee361360ce09d398a6cea9a51a82_1440w.webp)
APPLYING LORA TO TRANSFORMER
替换Attention中WQ/WK/WV矩阵,由此实现对Q/K/V生成的训练,最后完成原模型的效果微调。同时,微调过程中大概能减少2/3的显存(使用Adam优化器,大概是因为Adam在训练中包括了gradients和Adam states)。另外训练完成之后LoRA部分的模型大小也只有几十MB,训练的效率也有25%的提升。
至于为什么将LoRA应用在Transformer中该部分,其实文章也是经过消融对比实验得出的最佳方式:
![](https://pic2.zhimg.com/80/v2-4567fe7bd854a88efed009308b1a5a09_1440w.webp)
Table 5: Validation accuracy on WikiSQL and MultiNLI after applying LoRA to different types of attention weights in GPT-3, given the same number of trainable parameters.
在相同LoRA参数量的前提下,针对self-attention中的WQ/WK/WV矩阵(W0是multi-head中的矩阵,这里不展开了)进行LoRA替换是最佳的方案。
## 3. 实验结果
本文分别在RoBERTa、DeBERTa和GPT2模型上验证LoRA微调方案在多种NLP任务上的效果。可以发现,LoRA在对比有着相同训练参数量时,在各类任务上都要比RoBERTa、DeBERTa的Adaption的方式要好,相比全参数微调FT的效果,LoRA也能够咋部分任务上表现略高,整体上与FT相当。
![](https://pic2.zhimg.com/80/v2-fbe086b484b0936bc2c7f03aa97ae875_1440w.webp)
Table 2: RoBERTabase, RoBERTalarge, and DeBERTaXXL with different adaptation methods on the GLUE benchmark.
另外对比了常见大模型微调的方案,"BitFit", "Prefix-embedding tuning","Prefix-layer tuning"和花式"Adapter tuning"。在GPT2上的个任务微调结果,具体为:
![](https://pic4.zhimg.com/80/v2-c5dc632cc3f1e03d75af1d4696e475db_1440w.webp)
Table 3: GPT-2 medium (M) and large (L) with different adaptation methods on the E2E NLG Challenge.
可以发现LoRA的微调方式不仅是参数量最小的,也是在多种任务上效果最好的。
另外对于LoRA中仅有的超参r,文章也给出了对比实验的结果,如下:
![](https://pic3.zhimg.com/80/v2-2b3193d1b026566e312a4da999057566_1440w.webp)
Table 6: Validation accuracy on WikiSQL and MultiNLI with different rank r.
## 4. 写在最后
LoRA的大模型方式,不仅在AI绘画Stable Diffusino模型中应用很广,也在LLM的微调中也比较常见,所以熟练使用LoRA对大模型进行微调还是很有必要亲自实践下的。
谢谢技术大佬,普及知识:) 感谢楼主学习资料
页:
[1]