2018 年谷歌发布了 BERT,一经面世便一举击败 11 个 NLP 任务的 State-of-the-art (Sota) 结果,成为了 NLP 界新的里程碑; BERT 的结构如下图所示, 左边是 BERT 模型预训练过程, 右边是对于具体任务的微调过程。其中, 微调 阶段是后续用于一些下游任务的时候进行微调, 例如: 文本分类, 词性标注, 问答系统等, BERT 无需调整结构 就可以在不同的任务上进行微调。通过”预训练语言模型 + 下游任务微调”的任务设计, 带来了强大的模型效 果。从此,“预训练语言模型 + 下游任务微调”便成为了 NLP 领域主流训练范式。
BERT 结构图,左边是预训练过程,右边是具体任务微调过程
然而,随着以GPT3为代表的大规模语言模型(LLM)参数规模的增加,消费级硬件上进行全量微调变得不可行。下表展示了在一张A100 GPU(80G显存)以及CPU内存64GB以上的硬件上进行模型全量微调以及参数高效微调对于CPU/GPU内存的消耗情况
全量参数微调与参数高效微调显存占用对比
除此之外,全面微调模型还会导致多样性的丧失,并存在严重的遗忘问题。因此,如何高效地进行模型微调已成为业界研究的重点,这也为参数高效微调技术的快速发展提供了研究空间
参数高效微调是指微调少量或额外的模型参数, 固定大部分预训练模型(LLM) 参数, 从而大大降低了计 算和存储成本, 同时, 也能实现与全量参数微调相当的性能。参数高效微调方法甚至在某些情况下比全量微调 效果更好,可以更好地泛化到域外场景。
高效微调技术可以粗略分为以下三大类,如下图所示:增加额外参数(A)、选取一部分参数更新(S)、引入重参数化(R)。 而在增加额外参数这类方法中,又主要分为类适配器(Adapter-like)方法和软提示(Soft prompts)两个小类。
常见的参数高效微调技术包括BitFit、Prefix Tuning、Prompt Tuning、P-Tuning、Adapter Tuning、LoRA等。接下来的章节将对一些主流的参数高效微调方法进行详细讲解
常见的参数高效微调技术和方法
BitFit/Prefix/Prompt 微调系列
BitFit
虽然对每个任务进行全量微调非常有效, 但它也会为每个预训练任务生成一个独特的大型模型, 这使得很 难推断微调过程中发生了什么变化,也很难部署,特别是随着任务数量的增加,很难维护。
理想状况下,我们希望有一种满足以下条件的高效微调方法:
上述的问题取决于微调过程能多大程度引导新能力的学习以及暴露在预训练 LM 中学到的能力。虽然, 之 前的高效微调方法 Adapter-Tuning 、Diff-Pruning 也能够部分满足上述的需求。一种参数量更小的稀疏的微调方 法 BitFit 可以满足上述所有需求。
BitFit 是一种稀疏的微调方法, 它训练时只更新 bias 的参数或者部分 bias 参数。对于 Transformer 模型而言, 冻结大部分 transformer-encoder 参数, 只更新 bias 参数跟特定任务的分类层参数。涉及到的 bias 参数有 attention 模块中计算 query,key,value 跟合并多个 attention 结果时涉及到的bias,MLP 层中的bias,Layernormalization 层的 bias 参数,预训练模型中的bias参数如下图所示。
图片
PLM 模块代表了一个特定的 PLM 子层, 例如注意力或 FFN,图中橙色块表示可训练的提示向量, 蓝色 块表示冻结的预训练模型参数
在 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。
通过实验结果可以看出,相对于全量参数微调,BitFit微调结果只更新了极少量的参数,在多个数据集上都取得了不错的效果。虽然不及全量参数微调,但是远超过固定全部模型参数的Frozen方式。同时,通过对比BitFit训练前后的参数,发现很多偏置参数并没有太多变化,比如与计算key相关的偏置参数。而发现计算query和将特征维度从N放大到4N的FFN层的偏置参数变化最为明显,只更新这两类偏置参数也能取得不错的效果。反之,固定其中任何一者,模型的效果都会有较大损失
Prefix Tuning
在 Prefix Tuning 之前的工作主要是人工设计离散的模版或者自动化搜索离散的模版。对于人工设计的模版, 模版的变化对模型最终的性能特别敏感, 加一个词、少一个词或者变动位置都会造成比较大的变化。而对于自动 化搜索模版, 成本也比较高;同时, 以前这种离散化的 token 搜索出来的结果可能并不是最优的。除此之外, 传 统的微调范式利用预训练模型去对不同的下游任务进行微调, 对每个任务都要保存一份微调后的模型权重, 一 方面微调整个模型耗时长;另一方面也会占很多存储空间。基于上述两点, Prefix Tuning 提出固定预训练 LM,为LM 添加可训练, 任务特定的前缀, 这样就可以为不同任务保存不同的前缀, 微调成本也小; 同时, 这种 Prefix 实际就是连续可微的 Virtual Token (Soft Prompt/Continuous Prompt),相比离散的 Token ,更好优化,效果更好。
那么,需要重写的内容是:那么 prefix 的含义是什么呢?prefix 的作用是引导模型提取 x 相关的信息,进而更好地生成 y。例如,我们要做一个 summarization 的任务,那么经过微调后,prefix 就能领悟到当前要做的是个“总结形式”的任务,然后引导模型去 x 中提炼关键信息;如果我们要做一个情感分类的任务,prefix 就能引导模型去提炼出 x 中和情感相关的语义信息,以此类推。这样的解释可能不那么严谨,但大家可以大致体会一下 prefix 的作用
Prefix Tuning 是在输入 token 之前构造一段任务相关的 virtual tokens 作为 Prefix,然后训练的时候只更新 Prefix 部分的参数,而 PLM 中的其他部分参数固定。针对不同的模型结构,需要构造不同的 Prefix:
- 针对自回归架构模型:在句子前面添加前缀, 得到 z = [PREFIX; x; y],合适的上文能够在固定 LM 的情况 下去引导生成下文(比如:GPT3 的上下文学习)。
- 针对编码器-解码器架构模型:Encoder 和 Decoder 都增加了前缀,得到 z = [PREFIX; x; PREFIX0; y]。Encoder 端增加前缀是为了引导输入部分的编码, Decoder 端增加前缀是为了引导后续 token 的生成。
图片
对内容进行重写,不改变原意,使用中文进行重写: 对于上部分的微调,我们会更新所有Transformer参数(红色框),并且需要为每个任务存储完整的模型副本。而下部分的前缀调整则会冻结Transformer参数,并且只优化前缀(红色框)
该方法其实和构造 Prompt 类似, 只是 Prompt 是人为构造的“显式”的提示, 并且无法更新参数, 而 Prefix 则是可以学习的“隐式”的提示。同时,为了防止直接更新 Prefix 的参数导致训练不稳定和性能下降的情况,在 Prefix 层前面加了 MLP 结构, 训练完成后, 只保留 Prefix 的参数。除此之外, 通过消融实验证实, 只调整 embedding 层的表现力不够,将导致性能显著下降,因此,在每层都加了 prompt 的参数,改动较大。
Prefix Tuning 虽然看起来方便,但也存在以下两个显著劣势:
Prompt Tuning
大模型全量微调对每个任务训练一个模型, 开销和部署成本都比较高。同时, 离散的 prompts (指人工设计 prompts 提示语加入到模型) 方法, 成本比较高, 并且效果不太好。Prompt Tuning 通过反向传播更新参数来学习 prompts,而不是人工设计 prompts;同时冻结模型原始权重, 只训练 prompts 参数, 训练完以后, 用同一个模型 可以做多任务推理。
图片
模型调整需要为每个任务制作整个预训练模型的特定任务副本下游任务和推理必须在分开批次。Prompt Tuning 只需要为每个任务存储一个小的特定于任务的提示,并且使用原始预训练模型启用混合任务推理。
Prompt Tuning 可以看作是 Prefix Tuning 的简化版本,它给每个任务定义了自己的 Prompt,然后拼接到数据 上作为输入,但只在输入层加入 prompt tokens,并且不需要加入 MLP 进行调整来解决难训练的问题。
通过实验发现,随着预训练模型参数量的增加,Prompt Tuning 的方法会逼近全参数微调的结果。同时, Prompt Tuning 还提出了 Prompt Ensembling,也就是在一个批次(Batch) 里同时训练同一个任务的不同 prompt (即采用 多种不同方式询问同一个问题) ,这样相当于训练了不同模型, 比模型集成的成本小多了。除此之外, Prompt Tuning 论文中还探讨了 Prompt token 的初始化方法和长度对于模型性能的影响。通过消融实验结果发现, 与随机 初始化和使用样本词汇表初始化相比, Prompt Tuning 采用类标签初始化模型的效果更好。不过随着模型参数规 模的提升, 这种 gap 最终会消失。Prompt token 的长度在 20 左右时的表现已经不错(超过 20 之后, 提升Prompt token 长度, 对模型的性能提升不明显了),同样的, 这个 gap 也会随着模型参数规模的提升而减小(即对于超大 规模模型而言,即使 Prompt token 长度很短,对性能也不会有太大的影响)。
以上是大规模语言模型高效参数微调--BitFit/Prefix/Prompt 微调系列的详细内容。更多信息请关注PHP中文网其他相关文章!

语言模型是对文本进行推理的,文本通常是字符串形式,但模型的输入只能是数字,因此需要将文本转换成数字形式。Tokenization是自然语言处理的基本任务,根据特定需求能够把一段连续的文本序列(如句子、段落等)切分为一个字符序列(如单词、短语、字符、标点等多个单元),其中的单元称为token或词语。根据下图所示的具体流程,首先将文本句子切分成一个个单元,然后将单元素数值化(映射为向量),再将这些向量输入到模型进行编码,最后输出到下游任务进一步得到最终的结果。文本切分按照文本切分的粒度可以将Toke

编辑|ScienceAI问答(QA)数据集在推动自然语言处理(NLP)研究发挥着至关重要的作用。高质量QA数据集不仅可以用于微调模型,也可以有效评估大语言模型(LLM)的能力,尤其是针对科学知识的理解和推理能力。尽管当前已有许多科学QA数据集,涵盖了医学、化学、生物等领域,但这些数据集仍存在一些不足。其一,数据形式较为单一,大多数为多项选择题(multiple-choicequestions),它们易于进行评估,但限制了模型的答案选择范围,无法充分测试模型的科学问题解答能力。相比之下,开放式问答

编译|星璇出品|51CTO技术栈(微信号:blog51cto)在过去的两年里,我更多地参与了使用大型语言模型(LLMs)的生成AI项目,而非传统的系统。我开始怀念无服务器云计算。它们的应用范围广泛,从增强对话AI到为各行各业提供复杂的分析解决方案,以及其他许多功能。许多企业将这些模型部署在云平台上,因为公共云提供商已经提供了现成的生态系统,而且这是阻力最小的路径。然而,这并不便宜。云还提供了其他好处,如可扩展性、效率和高级计算能力(按需提供GPU)。在公共云平台上部署LLM的过程有一些鲜为人知的

近几年自然语言处理的进展很大程度上都来自于大规模语言模型,每次发布的新模型都将参数量、训练数据量推向新高,同时也会对现有基准排行进行一次屠榜!比如今年4月,Google发布5400亿参数的语言模型PaLM(Pathways Language Model)在语言和推理类的一系列测评中成功超越人类,尤其是在few-shot小样本学习场景下的优异性能,也让PaLM被认为是下一代语言模型的发展方向。同理,视觉语言模型其实也是大力出奇迹,可以通过提升模型的规模来提升性能。当然了,如果只是多任务的视觉语言模

2018年谷歌发布了BERT,一经面世便一举击败11个NLP任务的State-of-the-art(Sota)结果,成为了NLP界新的里程碑;BERT的结构如下图所示,左边是BERT模型预训练过程,右边是对于具体任务的微调过程。其中,微调阶段是后续用于一些下游任务的时候进行微调,例如:文本分类,词性标注,问答系统等,BERT无需调整结构就可以在不同的任务上进行微调。通过”预训练语言模型+下游任务微调”的任务设计,带来了强大的模型效果。从此,“预训练语言模型+下游任务微调”便成为了NLP领域主流训

2月25日消息,Meta在当地时间周五宣布,它将推出一种针对研究社区的基于人工智能(AI)的新型大型语言模型,与微软、谷歌等一众受到ChatGPT刺激的公司一同加入人工智能竞赛。Meta的LLaMA是“大型语言模型MetaAI”(LargeLanguageModelMetaAI)的缩写,它可以在非商业许可下提供给政府、社区和学术界的研究人员和实体工作者。该公司将提供底层代码供用户使用,因此用户可以自行调整模型,并将其用于与研究相关的用例。Meta表示,该模型对算力的要

随着语言模型扩展到前所未有的规模,对下游任务进行全面微调变得十分昂贵。为了解决这个问题,研究人员开始关注并采用PEFT方法。PEFT方法的主要思想是将微调的范围限制在一小部分参数上,以降低计算成本,同时仍能实现自然语言理解任务的最先进性能。通过这种方式,研究人员能够在保持高性能的同时,节省计算资源,为自然语言处理领域带来新的研究热点。RoSA是一种新的PEFT技术,通过在一组基准测试的实验中,发现在使用相同参数预算的情况下,RoSA表现出优于先前的低秩自适应(LoRA)和纯稀疏微调方法。本文将深

译者 | 李睿审校 | 孙淑娟BigScience研究项目日前发布了一个大型语言模型BLOOM,乍一看,它看起来像是复制OpenAI的GPT-3的又一次尝试。 但BLOOM与其他大型自然语言模型(LLM)的不同之处在于,它在研究、开发、培训和发布机器学习模型方面所做的努力。近年来,大型科技公司将大型自然语言模型(LLM)就像严守商业机密一样隐藏起来,而BigScience团队从项目一开始就把透明与开放放在了BLOOM的中心。 其结果是一个大型语言模型,可以供研究和学习,并可供所有人使用。B


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

记事本++7.3.1
好用且免费的代码编辑器

安全考试浏览器
Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。