大模型PEFT技术原理(一):BitFit、Prefix Tuning、Prompt Tuning

这篇具有很好参考价值的文章主要介绍了大模型PEFT技术原理(一):BitFit、Prefix Tuning、Prompt Tuning。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

       随着预训练模型的参数越来越大,尤其是175B参数大小的GPT3发布以来,让很多中小公司和个人研究员对于大模型的全量微调望而却步,近年来研究者们提出了各种各样的参数高效迁移学习方法(Parameter-efficient Transfer Learning),即固定住Pretrain Language model(PLM)的大部分参数,仅调整模型的一小部分参数来达到与全部参数的微调接近的效果(调整的可以是模型自有的参数,也可以是额外加入的一些参数)。本文将介绍一些常见的参数高效微调技术,比如:BitFit、Prefix Tuning、Prompt Tuning、P-Tuning、P-Tuning v2、Adapter Tuning及其变体、LoRA、AdaLoRA、QLoRA、MAM Adapter、UniPELT等。

1、BitFit

论文地址:https://aclanthology.org/2022.acl-short.1.pdf

代码地址:https://github.com/benzakenelad/BitFit

       BitFIt只对模型的bias进行微调。在小规模-中等规模的训练数据上,BitFit的性能与全量微调的性能相当,甚至有可能超过,在大规模训练数据上,与其他fine-tuning方法也差不多。在大模型中bias存在Q,K,V,MLP,LayerNorm中,具体公式如下:

大模型PEFT技术原理(一):BitFit、Prefix Tuning、Prompt Tuning,ChatGPT,笔记,prompt,人工智能

大模型PEFT技术原理(一):BitFit、Prefix Tuning、Prompt Tuning,ChatGPT,笔记,prompt,人工智能

大模型PEFT技术原理(一):BitFit、Prefix Tuning、Prompt Tuning,ChatGPT,笔记,prompt,人工智能

      在Bert-Base/Bert-Large这种模型里,bias参数仅占模型全部参数量的0.08%~0.09%。但是通过在Bert-Large模型上基于GLUE数据集进行了 BitFit、Adapter和Diff-Pruning的效果对比发现,BitFit在参数量远小于Adapter、Diff-Pruning的情况下,效果与Adapter、Diff-Pruning想当,甚至在某些任务上略优于Adapter、Diff-Pruning。

大模型PEFT技术原理(一):BitFit、Prefix Tuning、Prompt Tuning,ChatGPT,笔记,prompt,人工智能

       通过Bitfit训练前后的参数对比,发现很多bias参数没有太多变化,例如跟计算key所涉及到的bias参数。发现其中计算query与中间MLP层的bias(将特征维度从N放大到4N的FFN层——将输入从768d转化为到3072d)变化最为明显,只更新这两类bias参数也能达到不错的效果,反之,固定其中任何一者,模型的效果都有较大损失。

大模型PEFT技术原理(一):BitFit、Prefix Tuning、Prompt Tuning,ChatGPT,笔记,prompt,人工智能

作者给出了Hugging Face与BitFit参数的映射关系表,如下所示:

大模型PEFT技术原理(一):BitFit、Prefix Tuning、Prompt Tuning,ChatGPT,笔记,prompt,人工智能

2、Prefix Tuning

论文地址:https://arxiv.org/pdf/2101.00190.pdf

代码地址:https://github.com/XiangLi1999/PrefixTuning

       prefix-tuning方法是一个轻量级的fine-tuning方法用于自然语言处理的生成任务。该方法可以保持预训练语言模型参数固定(frozen),而只需要在task-specific vector(称为prefix)上进行优化。即只需要少量(约0.1%)的优化参数,即可以在量和小量数据上达到不错的效果。

针对不同的模型结构,需要构造不同的Prefix。

  • 针对自回归架构模型:在句子前面添加前缀,得到 z = [PREFIX; x; y],合适的上文能够在固定 LM 的情况下去引导生成下文(比如:GPT3的上下文学习)。

  • 针对编码器-解码器架构模型:Encoder和Decoder都增加了前缀,得到 z = [PREFIX1; x; PREFIX2; y]。Encoder端增加前缀是为了引导输入部分的编码,Decoder 端增加前缀是为了引导后续token的生成。

大模型PEFT技术原理(一):BitFit、Prefix Tuning、Prompt Tuning,ChatGPT,笔记,prompt,人工智能

        如上图所示,  表示prefix indices序列,  表示prefix的长度。Prefix-tuning通过初始化可训练矩阵  (维度为  )来存储prefix参数:

 

       training objective与Fine-tuning相同,但语言模型的参数 固定,仅仅prefix参数是可训练参数。因此是可训练的的函数,当时,   由  直接复制得到,对于  , 由于prefix activations始终在left context因此可以影响到    。

       在实验上,直接更新  的参数会导致优化的不稳定以及表现上的极具下降。因此通过使用较小的矩阵  通过大型前馈神经网络(  )来reparametrize矩阵  :

  

        其中,  和  在相同的行维度(也就是相同的prefix length), 但不同的列维度。当训练完成后,reparametrization参数被丢掉,仅仅  需要被保存下来。

        实验中对比了Fine Tuning和Prefix Tuning在E2E、WebNLG和DART三个table-to-text任务上的效果:

大模型PEFT技术原理(一):BitFit、Prefix Tuning、Prompt Tuning,ChatGPT,笔记,prompt,人工智能

大模型PEFT技术原理(一):BitFit、Prefix Tuning、Prompt Tuning,ChatGPT,笔记,prompt,人工智能

3、Prompt Tuning

论文地址:https://arxiv.org/pdf/2104.08691.pdf

代码地址:https://github.com/google-research/prompt-tuning

       Prompt Tuning可以看作是Prefix Tuning的简化版本,面向NLU任务,进行了更全面的效果对比,并且在大模型上成功打平了LM微调的效果,它给每个任务定义了自己的Prompt,然后拼接到数据上作为输入,但只在输入层加入prompt tokens,并且不需要加入 MLP 进行调整来解决难训练的问题。通过反向传播更新参数来学习prompts,而不是人工设计prompts;同时冻结模型原始权重,只训练prompts参数,训练完以后,用同一个模型可以做多任务推理。

大模型PEFT技术原理(一):BitFit、Prefix Tuning、Prompt Tuning,ChatGPT,笔记,prompt,人工智能

对比Prefix-Tunning,prompt-tuning的主要差异如下,

      论文使用100个prefix token作为默认参数,大于以上prefix-tuning默认的10个token,不过差异在于prompt-Tunning只对输入层(Embedding)进行微调,而Prefix是对虚拟Token对应的上游layer全部进行微调。因此Prompt-Tunning的微调参数量级要更小,且不需要修改原始模型结构,这是“简化”的来源。相同的prefix长度,Prompt-Tunning(<0.01%)微调的参数量级要比Prefix-Tunning(0.1%~1%)小10倍以上,如下图所示

大模型PEFT技术原理(一):BitFit、Prefix Tuning、Prompt Tuning,ChatGPT,笔记,prompt,人工智能

      为什么上面prefix-tuning只微调embedding层效果就不好,放在prompt-tuning这里效果就好了呢?因为评估的任务不同无法直接对比,个人感觉有两个因素,一个是模型规模,另一个是继续预训练,前者的可能更大些,在下面的消融实验中会提到   

效果&消融实验

      在SuperGLUE任务上,随着模型参数的上升,PromptTunning快速拉近和模型微调的效果,110亿的T5模型(上面prefix-tuning使用的是15亿的GPT2),已经可以打平在下游多任务联合微调的LM模型,并且远远的甩开了Prompt Design(GPT3 few-shot)

大模型PEFT技术原理(一):BitFit、Prefix Tuning、Prompt Tuning,ChatGPT,笔记,prompt,人工智能

      作者也做了全面的消融实验,包括以下4个方面,最核心的感受就是只要模型足够够大一切都好说

  1. prompt长度(a):固定其他参数,作者尝试了{1,5,20,100,150}, Prompt token 的长度在20左右时的表现已经不错(超过20之后,提升Prompt token长度,对模型的性能提升不明显了),同样的,这个gap也会随着模型参数规模的提升而减小(即对于超大规模模型而言,即使 Prompt token 长度很短,对性能也不会有太大的影响);

  2. Prompt初始化(b): 作者尝试了随机uniform初始化,用标签文本空间初始化,和用Top5K高频词采样初始化,在10^8规模,类标签词初始化效果最好。作者发现预测label也会在对应prompt空间内。不过到百亿规模后,初始化带来的影响就会消失;

  3. T5继续预训练(c):作者认为T5本身的Span Corruption预训练目标和掩码词,并不适合冻结LM的场景,因为在微调中模型可以调整预训练目标和下游目标的差异,而只使用prompt可能无法弥合差异。其实这里已经能看出En-Dn框架在生成场景下没有GPT这样的Decoder来的自然。因此作者基于LM目标对T5进行继续预训练;

  4. 继续预训练step(d):以上的继续预训练steps,继续预训练步数越高,模型效果在不同模型规模上越单调;

大模型PEFT技术原理(一):BitFit、Prefix Tuning、Prompt Tuning,ChatGPT,笔记,prompt,人工智能

可解释性

      考虑Prompt-Tunning使用Embedding来表征指令,可解释性较差。作者使用cosine距离来搜索prompt embedding对应的Top5近邻。发现如下:

  • embedding的近邻出现语义相似的cluster,例如{ Technology / technology / Technologies/ technological / technologies }, 说明连续prompt实际可能是相关离散prompt词的聚合语义

  • 当连续prompt较长(len=100), 存在多个prompt token的KNN相同:个人认为这和prefix-tuning使用MLP那里我的猜测相似,prompt应该是一个整体

  • 使用标签词初始化,微调后标签词也大概率会出现在prompt的KNN中,说明初始化可以提供更好的prior信息加速收敛文章来源地址https://www.toymoban.com/news/detail-822664.html

到了这里,关于大模型PEFT技术原理(一):BitFit、Prefix Tuning、Prompt Tuning的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 大语言模型LLM微调技术:Prompt Tuning

    大语言模型LLM微调技术:Prompt Tuning

    截止23年3月底,语言模型发展走过了三个阶段: 第一阶段 :设计一系列的自监督训练目标(MLM、NSP等),设计新颖的模型架构(Transformer),遵循Pre-training和Fine-tuning范式。典型代表是BERT、GPT、XLNet等; 第二阶段 :逐步扩大模型参数和训练语料规模,探索不同类型的架构。

    2024年02月03日
    浏览(7)
  • 一文读懂大型语言模型参数高效微调:Prefix Tuning与LLaMA-Adapter

    一文读懂大型语言模型参数高效微调:Prefix Tuning与LLaMA-Adapter

    芝士AI吃鱼 在快速发展的人工智能领域中,高效、有效地使用大型语言模型变得日益重要,参数高效微调是这一追求的前沿技术,它允许研究人员和实践者在最小化计算和资源占用的同时,重复使用预训练模型。这还使我们能够在更广泛的硬件范围内训练AI模型,包括计算能

    2024年01月17日
    浏览(9)
  • 【提示学习论文七】Visual Prompt Tuning论文原理

    【提示学习论文七】Visual Prompt Tuning论文原理

    这篇文章于2022年发表在ECCV(European Conference on Computer Vision),作者是Menglin Jia, Luming Tang,Bor-Chun Chen, Claire Cardie, Serge Belongie,Bharath Hariharan, Ser-Nam Lim。 VPT是一种有效的用于大规模Transformer的视觉微调,只需要在输入空间引入少量可训练参数,同时冻结backbone。 目前适应预训练模

    2024年01月17日
    浏览(10)
  • 【LLM】Prompt tuning大模型微调实战

    【LLM】Prompt tuning大模型微调实战

    prompt tuning可看做是prefix tuning的简化版本,在输入层加入prompt tokens,并不需要加入MLP进行调整来解决难训练的问题,作者实验表明随着预训练模型参数量的增加,prompt tuning效果逼近fine tuning效果 之前提到过可以借助 peft 库(Parameter-Efficient Fine-Tuning)进行微调,支持如下tuni

    2024年02月13日
    浏览(9)
  • 【论文极速读】Prompt Tuning——一种高效的LLM模型下游任务适配方式

    【论文极速读】Prompt Tuning——一种高效的LLM模型下游任务适配方式

    【论文极速读】Prompt Tuning——一种高效的LLM模型下游任务适配方式 FesianXu 20230928 at Baidu Search Team Prompt Tuning是一种PEFT方法(Parameter-Efficient FineTune),旨在以高效的方式对LLM模型进行下游任务适配,本文简要介绍Prompt Tuning方法,希望对读者有所帮助。如有谬误请见谅并联系指

    2024年02月07日
    浏览(7)
  • 【论文解读】Prefix-Tuning: Optimizing Continuous Prompts for Generation

    【论文解读】Prefix-Tuning: Optimizing Continuous Prompts for Generation

    一.介绍 1.1 前置知识 1.1.1 in-context learning At the limit, GPT-3 (Brown et al, 2020) can be deployed using in-context learning, which is a form of prompting, without modifying any LM parameters. \\\"部署\\\" 指的是将 GPT-3 模型用于实际应用或特定任务的过程。 \\\"In-context learning\\\" 是一种 通过提供上下文或附加信息来指导

    2024年02月07日
    浏览(4)
  • 【LLM微调范式1】Prefix-Tuning: Optimizing Continuous Prompts for Generation

    【LLM微调范式1】Prefix-Tuning: Optimizing Continuous Prompts for Generation

    论文标题:Prefix-Tuning: Optimizing Continuous Prompts for Generation 论文作者:Xiang Lisa Li, Percy Liang 论文原文:https://arxiv.org/abs/2101.00190 论文出处:ACL 2021 论文被引:1588(2023/10/14) 论文代码:https://github.com/XiangLi1999/PrefixTuning 传统的预训练+微调范式的问题:下游任务微调时,需要更新

    2024年02月07日
    浏览(6)
  • ChatGPT技术原理 第四章:Transformer模型

    目录 4.1 什么是Transformer 4.2 Transformer结构详解 4.3 Self-Attention机制 4.4 Multi-Head Attention机制

    2024年02月02日
    浏览(11)
  • Prefix-tuning、Adapter、LLaMA-Adapter的流程图与伪代码实现

    Prefix-tuning、Adapter、LLaMA-Adapter的流程图与伪代码实现

    流程图: 代码: 流程图: 代码: 流程图: 代码:

    2024年02月11日
    浏览(9)
  • ChatGPT进阶:利用Fine-tuning训练自己的模型

    ChatGPT是“大力出奇迹”的经典表现,大模型给ChatGPT带来了惊人的智能,但是要训练这样的大模型,可是十分烧钱的,根据OpenAI给出的数据,1700亿参数的Davinci模型从头训练一遍,大概需要耗时3个月,耗资150万美元。那我们普通人或者小公司面对这个高门槛,对自定义模型是

    2024年02月17日
    浏览(7)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包