1. 总结

1.1. BitFit

对微调机制的一种积极探索,也很简单,通过仅调整bias效果就能有不错的效果,但没有具体阐述原理,就是通过猜测加实验得到的结果。 同时,作者提出一个观点:微调的过程不是让模型适应另外的数据分布,而是让模型更好的应用出本身的表征能力。

特点:

  • 训练参数量极小(约0.1%)
  • 在大部分任务上效果会差于LoRA、Adapter等方法

1.2. Prefix Tuning

在每一个 Transformer 层都带上一些virtual token作为前缀,以适应不同的任务。

特点:

  • 前缀 Token 会占用序列长度,有一定的额外计算开销。
  • Prefix Tuning 的线性插值比较复杂。

1.3. Prompt Tuning

该方法可以看作是 Prefix Tuning 的简化版本,针对不同任务,仅在输入层引入 virtual tokens 形式的软提示(soft prompt)。 特点:

  • 相对于 prefix tuning,参与训练的参数量和改变的参数量更小,更节省显存。
  • 对一些简单的 NLU 任务还不错,但对硬序列标记任务(即序列标注)表现欠佳。

1.4. P-Tuning

将 prompt 转换为可以学习的 Embedding 层,并用 MLP+LSTM 的方式来对 Prompt Embedding进行一层处理。 相比Prefix Tuning,仅在输入层加入的可微的virtual token;另外,virtual token的位置也不一定是前缀,插入的位置是可选的。

特点:

  • 引入一个prompt encoder(由一个双向的 LSTM +两层 MLP 组成)来建模virtual token的相互依赖会收敛更快,效果更好。

1.5. P-Tuning v2

该方法在每一个 Transformer 层都加入了prompt token作为输入,引入多任务学习,针对不同任务采用不同的提示长度。 并且回归传统的分类标签范式,而不是映射器。

特点:

  • 解决了Prompt Tuning无法在小模型上有效提升的问题
  • 移除了对模型效果改进较小的重参数化的编码器(如:Prefix Tuning中的 MLP、P-Tuning 中的 LSTM)
  • 对于一些复杂的硬序列标记任务(即序列标注)取得了不错的效果。

1.6. Adapter Tuning

该方法设计了 Adapter 结构,并将其嵌入 Transformer 的结构里面,针对每一个 Transformer 层,增加了两个 Adapter 结构,在训练时,固定住原来预训练模型的参数不变,只对新增的 Adapter 结构和 Layer Norm 层进行微调。 特点:

  • 通过在 Transformer 层中嵌入 Adapter 结构,在推理时会额外增加推理时长

1.7. LoRA

该方法通过低秩分解来模拟参数的改变量,从而以极小的参数量来实现大模型的间接训练。

特点:

  • 将 BA 加到 W 上可以消除推理延迟。
  • 可以通过可插拔的形式切换到不同的任务。
  • 设计的比较好,简单且效果好。

1.8. QLoRA

使用一种新颖的高精度技术将预训练模型量化为 4 bit,然后添加一小组可学习的低秩适配器权重,这些权重通过量化权重的反向传播梯度进行微调。

特点:

  • 使用 QLoRA 微调模型,可以显著降低对于显存的要求。同时,模型训练的速度会慢于 LoRA。

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

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

1.10. 总结

主要有如下几类参数高效微调方法:

  • 增加额外参数,如:Prefix Tuning、Prompt Tuning、Adapter Tuning及其变体
  • 选取一部分参数更新,如:BitFit
  • 引入重参数化,如:LoRA、QLoRA
  • 混合高效微调,如:MAM Adapter、UniPELT
Copyright © 版权信息 all right reserved,powered by Gitbook该文件修订时间: 2024-12-17 17:05:38

results matching ""

    No results matching ""