跟着,ChatGPT 敏捷爆火,引发了大模型的年代革新。可是关于一般群众来说,进行大模型的预练习或许全量微调遥不可及。由此,催生了各种参数高效微调技能,让科研人员或许一般开发者有时机测验微调大模型。

因而,该技能值得咱们进行深入分析其背后的机理,本系列大体分七篇文章进行讲解。

  • 大模型参数高效微调技能原理总述(一)-布景、参数高效微调简介
  • 大模型参数高效微调技能原理总述(二)-BitFit、Prefix Tuning、Prompt Tuning
  • 大模型参数高效微调技能原理总述(三)-P-Tuning、P-Tuning v2
  • 大模型参数高效微调技能原理总述(四)-Adapter Tuning及其变体
  • 大模型参数高效微调技能原理总述(五)-LoRA、AdaLoRA、QLoRA
  • 大模型参数高效微调技能原理总述(六)-MAM Adapter、UniPELT
  • 大模型参数高效微调技能原理总述(七)-最佳实践、总结

本文为大模型参数高效微调技能原理总述的第五篇。

LoRA

布景

神经网络包含许多全衔接层,其借助于矩阵乘法得以完结,可是,许多全衔接层的权重矩阵都是满秩的。当针对特定使命进行微调后,模型中权重矩阵其实具有很低的本征秩(intrinsic rank),因而,论文的作者认为权重更新的那部分参数矩阵尽管随机投影到较小的子空间,依然能够有效的学习,能够理解为针对特定的下流使命这些权重矩阵就不要求满秩。

技能原理

LoRA(论文:LoRA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS),该办法的中心思维就是经过低秩分化来模拟参数的改变量,从而以极小的参数量来完结大模型的间接练习。

在涉及到矩阵相乘的模块,在原始的PLM旁边增加一个新的通路,经过前后两个矩阵A,B相乘,榜首个矩阵A担任降维,第二个矩阵B担任升维,中间层维度为r,从而来模拟所谓的本征秩(intrinsic rank)。

大模型参数高效微调技术原理综述(五)-LoRA、AdaLoRA、QLoRA

可练习层维度和预练习模型层维度共同为d,先将维度d经过全衔接层降维至r,再从r经过全衔接层映射回d维度,其间,r<<d,r是矩阵的秩,这样矩阵核算就从d x d变为d x r + r x d,参数量削减许多。

大模型参数高效微调技术原理综述(五)-LoRA、AdaLoRA、QLoRA

在下流使命练习时,固定模型的其他参数,只优化新增的两个矩阵的权重参数,将PLM跟新增的通路两部分的成果加起来作为终究的成果(两头通路的输入跟输出维度是共同的),即h=Wx+BAx。榜首个矩阵的A的权重参数会经过高斯函数初始化,而第二个矩阵的B的权重参数则会初始化为零矩阵,这样能确保练习开始时新增的通路BA=0从而对模型成果没有影响。

大模型参数高效微调技术原理综述(五)-LoRA、AdaLoRA、QLoRA

在推理时,将左右两部分的成果加到一起即可,h=Wx+BAx=(W+BA)x,所以只要将练习完结的矩阵乘积BA跟本来的权重矩阵W加到一起作为新权重参数替换本来PLM的W即可,关于推理来说,不会增加额外的核算资源。

此外,Transformer的权重矩阵包括Attention模块里用于核算query, key, value的Wq,Wk,Wv以及多头attention的Wo,以及MLP层的权重矩阵,LoRA只应用于Attention模块中的4种权重矩阵,而且经过融化试验发现一起调整 Wq 和 Wv 会发生最佳成果。

试验还发现,确保权重矩阵的品种的数量比起增加隐藏层维度r更为重要,增加r并不一定能覆盖愈加有意义的子空间。

大模型参数高效微调技术原理综述(五)-LoRA、AdaLoRA、QLoRA

大模型参数高效微调技术原理综述(五)-LoRA、AdaLoRA、QLoRA

那么关于秩的选择,通常情况下,rank为4,8,16即可。

大模型参数高效微调技术原理综述(五)-LoRA、AdaLoRA、QLoRA

经过试验也发现,在很多数据集上LoRA在只练习极少量参数的前提下,终究在功能上能和全量微调匹配,甚至在某些使命上优于全量微调。

大模型参数高效微调技术原理综述(五)-LoRA、AdaLoRA、QLoRA

AdaLoRA

布景

NLP范畴,关于下流使命进行大型预练习言语模型的微调已经成为一种重要的做法。一般而言,咱们会采用对原有的预练习模型进行全量微调的办法来适配下流使命,但这种办法存在两个问题。

  • 练习阶段。关于预练习模型进行微调的时分,为了更新权重参数,需求大量的显存来存储参数的梯度和优化器信息,在当今预练习模型的参数变得越来越大的情况下,针对下流使命微调门槛变得越来越高。
  • 推理阶段。因为咱们练习的时分是关于模型参数进行全量的更新,所以多个下流使命需求为每个使命保护一个大型模型的独立副本,这样就导致咱们在实践应用的时分浪费了不必要的存储。

为了处理这些问题,研讨者提出了两个主要研讨方向,以削减微调参数的数量,一起坚持甚至进步预练习言语模型的功能。

  • 方向一:增加小型网络模块:将小型网络模块增加到PLMs中,坚持基础模型坚持不变的情况下仅针对每个使命微调这些模块,能够用于一切使命。这样,只需引进和更新少量使命特定的参数,就能够适配下流的使命,大大进步了预练习模型的实用性。如:Adapter tuning、Prefix tuning、Prompt Tuning等,这类办法尽管大大削减了内存耗费。可是这些办法存在一些问题,比方:Adapter tuning引进了推理延时;Prefix tuning或Prompt tuning直接优化Prefix和Prompt是非单调的,比较难收敛,并且耗费了输入的token。
  • 方向二:下流使命增量更新:对预练习权重的增量更新进行建模,而无需修正模型架构,即W=W0+△W。比方:Diff pruning、LoRA等,此类办法能够达到与完全微调几乎适当的功能,可是也存在一些问题,比方:Diff pruning需求底层完结来加快非结构化稀少矩阵的核算,不能直接运用现有的框架,练习过程中需求存储完好的∆W矩阵,比较于全量微调并没有下降核算成本。LoRA则需求预先指定每个增量矩阵的本征秩 r 相同,疏忽了在微调预练习模型时,权重矩阵的重要性在不同模块和层之间存在明显差异,并且只练习了Attention,没有练习FFN,事实上FFN更重要。

基于以上问题进行总结:

  • 榜首,咱们不能预先指定矩阵的秩,需求动态更新增量矩阵的R,因为权重矩阵的重要性在不同模块和层之间存在明显差异。
  • 第二,需求找到愈加重要的矩阵,分配更多的参数,裁剪不重要的矩阵。找到重要的矩阵,能够提高模型作用;而裁剪不重要的矩阵,能够下降参数核算量,下降模型作用差的危险。

为了补偿这一距离,作者提出了AdaLoRA,它根据权重矩阵的重要性得分,在权重矩阵之间自适应地分配参数预算。

技能原理

AdaLoRA(论文:ADAPTIVE BUDGET ALLOCATION FOR PARAMETEREFFICIENT FINE-TUNING),是对LoRA的一种改进,它根据重要性评分动态分配参数预算给权重矩阵。详细做法如下:

  • 调整增量矩分配。AdaLoRA将要害的增量矩阵分配高秩以捕捉更精密和使命特定的信息,而将较不重要的矩阵的秩下降,以避免过拟兼并节省核算预算。
  • 以奇特值分化的方式对增量更新进行参数化,并根据重要性指标裁剪掉不重要的奇特值,一起保存奇特向量。因为对一个大矩阵进行精确SVD分化的核算耗费十分大,这种办法经过削减它们的参数预算来加快核算,一起,保存未来康复的可能性并安稳练习。
    大模型参数高效微调技术原理综述(五)-LoRA、AdaLoRA、QLoRA
  • 在练习丢失中增加了额外的惩罚项,以规范奇特矩阵P和Q的正交性,从而避免SVD的大量核算并安稳练习。

经过试验证明,AdaLoRA 完结了在一切预算、一切数据集上与现有办法比较,功能更好或适当的水平。 例如,当参数预算为 0.3M 时,AdaLoRA 在RTE数据集上,比表现最佳的基线(Baseline)高 1.8%。

大模型参数高效微调技术原理综述(五)-LoRA、AdaLoRA、QLoRA

QLoRA

布景

微调大型言语模型 (LLM) 是进步其功能以及增加所需或删去不需求的行为的一种十分有效的办法。可是,微调十分大的模型十分贵重;以LLaMA 65B 参数模型为例,惯例的16 bit微调需求超越 780 GB 的 GPU 内存。

尽管最近的量化办法能够削减 LLM 的内存占用,但此类技能仅适用于推理场景。

基于此,作者提出了QLoRA,并首次证明了能够在不下降任何功能的情况下微调量化为4 bit的模型。

技能原理

QLoRA(论文:QLORA: Efficient Finetuning of Quantized LLMs),运用一种新颖的高精度技能将预练习模型量化为 4 bit,然后增加一小组可学习的低秩适配器权重,这些权重经过量化权重的反向传播梯度进行微调。QLORA 有一种低精度存储数据类型(4 bit),还有一种核算数据类型(BFloat16)。实践上,这意味着不管何时运用 QLoRA 权重张量,咱们都会将张量反量化为 BFloat16,然后履行 16 位矩阵乘法。QLoRA提出了两种技能完结高保真 4 bit微调——4 bitNormalFloat(NF4) 量化和双量化。此外,还引进了分页优化器,以避免梯度检查点期间的内存峰值,从而导致内存不足的过错,这些过错在曩昔使得大型模型难以在单台机器上进行微调。详细说明如下:

  • 4bitNormalFloat(NF4):关于正态分布权重而言,一种信息理论上最优的新数据类型,该数据类型对正态分布数据发生比 4 bit整数和 4bit浮点数更好的实证成果。
  • 双量化:对榜首次量化后的那些常量再进行一次量化,削减存储空间。
  • 分页优化器:运用NVIDIA一致内存特性,该特功能够在在GPU偶尔OOM的情况下,进行CPU和GPU之间自动分页到分页的传输,以完结无过错的 GPU 处理。该功能的工作方式类似于 CPU 内存和磁盘之间的惯例内存分页。运用此功能为优化器状态(Optimizer)分配分页内存,然后在 GPU 内存不足时将其自动卸载到 CPU 内存,并在优化器更新步骤需求时将其加载回 GPU 内存。

大模型参数高效微调技术原理综述(五)-LoRA、AdaLoRA、QLoRA

试验证明,不管是运用16bit、8bit仍是4bit的适配器办法,都能够复制16bit全参数微调的基准功能。这说明,尽管量化过程中会存在功能丢失,但经过适配器微调,完全能够康复这些功能。

大模型参数高效微调技术原理综述(五)-LoRA、AdaLoRA、QLoRA

试验还比较了不同的4bit数据类型对作用(zero-shot均值)的影响,其间,NFloat 明显优于Float,而NFloat + DQ稍微优于NFloat,尽管DQ对精度提高不大,可是关于内存操控作用更好。

大模型参数高效微调技术原理综述(五)-LoRA、AdaLoRA、QLoRA

除此之外,论文中还对不同大小模型、不同数据类型、在MMLU数据集上的微调作用进行了比照。运用QLoRA(NFloat4 + DQ)能够和Lora(BFloat16)持平,一起,运用QLORA(FP4)的模型作用落后于前两者一个百分点。

大模型参数高效微调技术原理综述(五)-LoRA、AdaLoRA、QLoRA

作者在试验中也发现了一些风趣的点,比方:指令调优尽管作用比较好,但只适用于指令相关的使命,在谈天机器人上作用并不佳,而谈天机器人更适合用Open Assistant数据集去进行微调。经过指令类数据集的调优更像是提高大模型的推理能力,并不是为谈天而生的。

总之,QLoRA的出现给我们带来一些新的考虑,不管是微调仍是布置大模型,之后都会变得愈加简单。每个人都能够快速使用自己的私有数据进行微调;一起,又能轻松的布置大模型进行推理。

结语

本文针对叙述了参数高效微调办法LoRA、AdaLoRA、QLoRA,下文将对混合高效微调办法MAM Adapter、UniPELT进行讲解。

如果觉得我的文章能够能够给您带来帮助,期待您的点赞收藏加重视~~