PEFT

随着大语言模型的参数量越来越大,进行大模型的全量微调成本很高。高成本主要体现在硬件资源要求高,显存占用多;训练速度慢,耗时长;存储成本高。高效参数微调 (Parameter-Efficient Finetuning Techniques, PEFT) 在微调大模型时只训练一小部分参数,而不是训练全量多模型参数。

高效参数微调方法有以下几方面优点:

  • 显存占用少,对硬件资源要求低

  • 训练速度快,耗时更短

  • 更低的存储成本,不同的任务可以共享大部分的权重参数

  • 可能会有更好的模型性能,减轻了过拟合问题

Prompt tuning

Prompt tuning1原本的含义指的是通过修改输入prompt来获得更好的模型效果。这里的提示是硬提示(hard prompt)。我们直接修改输入prompt,输入prompt是不可导的。

与硬提示相对应,软提示微调(soft prompt tuning)将一个可训练张量与输入文本的embeddings拼接起来,这个可训练张量可以通过反向传播来优化,进而提升目标任务的模型效果。这里的可训练张量可以理解为prompt文本对应的embedding,是一个soft prompt。如下图所示,这个可训练张量的形状是[soft_tokens_num, embed_size]

Prompt tuning冻结大模型原始的参数,只训练这个新增加的prompt张量。prompt tuning随着基座模型参数量的增大效果会变好。

Prefix tuning

Prefix tuning[14]与Prompt tuning相似,将一个特定任务的张量添加到输入,这个张量是可训练的,保持预训练模型的参数不变。主要区别如下:

  1. prefix tuning将prefix参数(可训练张量)添加到所有的transformer层,而prompt tuning只将可训练矩阵添加到输入embedding。具体地,prefix tuning会将prefix张量作为past_key_value添加到所有的transformer层。

  2. 用一个独立的FFN来编码和优化prefix参数,而不是直接优化soft prompt,因为它可能造成不稳定并损害性能。在更新完soft prompt后,就不再使用FFN了。


Reference