大模型微调的方法
对于大模型来说,微调有两种路径:
全量微调FFT(Full Fine Tuning)。 直接在预训练模型上改动参数
高效微调PEFT(Parameter-Efficient Fine Tuning)。 冻结一部分参数,修改一部分
FFT
FFT,类似第三范式中的Fine-tuning,也就是所谓的微调,是在预先训练好的模型的基础上,根据特定领域的数据进行参数调整。
它的特点是,是对全量的参数进行调整,那么有多少个微调,就会产生多少个模型。
再换句话说,它是让模型来适应特定的任务。
关于范式的论文
PEFT
它旨在通过最小化微调参数的数量和计算复杂度,来提高预训练模型在新任务上的性能,从而缓解大型预训练模型的训练成本。
说白了,是为了解决fft的问题
消费级显卡的全参数微调在时间上和硬件上不可行
全参数微调会损失多样性,出现灾难性遗忘,且下游部署、维护繁琐
PEFT是如何解决的:
冻结大部分预训练参数,仅仅更新一部分参数使得模型获得更好的下游任务性能
主要的方法包括:引入额外参数、选取部分参数
PEFT实现思路和FFT刚好相反,它是让任务更好的被预训练的模型所理解,看一下它的常用方法,我直接沾的。
PEFT: Prompt Tuning 方法
它的基本原理是在输入文本中添加任务相关的提示信息,以引导模型更好地完成特定任务。
实现方式是在输入序列X之前,增加一些特定长度的特殊Token,以增大生成期望序列的概率。
具体来说,就是将X = [x1, x2, …, xm]变成,X = [x
1, x2, …, x
k; x1, x2, …, xm], Y = WX`。
如果将大模型比做一个函数:Y=f(X),那么Prompt Tuning就是在保证函数本身不变的前提下,在X前面加上了一些特定的内容,而这些内容可以影响X生成期望中Y的概率。