当前位置:   article > 正文

PEFT(Parameter-Efficient Fine-Tuning)技术总结

peft

快速总结

针对矩阵分解的

  • LoRA:把 W = W 0 + B A W=W_0+BA W=W0+BA分解,BA的参数量级远低于W
  • AdaLoRA:把LoRA换成SVD分解

针对prompt的

  • PREFIX_TUNING:给prompt增加前缀,前缀用mlp结构来训练,每个任务用相同的前缀
  • PROMPT_TUNING:是PREFIX_TUNING的简化,把mlp简化没了(只要预训练模型够大,难训练的问题就没有),只保留个embedding即可,每个任务用相同的前缀
  • P-Tuning:prefix和prompt都是加前缀,P-Tuning直接对整个Prompt过Encoder,Encoder论文中是lstm或者mlp的结构。P-Tuning要解决的是 [X] is located in [Y], [Y] is the country of [X]之类模版带来的问题
  • P-Tuning V2:只搞prompt还不够,要把Prompt token再给模型多传几层

针对self attention

  • (IA)^3:缩写是Infused Adapter by Inhibiting and Amplifying Inner Activations,方法是把标准的self-attention加一些参数。给标准self-attention的K,V各hadamard product一个参数,给position-wise feed-forward层的结果也hadamard product一个参数。最后相当于对每层Transformer block都hadamard product了三个参数;另外(IA)^3还贡献了unlikelihood loss(discourages the model from predicting tokens from incorrect target sequences,来自于Improving and Simplifying Pattern Exploiting Training这篇paper,实际上就是构造一个错误序列集合,1减去和错误集合匹配的概率,最后拼成一个cross entropy的形式)和length-normalized loss(把长度的因素也评成一个cross entropy的形式)

Adapter Tuning

来自Parameter-Efficient Transfer Learning for NLP,介绍了adapter结构:首先是一个down-project层将高维度特征映射到低维特征,然后过一个非线形层之后,再用一个up-project结构将低维特征映射回原来的高维特征;同时也设计了skip-connection结构,确保了在最差的情况下能够退化为identity。
在这里插入图片描述
从实验结果来看,该方法能够在只额外对增加的3.6%参数规模(相比原来预训练模型的参数量)的情况下取得和Full-finetuning接近的效果(GLUE指标在0.4%以内)

Prefix Tuning

来自Prefix-Tuning: Optimizing Continuous Prompts for Generation,在输入token之前构造一段任务相关的virtual tokens作为Prefix,然后训练的时候只更新Prefix部分的参数,而Transformer中的其他部分参数固定。该方法其实和构造Prompt类似,只是Prompt是人为构造的“显式”的提示,并且无法更新参数,而Prefix则是可以学习的“隐式”的提示。

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

Prompt Tuning

来自The Power of Scale for Parameter-Efficient Prompt Tuning

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

P-Tuning

下图说的比较明白,和Prefix-Tuning区别在于:

  • Prefix Tuning是将额外的embedding加在开头,看起来更像是模仿Instruction指令;而P-Tuning的位置则不固定。
  • Prefix Tuning通过在每个Attention层都加入Prefix Embedding来增加额外的参数,通过MLP来初始化;而P-Tuning只是在输入的时候加入Embedding,并通过LSTM+MLP来初始化。
    在这里插入图片描述
    P-Tuning方法的提出主要是为了解决这样一个问题:大模型的Prompt构造方式严重影响下游任务的效果。
    在这里插入图片描述

P-Tuning V2

来自P-Tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Universally Across Scales and Tasks,相比Prompt Tuning和P-tuning的方法, P-tuning v2方法在多层加入了Prompts tokens作为输入,带来两个方面的好处:

  1. 带来更多可学习的参数(从P-tuning和Prompt Tuning的0.1%增加到0.1%-3%),同时也足够parameter-efficient。
  2. 加入到更深层结构中的Prompt能给模型预测带来更直接的影响。
几个关键设计因素

● Reparameterization:Prefix Tuning和P-tuning中都有MLP来构造可训练的embedding。本文发现在自然语言理解领域,面对不同的任务以及不同的数据集,这种方法可能带来完全相反的结论。
● Prompt Length: 不同的任务对应的最合适的Prompt Length不一样,比如简单分类任务下length=20最好,而复杂的任务需要更长的Prompt Length。
● Multi-task Learning 多任务对于P-Tuning v2是可选的,但可以利用它提供更好的初始化来进一步提高性能。
● Classification Head 使用LM head来预测动词是Prompt Tuning的核心,但我们发现在完整的数据设置中没有必要这样做,并且这样做与序列标记不兼容。P-tuning v2采用和BERT一样的方式,在第一个token处应用随机初始化的分类头。

LoRA

语言模型虽然参数众多,但是起到关键作用的还是其中低秩的本质维度(low instrisic dimension)。本文受到该观点的启发,提出了Low-Rank Adaption(LoRA),设计了如下所示的结构,在涉及到矩阵相乘的模块,引入A、B这样两个低秩矩阵模块去模拟Full-finetune的过程,相当于只对语言模型中起关键作用的低秩本质维度进行更新。
在这里插入图片描述
在这里插入图片描述
这么做就能完美解决以上存在的3个问题:
○ 相比于原始的Adapter方法“额外”增加网络深度,必然会带来推理过程额外的延迟,该方法可以在推理阶段直接用训练好的A、B矩阵参数与原预训练模型的参数相加去替换原有预训练模型的参数,这样的话推理过程就相当于和Full-finetune一样,没有额外的计算量,从而不会带来性能的损失。
○ 由于没有使用Prompt方式,自然不会存在Prompt方法带来的一系列问题。
○ 该方法由于实际上相当于是用LoRA去模拟Full-finetune的过程,几乎不会带来任何训练效果的损失,后续的实验结果也证明了这一点。还有苏神针对梯度的分析
在这里插入图片描述

QLoRA

QLoRA: Efficient Finetuning of Quantized LLMs,实际上就是量化+LoRA

Towards a Unified View of PETL

有一大堆实验,就不展开写了,一些结论:

  • 哪种嵌入形式更好:Parallel or Sequencial? Parallel
  • 对哪块结构做修改更好?Attention or FFN? 当微调的参数量较多时,从结果来看,对FFN层进行修改更好。一种可能的解释是FFN层学到的是任务相关的文本模式,而Attention层学到的是成对的位置交叉关系,针对新任务并不需要进行大规模调整。 当微调参数量较少(0.1%)时,对Attention进行调整效果更好。
  • 哪种组合效果更好?论文里提到的Scaled PA效果更好

Ladder Side-Tuning(LST)

它是在原有大模型的基础上搭建了一个“旁支”(梯子),将大模型的部分层输出作为旁枝模型的输入,所有的训练参数尽在旁枝模型中,由于大模型仅提供输入,因此反向传播的复杂度取决于旁枝模型的规模,并不需要直接在原始大模型上执行反向传播,因此是可以明显提升训练效率的。
在这里插入图片描述
转载自:

  1. https://www.yuque.com/meta95/hmc3l4/ozgy13dx4akv7v17?singleDoc#miOqk
  2. https://kexue.fm/archives/9590/comment-page-1#comments
  3. https://kexue.fm/archives/9138
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/102690
推荐阅读
相关标签
  

闽ICP备14008679号