模型微调‌ 大模型微调的几种常见方法

默认分类2个月前发布 admin
4,008 0
星河超算AI数字人

在文章深入理解大语言模型微调技术中,我们详细了解大语言模型微调的概念和训练过程,本篇给大家介绍大模型微调常见的7种训练方法。

1、

2019年谷歌的研究人员首次在论文《- for NLP》提出针对 BERT 的 PEFT微调方式,拉开了 PEFT 研究的序幕。他们指出,在面对特定的下游任务时,如果进行 Full-(即预训练模型中的所有参数都进行微调),太过低效;而如果采用固定预训练模型的某些层,只微调接近下游任务的那几层参数,又难以达到较好的效果。

于是他们设计了 结构,将其嵌入 的结构里面,在训练时,固定住原来预训练模型的参数不变,只对新增的 结构进行微调。同时为了保证训练的高效性(也就是尽可能少的引入更多参数),他们将 设计为这样的结构:

2、

2021年斯坦福的研究人员在论文《-: for 》中提出了 方法。与Full- 更新所有参数的方式不同,该方法是在输入 token 之前构造一段任务相关的 作为 ,然后训练的时候只更新 部分的参数,而 中的其他部分参数固定。该方法其实和构造 类似,只是 是人为构造的“显式”的提示,并且无法更新参数,而 则是可以学习的“隐式”的提示。

同时,为了防止直接更新 的参数导致训练不稳定的情况,他们在 层前面加了 MLP 结构(相当于将 分解为更小维度的 Input 与 MLP 的组合后输出的结果),训练完成后,只保留 的参数。

3、

是2021年谷歌在论文《The Power of Scale for – 》中提出的微调方法。

该方法可以看作是 的简化版本,只在输入层加入 ,并不需要加入 MLP 进行调整来解决难训练的问题,主要在 T5 预训练模型上做实验。似乎只要预训练模型足够强大,其他的一切都不是问题。作者也做实验说明随着预训练模型参数量的增加, 的方法会逼近 Fine-tune 的结果。

固定预训练参数,为每一个任务额外添加一个或多个 ,之后拼接 query 正常输入 LLM,并只训练这些 。左图为单任务全参数微调,右图为 。

4、P-

模型微调‌ 大模型微调的几种常见方法

P- 方法的提出主要是为了解决这样一个问题:大模型的 构造方式严重影响下游任务的效果。

P- 提出将 转换为可以学习的 层,只是考虑到直接对 参数进行优化会存在这样两个挑战:

P- 和 – 差不多同时提出,做法其实也有一些相似之处,主要区别在:

5、P- v2

P- 的问题是在小参数量模型上表现差。于是就有了v2版本:《P- v2: Can Be to Fine- and Tasks》。

从标题就可以看出,P- v2 的目标就是要让 能够在不同参数规模的预训练模型、针对不同下游任务的结果上都达到匹敌 Fine- 的结果。

那也就是说当前 方法在这两个方面都存在局限性。

相比 和 P- 的方法, P- v2 方法在多层加入了 作为输入,带来两个方面的好处:

带来更多可学习的参数(从 P- 和 的0.1%增加到0.1%-3%),同时也足够 -。加入到更深层结构中的 能给模型预测带来更直接的影响。

6、LoRA

LoRA,英文全称Low- of Large ,直译为大语言模型的低阶适应,是一种PEFT(- ,简称PEFT),这是微软的研究人员为了解决大语言模型微调而开发的一项技术。

模型微调‌ 大模型微调的几种常见方法

LoRA的基本原理是冻结预训练好的模型权重参数,在冻结原模型参数的情况下,通过往模型中加入额外的网络层,并只训练这些新增的网络层参数。由于这些新增参数数量较少,这样不仅 的成本显著下降,还能获得和全模型微调类似的效果。

7、QLoRA

QLoRA 是由 Tim 等人提出的量化 LoRA 的缩写。QLoRA 是一种在微调过程中进一步减少内存占用的技术。在反向传播过程中,QLoRA 将预训练的权重量化为 4-bit,并使用分页优化器来处理内存峰值。

使用LoRA时可以节省33%的GPU内存。然而,由于QLoRA中预训练模型权重的额外量化和去量化,训练时间增加了39%。

首先分析下LoRA微调中的痛点:

参数空间小:LoRA中参与训练的参数量较少,解空间较小,效果相比全量微调有一定的差距。微调大模型成本高:对于上百亿参数量的模型,LoRA微调的成本还是很高。精度损失:针对第二点,可以采用int8或int4量化,进一步对模型基座的参数进行压缩。但是又会引发精度损失的问题,降低模型性能。

QLoRA优点:

4-bit :提出一种理论最优的4-bit的量化数据类型,优于当前普遍使用的FP4与Int4。对于正态分布权重而言,一种信息理论上最优的新数据类型,该数据类型对正态分布数据产生比 4 bit整数和 4bit 浮点数更好的实证结果。QLORA包含一种低精度存储数据类型(通常为4-bit)和一种计算数据类型(通常为)。在实践中,QLORA权重张量使用时,需要将将张量去量化为,然后在16位计算精度下进行矩阵乘法运算。模型本身用4bit加载,训练时把数值反量化到bf16后进行训练。 :对第一次量化后的那些常量再进行一次量化,减少存储空间。相比于当前的模型量化方法,更加节省显存空间。每个参数平均节省0.37bit,对于65B的LLaMA模型,大约能节省3GB显存空间。Paged :使用统一内存特性,该特性可以在在GPU偶尔OOM的情况下,进行CPU和GPU之间自动分页到分页的传输,以实现无错误的 GPU 处理。该功能的工作方式类似于 CPU 内存和磁盘之间的常规内存分页。使用此功能为优化器状态()分配分页内存,然后在 GPU 内存不足时将其自动卸载到 CPU 内存,并在优化器更新步骤需要时将其加载回 GPU 内存。增加:4-bit的与 ,节省了很多空间,但带来了性能损失,作者通过插入更多来弥补这种性能损失。在LoRA中,一般会选择在query和value的全连接层处插入。而QLoRA则在所有全连接层处都插入了,增加了训练参数,弥补精度带来的性能损失。 8、LoRA+MoE

由于大模型全量微调时的显存占用过大,LoRA、、IA 3 这些参数高效微调方法便成为了资源有限的机构和研究者微调大模型的标配。PEFT方法的总体思路是冻结住大模型的主干参数,引入一小部分可训练的参数作为适配模块进行训练,以节省模型微调时的显存和参数存储开销。

传统上,LoRA这类适配模块的参数和主干参数一样是稠密的,每个样本上的推理过程都需要用到所有的参数。近来,大模型研究者们为了克服稠密模型的参数效率瓶颈,开始关注以、 MoE为代表的混合专家( of ,简称MoE)模型框架。在该框架下,模型的某个模块(如的某个FFN层)会存在多组形状相同的权重(称为专家),另外有一个路由模块()接受原始输入、输出各专家的激活权重。

323AI导航网发布

© 版权声明

相关文章

星河超算AI数字人

暂无评论

暂无评论...