可以分为基于适配器、基于提示的。
一、基于适配器的方法
其核心思想是在预训练模型的各层之间插入轻量级的额外模块——适配器,通过仅微调这些适配器模块以适应特定的下游任务,同时冻结原模型的大部分参数。
1.Lora系列
原始的Lora
LoRA 表示通过低秩分解使用两个较小矩阵(称为更新矩阵)的权重更新 ∆W。
X-LoRA
X-LoRA 将 LoRA 的低秩适配器与 MoE 的专家机制相结合,引入多个 LoRA 适配器作为专家,根据输入动态选择部分适配器进行参数调整。
输入数据
|
|— 第一次前向传播(基础模型) —> 隐藏状态
|
|— 计算缩放系数
|
|— 调整 LoRA 适配器
|
|— 第二次前向传播(基础模型 + LoRA 适配器) —> 最终输出
AdaLoRA
AdaLoRA 通过动态分配参数预算,针对任务中更为重要的权重矩阵分配更多参数(即更高的秩
𝑟),并修剪掉不太重要的权重矩阵。∆W 分为多个三元组,每个三元组根据其对模型性能的贡献进行评分。重要性分数低的三元组被修剪,而重要性分数高的三元组被保留以供微调。
首先,我们为重要性更低的模块分配更小的秩,那么将有效的减少模型的计算量。其次,如果我们能够为更重要的特征分配更大的秩,那么将能够更有效的捕捉特征的细节信息。
QLoRA
QLoRA的优化有三个核心要点:
首先是定义了一种4位标准浮点数(Normal Float 4-bit,NF4)量化,基于分块的分位数量化的量化策略;
其次是双重量化,包含对普通参数的一次量化和对量化常数的再一次量化,可以进一步减小缓存占用;
最后是分页优化器(Page Optimizer),用来在显存过高时用一部分内存代替显存。
LongLoRA
一般的transformer的attention计算复杂度为 O(n^2)为序列长度,使得llm长文本微调训练慢且资源消耗多。
主要贡献:稀疏局部注意力: 引入了一种称为“shift short attention”(S²-Attn)的机制,以减少计算复杂度并提高效率。
将输入序列分成多个短序列(例如,每个短序列长度为 m),然后对这些短序列分别进行注意力计算。通过将短序列的结果合并,从而近似全局注意力的效果
二、提示方法
提示分为硬提示和软提示。
硬提示是续写,直接加字符,类似于base模型。对提示敏感,难以找到合适的。
软提示是在输入端的嵌入层加入一段连续的向量。缺点是它们不是人类可读的。
Prefix-tuning 前缀优化
Prefix-tuning的核心在于将一个连续的可训练向量(前缀)添加到模型输入中。这些前缀向量不对应于实际的单词,而是自由参数,直接影响模型的内部状态。通过优化这些前缀,模型能够更好地适应不同的生成任务。
每一层都有。
Prompt tuning 提示调优
通过冻结整个预训练模型,只允许每个下游任务在输入文本前面添加k个可调的标记(Token)来优化模型参数,赋予语言模型能够执行特定的下游任务的能力。
通常只在输入层添加。
P-tuning P 调优
添加了一个可训练的嵌入张量,可以对其进行优化以找到更好的提示,并使用提示编码器(双向长短期记忆网络或 LSTM)来优化提示参数。
提示标记可以插入输入序列中的任何位置,并且不仅限于开头;
提示标记仅添加到 Input,而不是将它们添加到模型的每一层;
引入锚点标记可以提高性能,因为它们指示输入序列中组件的特征。