大模型(LLMs)参数高效微调(PEFT) 面

来自: AiGC面试宝典

扫码 查看更

1. 微调方法是啥?如何微调?

fine-tune,也叫全参微调,bert微调模型一直用的这种方法,全部参数权重参与更新以适配领域数据,效果好。prompt-tune, 包括p-tuning、lora、prompt-tuning、adaLoRA等delta tuning方法,部分模型参数参与微调,训练快,显存占用少,效果可能跟FT(fine-tune)比会稍有效果损失,但一般效果能打平。

链家在BELLE的技术报告《A Comparative Study between Full-Parameter and LoRA-based Fine-Tuning on

Chinese Instruction Data for Instruction Following Large Language Model》中实验显示:FT效果稍好于LoRA。

Table 4:Main results.In this table,LLaMA-13B $^+$ LoRA(2M) represents a model trained on 2M instruction data using LLaMA-13B as base model and LoRA training method,and LLaMA-7B $^+$ FT(2M) represents a model trained using full-parameters fine-tuning.LLaMA-7B $^+$ FT(2M) $^+$ LoRA(math_0.25M) represents a model trained on 0.25M mathematical instruction data usingLLaMA-7B $^+$ FT(2M) as the base model and LoRA training method, and LLaMA-7B $^+$ FT(2M) $^+$ FT(math_0.25M) represents a model trained using incremental full-parameters fine-tuning.About the training time,all these experimentswereconducted on8NVIDIAA100-40GBGPUs.

ModelAverageScoreAdditionalParam.TrainingTime(Hour/epoch)
LLaMA-13B+LoRA(2M)0.64828M10
LLaMA-7B+LoRA(4M)0.62417.9M14
LLaMA-7B+LoRA(2M)0.60917.9M7
LLaMA-7B+LoRA(0.6M)0.58917.9M5
LLaMA-7B+FT(2M)0.71031
LLaMA-7B+FT(0.6M)0.68617
LLaMA-7B+FT(2M)+LoRA(math_0.25M)0.72917.9MyhoM智能
LLaMA-7B+FT(2M)+FT(math_0.25M)0.738

peft的论文《ADAPTIVE BUDGET ALLOCATION FOR PARAMETER- EFFICIENT FINE-TUNING》显示的结果:AdaLoRA效果稍好于FT。

Table 1:Results with DeBERTaV3-base on GLUE development set.Thebest results on each dataset are shown inbold.Wereport theaveragecorrelationforSTS-B.FullFT,HAdapterandPAdapterrepresentfullfne-tuning Houlsby adapter,andPfeifferadapterrespectively.Wereportmean of5runs using different random seeds

Method#ParamsMNLI m/mmSST-2 AccCoLA MccQQP Acc/F1QNLI AccRTE AccMRPC AccSTS-B CorrAll Ave.
Full FT184M89.90/90.1295.6369.1992.40/89.8094.0383.7589.4691.6088.09
BitFit0.1M89.37/89.9194.8466.9688.41/84.9592.2478.7087.7591.3586.02
HAdapter1.22M90.13/90.1795.5368.6491.91/89.2794.1184.4889.9591.4888.12
PAdapter1.18M90.33/90.3995.6168.7792.04/89.4094.2985.2089.4691.5488.24
LoRAr=81.33M90.65/90.6994.9569.8291.99/89.3893.8785.2089.9591.6088.34
AdaLoRA1.27M90.76/90.7996.1071.4592.23/89.7494.5588.0990.6991.8489.31
HAdapter0.61M90.12/90.2395.3067.8791.65/88.9593.7685.5689.2291.3087.93
PAdapter0.60M90.15/90.2895.5369.4891.62/88.8693.9884.1289.2291.5288.04
HAdapter0.31M90.10/90.0295.4167.6591.54/88.8193.5283.3989.2591.3187.60
PAdapter0.30M89.89/90.0694.7269.0691.40/88.6293.8784.4889.7191.3887.90
LoRAr=20.33M90.30/90.3894.9568.7191.61/88.9194.0385.5689.7191.6888.15
AdaLoRA0.32M90.66/90.7095.8070.0491.78/89.1694.4987.3691.6380.5

2. 为什么需要 PEFT?

在面对特定的下游任务时,如果进行Full FineTuning(即对预训练模型中的所有参数都进行微调),太过低效;
而如果采用固定预训练模型的某些层,只微调接近下游任务的那几层参数,又难以达到较好的效果。

3. 介绍一下 PEFT?

PEFT技术旨在通过最小化微调参数的数量和计算复杂度,来提高预训练模型在新任务上的性能,从而缓解大型预训练模型的训练成本。这样一来,即使计算资源受限,也可以利用预训练模型的知识来迅速适应新任务,实现高效的迁移学习。

4. PEFT 有什么优点?

PEFT技术可以在提高模型效果的同时,大大缩短模型训练时间和计算成本,让更多人能够参与到深度学习研究中来。除此之外,FEFT可以缓解全量微调带来灾难性遗忘的问题。

5. 微调方法批处理大小模式GPU显存速度?

微调方法批处理大小模式GPU显存速度

LoRA (r=8) 16 FP16 28GB 8ex/s LoRA (r=8) 8 FP16 24GB 8ex/s LoRA(r=8) 4 FP16 20GB 8ex/s

6. Peft 和 全量微调区别?

所谓的 fune-tine 只能改变风格, 不能改变知识, 是因为我们的 fine-tune, 像是 LoRA 本来就是低秩的, 没办法对模型产生决定性的改变. 要是全量微调, 还是可以改变知识的.

7. 多种不同的高效微调方法对比

像P-Tuning v2、LoRA等都是综合评估很不错的高效微调技术。如果显存资源有限可以考虑QLoRA;如果只是解决一些简单任务场景,可以考虑P-Tuning、Prompt Tuning也行。

下表从参数高效方法类型、是否存储高效和内存高效、以及在减少反向传播成本和推理开销的计算高效五个维度比较了参数高效微调方法。

MethodTypeStorageMemoryBackpropInferenceoverhead
Adapters (Houlsby et al.,2019)AyesyesnoExtra FFN
AdaMix (Wang et al., 2022)AyesyesnoExtra FFN
SparseAdapter (He et al., 2022b)ASyesyesnoExtra FFN
Cross-Attn tuning (Gheini et al., 2021)SyesyesnoNo overhead
BitFit (Ben-Zaken et al., 2021)SyesyesnoNo overhead
DiffPruning(Guo et al.,2020)SyesnonoNo overhead
Fish-Mask (Sung et al., 2021)SyesmaybesnoNo overhead
LT-SFT (Ansell et al., 2022)SyesmaybesnoNo overhead
Prompt Tuning (Lester et al.,2021)AyesyesnoExtra input
Prefix-Tuning (Li and Liang, 2021)AyesyesnoExtra input
Spot (Vu et al., 2021)AyesyesnoExtra input
IPT (Qin et al.,2021)AyesyesnoExtra FFN and input
MAMAdapter(Heetal.,2022a)AyesyesnoExtra FFN and input
Parallel Adapter (He et al., 2022a)AyesyesnoExtra FFN
IntrinsincSAID(Aghajanyan et al.,2020)RnononoNo overhead
LoRa (Hu et al.,2021)RyesyesnoNo overhead
UniPELT (Mao et al.,2021)ARyesyesnoExtra FFN and input
Compacter(Karimi Mahabadi et al.,2021)ARyesyesnoExtra FFN
PHMAdapter(Karimi Mahabadiet al.,2021)ARyesyesnoExtra FFN
KronA(Edalati et al.,2022)RyesyesnoNo overhead
es (Edalati et al., 2022)ARyesyesnoExtralinearlayer
(IA) (Liu et al., 2022)AyesyesnoExtra gating
AttentionFusion(Cao et al.,2022)AyesyesyesExtra decoder
LeTS (Fu et al., 2021)AyesyesyesExtra FFN
Ladder Side-Tuning (Sung et al., 2022)AyesyesyesExtradecoder
FAR (Vucetic et al.,2022)Syesmaybe6noNo overhead
S4-model(Chen et al.,2023)ARSyesyesnoExtra FFN and input

Comparing PEFTmethods across storage efficiency,memoryefficiency,andcomputational efficiencyn R – reparametrization-based.

下表展示了各种参数高效方法的参与训练的参数量、最终模型与原始模型的改变参数(delta值)以及论文中参与评估的模型的范围(<1B、<20B、 ${\tt>}20\tt B$ )。

Method%Trainable parameters%Changed parametersEvaluated on 20B
Adapters (Houlsby et al.,2019)0.1-60.1-6yesyesyes
AdaMix(Wang et al.,2022)0.1-0.20.1 -0.2yesnono
SparseAdapter (He et al., 2022b)2.02.0yesnono
BitFit (Ben-Zaken et al.,2021)0.05-0.10.05-0.1yesyesyes
DiffPruning (Guo et al.,2020)2000.5yesnono
Fish-Mask (Sung et al., 2021)0.01-0.50.01 -0.5yesyesno
Prompt Tuning (Lester et al., 2021)0.10.1yesyesyes
Prefix-Tuning (Li and Liang, 2021)0.1 -4.00.1 - 4.0yesyesyes
IPT (Qin et al., 2021)56.056.0yesnono
MAM Adapter(He et al.,2022a)0.50.5yesnono
Parallel Adapter (He et al., 2022a)0.50.5yesnono
Intrinsinc SAID (Aghajanyan et al., 2020)0.001-0.1~0.1or100yesyesno
LoRa (Hu et al., 2021)0.01-0.5~0.5or~30yesyesyes
UniPELT(Ma0et al.,2021)1.01.0yesnono
Compacter(Karimi Mahabadiet al.,2021)0.05-0.07~0.07or~0.1yesyesno
PHMAdapter(Karimi Mahabadiet al.,2021)0.2~0.2or~1.0yesnono
KronA (Edalati et al., 2022)0.07~0.07or~30.0yesnono
KronABes (Edalati et al., 2022)0.07~0.07or~1.0yesnono
(IA)²(Liu et al.,2022)0.020.02noyesno
Ladder Side-Tuning(Sung et al., 2022)7.57.5yesyesno
FAR (Vucetic et al.,2022)6.6-26.46.6-26.4yesnono
S4-model(Chen et al., 2023)0.5morethan 0.5yesyesno

What model sizes PEFTmethods have been evaluated on and their typical amount of trainable parameters usedin thepapers.By trainableparametercountwespecificallymean the numberparameters that areupdated by agradient optimization algorithm,notthe delta betweenthe original andfinal modelwhichwe denote“changed parameters".For reprametrization-based method we report parameters before and after reparametrization. Estimatingupdated parameter count forS4is complicatedas themodel uses different methods atdifferent layersWe report therangeatwhichthemethodswereevaluatedinthe published literature.

从表中可以看到,Prompt Tuning、Prefix Tuning、LoRA等少部分微调技术针对不同参数规模的模型进行过评估,同时,这几种方式也是目前应用比较多的高效微调方法。

8. 当前高效微调技术存在的一些问题

当前的高效微调技术很难在类似方法之间进行直接比较并评估它们的真实性能,主要的原因如下所示:

• 参数计算口径不一致:参数计算可以分为三类:可训练参数的数量、微调模型与原始模型相比改变的参数的数量、微调模型和原始模型之间差异的等级。例如,DiffPruning更新 $0.5%$ 的参数,但是实际参与训练的参数量是 $200%$ 。这为比较带来了困难。尽管可训练的参数量是最可靠的存储高效指标,但是也不完美。 Ladder-side Tuning使用一个单独的小网络,参数量高于LoRA或BitFit,但是因为反向传播不经过主网络,其消耗的内存反而更小。

• 缺乏模型大小的考虑:已有工作表明,大模型在微调中需要更新的参数量更小(无论是以百分比相对而论还是以绝对数量而论),因此(基)模型大小在比较不同PEFT方法时也要考虑到。

• 缺乏测量基准和评价标准:不同方法所使用的的模型/数据集组合都不一样,评价指标也不一样,难以得到有意义的结论。

• 代码实现可读性差:很多开源代码都是简单拷贝Transformer代码库,然后进行小修小补。这些拷贝也不使用git fork,难以找出改了哪里。即便是能找到,可复用性也比较差(通常指定某个Transformer版本,没有说明如何脱离已有代码库复用这些方法)。

9. 高效微调技术最佳实践

针对以上存在的问题,研究高效微调技术时,建议按照最佳实践进行实施:

• 明确指出参数数量类型。
• 使用不同大小的模型进行评估。
• 和类似方法进行比较。
• 标准化PEFT测量基准。
• 重视代码清晰度,以最小化进行实现。

10. PEFT 存在问题?

相比全参数微调,大部分的高效微调技术目前存在的两个问题:

  1. 推理速度会变慢;
  2. 模型精度会变差;

11. 能不能总结一下各种参数高效微调方法?

本文针对之前介绍的几种参数高效微调方法进行了简单的概述,主要有如下几类:• 增加额外参数,如:Prefix Tuning、Prompt Tuning、Adapter Tuning及其变体。• 选取一部分参数更新,如:BitFit。• 引入重参数化,如:LoRA、AdaLoRA、QLoRA。• 混合高效微调,如:MAM Adapter、UniPELT。
并比较了不同的高效微调方法之间的差异;同时,还指出当前大多数高效微调方法存在的一些问题并给出了最佳
实践。