PEFT(Parameter-Efficient Fine-Tuning)是hugging face开源的一个参数高效微调大模型的工具,里面集成了4中微调大模型的方法,可以通过微调少量参数就达到接近微调全量参数的效果,使得在GPU资源不足的情况下也可以微调大模型。
1)LORA:LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS
LORA是PEFT中最常用的方法,LORA认为过参数的模型权重其实存在低内在维度,那么模型适应过程中的权重变化也存在低内在维度,因此模型在微调的过程中实际上可以通过微调低秩矩阵来微调模型。LORA的微调过程如下:在Linear层增加一个“旁路”, “旁路”用A、B两个矩阵组合表示,维度分别是d × r和 r × d,其中r远小于d,A随机初始化,B初始化为0,在微调模型的过程中,左边的W不更新,只更新右边的A和B的参数。前向传播时是左右的输出和,反向传播时只更新右边,因此计算的梯度以及优化器的中间值也只和右边有关,最终右边的参数会单独保存下来。LORA这种训练方式不会改变大模型的参数,且针对每个下游任务生成自己的LORA参数,在预测阶段只要将大模型的参数和LORA参数叠加在一起即可。
LORA还提供了单独的库loralib,可以结合pytorch一起使用。