大模型微调技术(Adapter-Tuning、Prefix-Tuning、Prompt-Tuning(P-Tuning)、P-Tuning v2、LoRA)

2022年11月30日,ChatGPT发布至今,国内外不断涌现出了不少大模型,呈现“百模大战”的景象,比如ChatGLM-6B、LLAMA、Alpaca等模型及在此模型基础上进一步开发的特定领域的大模型。今年3月15日,GPT-4发布后,也出现了一些多模态的大模型,比如百度的文心一言、讯飞星火认知大模型等等。

要想训练一个针对特定领域的大模型,如果采用全量参数微调(Full Parameter
Futuing)的方法,一方面需要大量的高质量数据集、另一方需要较高的算力,比如8块A100 80G
GPU,甚至需要成百上千的GPU。一般的小企业或者高校研究所对此望而却步。

那么,有没有不需要大量算力就能在特定领域数据上对大模型进行微调的方法呢?

下面,给大家介绍几种常见的大模型微调方法:Adapter-Tuning、Prefix-Tuning、Prompt-
Tuning(P-Tuning)、P-Tuning v2、LoRA。并介绍各种方法之间的效果对比。

1. Adapter-Tuning

该方法出自2019年的论文“Parameter-Efficient Transfer Learning for NLP ”

论文链接:https://arxiv.org/pdf/1902.00751.pdf

github链接:[GitHub - google-research/adapter-bert](https://github.com/google-
research/adapter-bert “GitHub - google-research/adapter-bert”)

模型结构如上图左侧所示,
微调时冻结预训练模型的主体,由Adapter模块学习特定下游任务的知识。其中,Adapter模块结构如上图右侧所示,包含两个前馈层和一个中间层,第一个前馈层和中间层起到一个降维的作用,后一个前馈层和中间层起到升维的作用。

Adapter调优的参数量大约为LM参数的3.6%。

2. Prefix-Tuning

该方法出自2021年的论文“Prefix-Tuning: Optimizing Continuous Prompts for Generation”

论文链接:https://arxiv.org/pdf/2101.00190.pdf

github链接:GitHub - XiangLi1999/PrefixTuning: Prefix-Tuning: Optimizing
Continuous Prompts for Generation

上图展示了Full Parameter Finetuning与Prefix Tuning之间的区别,其中,红色部分是需要微调的参数,可以发现,Prefix
Tuning只是在每个任务前有少量的prefix的参数,比如翻译任务,可以在每句话的前面加上“翻译:”来引导模型进行翻译功能。

实验结果表明:

(1)在完整的数据集上,Prefix-Tunning和Fine-Tuning在table-to-
text上的结果是comparable的,而在summarization任务上,prefix-tuning的效果略有下降。但在low-data
settings和unseen topics的情况下,Prefix-Tuning的效果更佳。

(2)与Adapter-Tuning相比,Trefix-Tuning在相同的表现下只需调节更少的参数量。

(3)不同的前缀长度有不一样的性能表现,在一定程度上长度越长,prefix的效果越明显,但也可能出现降低的问题。实验表明,prefix长度对推理速度影响不大,因为prefix上的attention是并行计算的。

Prefix Tuning参数规模约为LM模型整体规模的0.1%。

3. Prompt-Tuning(P-Tuning)

该方法出自论文2021年的论文“GPT Understands, Too”

论文链接:https://arxiv.org/pdf/2103.10385.pdf

github链接:https://github.com/THUDM/P-tuning

上图展示了P-Tuning和Discrete Prompt Search之间的区别,也引出了P-
Tuning提出的目的。因为离线的Prompt对于连续的神经网络只是次优解,prompt的词之间是彼此关联的,需要将其关联起来。于是,P-Tuning将一些伪prompt输入至LSTM中,然后利用LSTM的输出向量来替代原始的prompt
token,然后一起输入至预训练语言模型中。而且,LSTM和随着预训练语言模型一起训练。

论文中的实验结果表明:

(1)基于bert-base模型,在5/7的数据集上,P-tuning的效果比finetune等更好。
(2)基于gpt模型,在全部的数据集上,P-tuning的效果都比finetune等更好。
(3)对比gpt-base和bert-base,在6/7的数据集上,基于P-tuning,gpt-base的效果都更好。
(4)在自然语言理解任务上,双向模型比单向模型更好。

4. P-Tuning v2

该方法出自于2022年的论文“P-Tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning
Universally Across Scales and Tasks”

论文链接:https://arxiv.org/pdf/2110.07602.pdf

github链接:GitHub - THUDM/P-tuning-v2: An optimized deep prompt tuning strategy
comparable to fine-tuning across scales and
tasks

上图中,左侧为P-Tuning,右侧为P-Tuning v2。P-Tuning v2与P-Tuning的不同之处在于:将只在第一层插入continuous
prompt修改为在许多层都插入continuous prompt,层与层之间的continuous prompt是相互独立的。

P-Tuning v2与Prefix-Tuning的改进之处在于,除了输入的embedding外,其它的Transformer层也加了前置的prompt。

做出这种改进的原因:

(1)先前的工作显示,Prompt tuning在normal-sized的预训练模型上效果一般。

(2)现有的Prompt tuning方法在较难的文本序列问题上效果不好。

经过这样的改进,模型可训练参数的量从0.01%增加到了0.1%~3%。

实验结果表明:

(1)P-tuning V2可以与传统Fine-tuning有差不多的效果。

(2)Multi-task P-tuning V2效果更好,分析认为可能是变相的数据增强带来的影响。

(3)在不同的任务上的表现和prompt的长度有关系。

(4)对LSTM/MLP层的重新参数化不一定有效,取决于任务和数据集。

5. LoRA

LoRA(Low-Rank Adaptation)出自2021年的论文“LoRA: Low-Rank Adaptation of Large
Language Models”

论文链接:https://arxiv.org/abs/2106.09685

github链接:https://github.com/microsoft/LoRA

LoRA技术冻结预训练模型的权重,并在每个Transformer块中注入可训练层(称为秩分解矩阵),即在模型的Linear层的旁边增加一个“旁支”A和B。其中,A将数据从d维降到r维,这个r是LoRA的秩,是一个重要的超参数;B将数据从r维升到d维,B部分的参数初始为0。模型训练结束后,需要将A+B部分的参数与原大模型的参数合并在一起使用。

LoRA微调的优点包括:

(1)训练速度更快。

(2)计算需求更低。

(3)训练权重更小。

6. 微信群里某大佬总结的各方法优缺点对比(仅供参考):

(1) Fine-Tuning(标准微调)
优点:

简单易用:直接在预训练模型上进行微调。
适应性强:可以针对特定任务调整整个模型的参数。
效果显著:通常能显著提高模型在特定任务上的表现。
缺点:

计算成本高:需要调整模型的大量参数。
数据需求较高:为了有效微调,通常需要较多的标注数据。
适用场景:当有足够的标注数据和计算资源时,适用于大多数NLP任务。

(2)Parameter-Efficient Fine-Tuning(PEFT)
优点:

参数高效:只修改或优化模型的一小部分参数。
节省计算资源:比完全微调需要的资源少。
缺点:

可能效果有限:对于某些复杂任务,仅优化少量参数可能不足以达到最佳效果。
适用场景:资源受限的情况,或者需要快速适应新任务时。

(3) Prompt-Tuning
优点:

无需改变模型架构:通过设计任务相关的提示(prompt),引导模型生成所需的输出。
资源消耗少:不需要改变模型参数。
缺点:

需要精心设计prompt:有效的prompt设计可能需要丰富的经验和实验。
适用场景:快速适应新任务,尤其适用于资源有限的场景。

(4) LoRA(Low-Rank Adaptation)
优点:

参数高效:通过引入低秩矩阵来调整模型,减少需要优化的参数数量。
节省内存和计算资源。
缺点:

效果可能有限:对于某些复杂任务可能无法达到完全微调的效果。
需要一定的技术知识来实现和调试。
适用场景:需要参数高效调整的场景,特别是在资源有限的情况下。

(5) P-Tuning
优点:

可解释性强:通过可训练的prompt向量进行微调。
资源消耗相对较少。
缺点:

需要适当的调整和实验来找到最佳配置。
可能不适用于所有类型的任务。
适用场景:适用于需要提高模型解释性的任务,以及资源有限的情况。

👉AI大模型学习路线汇总👈

大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉大模型实战案例👈

光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉大模型视频和PDF合集👈

观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述
在这里插入图片描述

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

  • 16
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值