主流PEFT(详细版)

大模型微调可以大概分为全量微调和PEFT两种。

PEFT旨在最小化微调参数的数量和计算复杂度,来提高预训练模型在新任务的性能,从而缓解大型预训练模型的训练成本。

主流的PEFT有七种,Lora,Qlora,Adapter Tuning, Prefix Tuning, P-Tuning和 P-Tuning v2 

1.Lora

的核心思路是在模型的关键层中添加小型低秩的矩阵来调整模型的行为,而不是直接改变真个模型的结构。 

好处:不增加太多额外的计算负担的情况下,有效调整模型,保持其原有的性能。

2.QLORA

是一种高效的模型微调方法, 在lora的基础上引入了深度量化过程,Qlora的核心是首先将模型用4-bit加载,然后再训练时将模型反量化到bf16后进行训练,这种设计可以显著减少训练所需的显存。

 3.Adapter Tuning

是在模型的每一层或者特定层之间插入小的神经网络模块,称为adapters,这些adapters是可以训练的,而原始模型的参数保持不变。

4.Prompt Tuning 

关注于设计输入提示以引导模型生成期望的输出,通常用于文本分类,情感分析。

核心原理: PLM(预训练模型)不变,W(模型的权重)不变,X(模型输入)改变。

5.Prefix Tuning 

涉及在模型输入中添加一个可训练的前缀向量,向每个变换器块添加可训练的张量。用于在保持模型大部分参数不变的同时对特定任务进行微调,Prefix Tuning 特别适用于需要捕捉复杂上下文信息的任务,适用于文本生成。

PLM(预训练模型)不变,W(模型的权重)不变,X(模型输入)不变,增加W’(前缀嵌入的权重)。

Prompt-tuning主要关注于输入序列的修改,而Prefix-tuning则是对模型内部自回归过程的初始化状态进行调整 

6.P-Tuning 

(论文:GPT Understands, Too),该方法将Prompt转换为可以学习的Embedding层,并用MLP+LSTM的方式来对Prompt Embedding进行一层处理。

相比Prefix Tuning,P-Tuning加入的可微的virtual token,但仅限于输入层,没有在每一层都加;另外,virtual token的位置也不一定是前缀,插入的位置是可选的。这里的出发点实际是把传统人工设计模版中的真实token替换成可微的virtual token。

7.P-Tuningv2

在每一层都加入了Prompts tokens作为输入,而不是仅仅加在输入层,这带来两个方面的好处:

  • 更多可学习的参数(从P-tuning和Prompt Tuning的0.01%增加到0.1%-3%),同时也足够参数高效。
  • 加入到更深层结构中的Prompt能给模型预测带来更直接的影响。
  • 移除重参数化的编码器。以前的方法利用重参数化功能来提高训练速度和鲁棒性(如:Prefix Tuning中的MLP、P-Tuning中的LSTM))。在 P-tuning v2 中,作者发现重参数化的改进很小,尤其是对于较小的模型,同时还会影响模型的表现。
  • 针对不同任务采用不同的提示长度。提示长度在提示优化方法的超参数搜索中起着核心作用。在实验中,我们发现不同的理解任务通常用不同的提示长度来实现其最佳性能,这与Prefix-Tuning中的发现一致,不同的文本生成任务可能有不同的最佳提示长度。
  • 引入多任务学习。先在多任务的Prompt上进行预训练,然后再适配下游任务。多任务学习对我们的方法来说是可选的,但可能是相当有帮助的。一方面,连续提示的随机惯性给优化带来了困难,这可以通过更多的训练数据或与任务相关的无监督预训练来缓解;另一方面,连续提示是跨任务和数据集的特定任务知识的完美载体。我们的实验表明,在一些困难的序列任务中,多任务学习可以作为P-tuning v2的有益补充。
  • 回归传统的分类标签范式,而不是映射器。标签词映射器(Label Word Verbalizer)一直是提示优化的核心组成部分,它将one-hot类标签变成有意义的词,以利用预训练语言模型头。尽管它在few-shot设置中具有潜在的必要性,但在全数据监督设置中,Verbalizer并不是必须的。它阻碍了提示调优在我们需要无实际意义的标签和句子嵌入的场景中的应用。因此,P-Tuning v2回归传统的CLS标签分类范式,采用随机初始化的分类头(Classification Head)应用于tokens之上,以增强通用性,可以适配到序列标注任务。
### PEFT适配器概述 参数高效微调(Parameter-Efficient Fine-Tuning, PEFT)适配器是一种用于改进预训练模型性能的技术,特别适用于资源受限环境下的迁移学习。通过引入少量可训练参数来调整大型预训练模型的行为,而不是重新训练整个网络中的所有权重,从而实现更高效的优化过程[^1]。 ### 库支持情况 目前多个主流机器学习框架已经集成了对于PEFT的支持: - **Hugging Face Transformers**: 提供了`AdapterTuner`类以及其他辅助工具函数以便于开发者快速集成此功能; - **PyTorch Lightning**: 可以借助第三方插件轻松添加对PEFT模块的支持; 这些库不仅简化了API接口设计还提供了丰富的文档说明帮助使用者更好地理解和应用这项技术[^2]。 ### 使用方法详解 为了便于理解如何实际操作,在这里给出一段基于Transformers库的应用实例代码如下所示: ```python from transformers import AutoModelForSequenceClassification, AdapterConfig model_name_or_path = "bert-base-uncased" adapter_config = AdapterConfig(mh_adapter=True, output_adapter=True) # 加载基础BERT模型并配置自定义适配层结构 model = AutoModelForSequenceClassification.from_pretrained(model_name_or_path) model.add_adapter("peft_example", config=adapter_config) # 启用特定任务上的微调模式 model.train_adapter("peft_example") # 训练完成后保存当前状态到磁盘文件夹内 save_directory="./results/" model.save_all_adapters(save_directory) ``` 上述脚本展示了怎样加载一个预先存在的语言模型,并为其附加一个新的适配组件来进行针对性领域内的再训练工作流程[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值