- PEFT(parameter efficient fine-tuning) :additive(增量模型), adapters , soft prompts, selective, reparametrization-based(基于重参数化方法), 2.adapters :适配器, 对模型某一个模块添加分支,独立模块adapter内部学习降维后特征,减少参数, 使用skip-connection(旁路)最差退化为identity,类似resnet,参数只有百分之一到百分之三,是真的需要学习,
- soft prompt : 针对task-specific tuning,常用的prefix tuning 和 prompt tuning
-
prefix tuning:让大模型学习prompt, 千分之一的参数,借鉴提示基础(prompting)思想,虚拟token(初始化值),引导模型生成与任务相关的文本,在预训练transformer前增加prefix模块,仅训练prefix,冻结transformer,prefix任务特定的指令集,引导模块生成特定任务的输出。在训练语句前面添加prefix-tuning(虚拟的上下文),(需要高超的技巧),小样本上甚至效果超过全参数微调。
-
prompt tuning: 软提示,学习提示词,构造提示词数据集, 使用冻结的语言模型来适应特定的下游任务,学习prompt的特点,传统的模型微调需要为每个下游任务制作预训练模型的任务特定副本,且推理必须在单独的批次中进行,prompt tuning 仅需为每个任务存储一个小的任务特定提示,允许使用原始预训练模型进行混合任务推理,
-
p-tuning: prompt encode ,将提示prompt转化为可学习的嵌入层(embedding layer),与传统的离散提示相结合使用。适用于完全监督和少量样本,
-
P-tuning v2: 只需要新增0.1%训练参数情况下,与全量微调性能相当,把提示词的encoder后的添加到预训练encode的前边,(layer prompts)
** 当数据足够多,修改模型提示词没有很大的差异,没有修改模型的权重矩阵,通过操作输入数据来影响模型的输出。**
- 重参数化(reparametrization - base)训练方法
-
量化:整数计算代替浮点数计算的方法就是量化,量化简单来说:将用小数计算结果的模型,转换成用整数计算,中间自然有精度损失(因为小数位没了,而且浮点数翻译成整形再转回来是有损压缩过程),NormalFloat(NF)
-
Lora 低秩适配微调 low-rank adaptation,更有通用性,改模型参数了
-
adaLora 自适应权重矩阵微调,自适应本征秩r,使用SVD(奇异值分解)提升矩阵低秩分解性能,模型剪枝,(选取模块,选取层),针对下游任务,敏感性,滑动平均,
-
QLora 量化低秩适配微调:硬件存储格式上,量化大模型做高效微调,byte(字节,大B)是8 bit(比特), quantized LLMS, NF4是 4-bit NormalFloat(用更小的资源表达更大的上下界) ,双量化,paged Optimizers , Qlora有存储数据类型(4-bite NormalFloat)和计算数据类型(16-bit brainFloat),降低显存开销,跟你使用的基础模型无关,
-
UniPELT: 大模型PEFT统一框架(语言模型微调框架),门控机制,adapters(一般在FFN处接入,接入方式是串行或并行), soft prompts, representation-based(缩放因子 scale Rank r, 模型类型和模型参数),集成了三类技术,在小样本上更优于单一技术,
- 增量训练方法 (IA)³
通过学习向量来对激活层加权进行缩放,infused adapter by inhibiting and amplifying inner activation(通过抑制和放大内部激活来注入适配器),T0大模型团队,修改了损失函数以适应小样本学习,无需针对特定任务进行调整或修改即可应用于新任务,原始训练权重保持冻结状态,仅使用万分之一的参数进行训练,用于构建下游任务,用IA3进行微调的模型性能与完全微调模型的性能不相上下,小样本微调激活层的缩放因子,