关于大模型参数微调的不同方法

Adapter Tuning

适配器模块(Adapter Moudle)可以生成一个紧凑且可扩展的模型;每个任务只需要添加少量可训练参数,并且可以在不重新访问之前任务的情况下添加新任务。原始网络的参数保持不变,实现了高度的参数共享

Paper 1: Parameter-Efficient Transfer Learning for NLP

  • 为了证明适配器的有效性,我们将最近提出的BERT Transformer模型应用于26个不同的文本分类任务,包括GLUE基准测试 : https://github.com/google-research/adapter-bert

adapter 的优点:
(i) 它可以获得良好的性能,
(ii) 它允许按顺序对任务进行训练,即不需要同时访问所有数据集,
(iii) 它每个任务只添加了少量额外的参数。
(iv)一个接近恒等初始化的方法。通过将适配器初始化为接近恒等函数的方式,当训练开始时,原始网络不受影响。在训练过程中,适配器可以被激活,从而改变整个网络中的激活分布

在这里插入图片描述

适配器还包含一个跳跃连接。在适配器微调过程中,绿色层使用下游数据进行训练,包括适配器、层归一化参数以及最终的分类层(图里没有)

实验:
在这里插入图片描述

  • Adapter for Tansformer
    在这里插入图片描述

Paper2:LLaMA-Adapter

Efficient Fine-tuning of Language Models with Zero-init Attention

我们提出了LLaMA-Adapter,一种轻量级的适应方法,可以高效地将LLaMA模型微调为指令跟随模型。使用52K个自我指导演示,LLaMA-Adapter仅在冻结的LLaMA 7B模型上引入了1.2M个可学习参数,并且在8个A100 GPU上的微调时间不到一小时

  • 具体而言,我们采用一组可学习的适应提示,并将它们预置到较高的Transformer层的单词标记之前。(前缀 Prefix
  • 然后,我们提出了一个以零初始化的注意机制和零门控的方式,它可以自适应地将新的指令提示注入到LLaMA模型中,同时有效地保留其预训练的知识。
  • 通过我们高效的训练,LLaMA-Adapter可以生成高质量的响应,与完全微调的7B参数的Alpaca模型相媲美。除了语言指令,我们的方法还可以简单地扩展到多模态指令,用于学习基于图像的LLaMA模型,在ScienceQA和COCO Caption基准测试上实现了更优秀的推理性能。
    此外,我们还评估了以零初始化的注意机制在传统视觉和语言任务上微调其他预训练模型(ViT,RoBERTa),展示了我们方法的优越的泛化能力。
  • 这么NB ????
    在这里插入图片描述

在这里插入图片描述

  • 为了逐步学习指令知识,在早期阶段我们采用了以零初始化的注意机制和门控机制,以实现稳定的训练

如果适应提示被随机初始化,它们可能会在训练初期对单词标记带来干扰,从而损害微调的稳定性和有效性。考虑到这一点,我们修改了最后L个Transformer层上的普通注意机制,将其改为零初始化的注意机制,如图2所示。

过去的PEFT方法是直接插入随机初始化的模块, 这可能导致早期训练阶段有较大loss的不稳定微调.
llama采用zero-init attention with gating来缓解这种问题.

  • insert the prompts into the topmost L layers of the transformer (L ≤ N ):
    prompts for L transformer layers: P l L P_l^L PlL
  • 其中, P_shape=[K, C], K表示每一层的prompt长度, C表示feature dimension.
    在第l层中, 有长度为M的word-tokens: T l ∈ R M × C T_l ∈ R^{M×C} TlRM×C 即: 长度为M, 每个token feature dimension为C.
  • 将prompt Pl 与 tokens Tl, 进行concatenation.
  1. 计算某一层中,第M+1个word和所有的K+M+1个token的关系
    在这里插入图片描述
  • K   A d a p t i o n   P r o m p t s K \ Adaption \ Prompts K Adaption Prompts 的注意力分数,它代表从prompt中学到了多少信息去生成 t i t_i ti
    在这里插入图片描述
    在这里插入图片描述

  • 核心操作
    在这里插入图片描述

  • 门控系数g,来控制注意力的重要性(注意力分数的影响程度)

    • 首先令g = 0,消除之前的prompt的影响程度
    • 然后增加其幅度,以提供更多的指令语义给LLaMA模型。
    • 这两个步骤需要分开,softmax。原因是,保证两部分的相互独立,不会受到之前的adaptive prompt的影响
    • g一般分开取不同值与多头注意力一起

在这里插入图片描述
在这里插入图片描述
文章链接:https://arxiv.org/pdf/2303.16199.pdf

Paper3 AdaMix

multi-view learning, mixture-of-experts的再利用**, 在adapter中设置了多个降维和升维通路**

  • 训练过程中,adapter内进行随机路由;
  • 推理过程中,则通过Averaging weights得到一个综合的降维升维通路

这种方式允许adapter进行multi-view learning,又不会增加相比单路adapter更多的参数。
在这里插入图片描述

Prefix Tuning

Optimizing Continuous Prompts for Generation

解决的问题:大模型进行微调的代价很大,应该怎么办?

  • 考虑生成数据表的文本描述的任务,如图 1 所示,其中任务输入是线性化表(例如,“名称:星巴克 | 类型:咖啡店”),输出是文本描述(例如,“星巴克供应咖啡。”)。
    • Prefix-tuning将一系列连续的特定于任务的向量添加到输入中,我们称之为Prefix(前缀)
    • Transformer 可以将前缀视为一系列“虚拟token”,但与prompt不同,前缀完全由不对应于真实令牌的自由参数组成。

针对不同的任务,是需要微调prefix即可,不用去调Transformer本身的参数,所有参数量大幅度减小。(图中红色的部分是在微调过程中需要进行优化的地方)
在这里插入图片描述

在这里插入图片描述

  • 前缀的参数P, P θ P_θ Pθ P θ ′ P_θ' Pθ具有相同的行数(即前缀长度),但列数不同。一旦训练完成,这些重新参数化参数可以被丢弃,只需要前缀 P_θ已保存

在这里插入图片描述
在这里插入图片描述

Auto Tuning

Light weight Tuning

轻量级微调。轻量级微调冻结了大部分预训练参数,并使用小的可训练模块修改预训练模型。关键挑战是确定模块的高性能架构和要微调的预训练参数子集。

  • 一种研究方法考虑移除参数:通过在模型参数上训练二进制掩码,一些模型权重被消融掉。
  • 另一种研究方法考虑插入参数。
    • 通过求和将“边缘”网络与预训练模型融合;
    • 适配器微调在预训练语言模型的每个层之间插入任务特定的层(适配器)。

与这一系列工作相比,该方法仅微调了LM参数的约3.6%,而我们的方法在保持可比性能的同时,进一步减少了任务特定参数的30倍,仅微调了0.1%。

Soft Prompt Tuning

Prompt Tuning

P Tuning


Code

  • 代码Demo:https://huggingface.co/docs/peft/task_guides/clm-prompt-tuning
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值