大模型的微调一直是一个复杂而资源密集的任务。然而,近年来出现了一些高效的微调技术(PEFT),使得这一过程变得更加简便和高效。本文将详细介绍几种主要的 PEFT 技术,包括 Adapter Tuning、Prefix Tuning、Prompt Tuning、P-Tuning v1 和 P-Tuning v2。
一、Adapter Tuning :开启大模型 PEFT (2019)
Adapter Tuning 是一种在 2019 年提出的创新微调技术,旨在通过添加额外的适配层来提高模型的微调效率。
-
在两个FNN层后增加 Adapter 层:Adapter 层被嵌入在 Transformer 网络的两个 FNN 层之间,通过增加额外的层来增强模型的表现。这一方法通过在原有网络结构中引入适配层,使得模型在特定任务上的微调变得更加高效。
-
Adapter 内部学习降维后特征,减少参数:Adapter 层通过学习降维后的特征,有效地减少了参数数量。这种降维方法不仅能保留原有特征的关键信息,还能显著降低计算复杂度,从而提升模型的运行效率。
-
使用skip-connection,最差退化为 identity:通过使用 skip-connection 技术,即使在最差情况下,Adapter 层也可以退化为 identity,从而保持模型的稳定性。Skip-connection 确保了信息能够无阻碍地通过不同层,从而提高了模型的稳健性和可复用性。
-
提升微调效率和稳定性,可复用性增强:Adapter Tuning 提升了微调效率和稳定性,同时增强了模型的可复用性,使得在不同任务间切换更加便捷。这一技术不仅减少了对新数据的依赖,还提高了适应新任务的能力。
二、Prefix Tuning :自动化构造 Prompts (2021)
Prefix Tuning 是在 2021 年提出的一种方法,通过在预训练模型前添加前缀模块来实现高效微调。
-
在预训练 Transformer 前增加 Prefix 模块:Prefix Tuning 方法通过在预训练的 Transformer 模型前增加一个前缀模块,仅训练前缀部分,而冻结 Transformer 的全部参数。这种方法通过引入任务特定的前缀来引导模型生成特定任务的输出。
-
仅训练 Prefix,冻结 Transformer 全部参数:Prefix Tuning 仅对前缀部分进行训练,而冻结其余的模型参数,从而大大减少了训练所需的计算资源和时间成本。这一方法特别适合那些参数数量庞大的模型,如 GPT-3,使得微调这些模型成为可能。
-
降低 GPU 算力和训练时间成本:通过减少需要训练的参数数量,Prefix Tuning 显著降低了 GPU 算力和训练时间成本。这不仅提高了模型训练的效率,还降低了硬件需求,使得更多研究者能够进行大模型的微调。
-
Prefix:任务特定的指令集,引导模型生成特定任务的输出:前缀作为任务特定的指令集,通过引导模型生成特定任务的输出,提高了模型在特定任务上的性能。这种方法使得大模型能够更加灵活地适应不同的任务需求,增强了其实用性。
三、Prompt Tuning :Soft Prompts 开创者 (2021)
Prompt Tuning 是 2021 年提出的一种使用软提示词来引导模型进行任务的技术。
1、Prompt Tuning 主要贡献
-
直观性:Prompt Tuning 使用直观的语言提示来引导模型,使其更易于理解和操作。这种方法通过人类可理解的提示词来引导模型,从而使得模型的操作更加透明和直观。
-
适用性:这种方法特别适用于那些预训练模型已经掌握了大量通用知识的情况,通过简单的提示就能激发特定的响应。Prompt Tuning 通过利用模型已掌握的知识,快速适应新的任务,提高了模型的通用性。
-
微调成本低:Prompt Tuning 可以在微调时减少所需的计算资源,同时保持良好的性能。这一方法通过减少对模型参数的调整,降低了训练成本,使得微调变得更加经济高效。
2、Prompt Tuning 核心技术解读: Prompt Tuning 训练方法
-
设计提示:根据任务选择硬提示(固定文本)或软提示(可训练向量)作为输入。硬提示通常是固定的文本片段,而软提示则是可训练的向量,能够根据任务需求进行调整。
-
融入输入:硬提示直接加入文本,软提示作为向量加入序列。在实际应用中,硬提示可以直接插入到输入文本中,而软提示则以向量的形式嵌入到输入序列中。
-
训练过程:硬提示下全面微调模型;软提示下只调整提示向量,其他参数不变。硬提示需要对模型进行全面微调,而软提示则仅调整提示向量,从而减少了训练复杂度。
-
执行任务:训练后模型用于 NLP 任务(如问答、摘要),输出由提示引导。经过训练的模型能够在不同的 NLP 任务中表现出色,其输出由预设的提示词引导,从而提高任务执行的准确性和效率。
四、P-Tuning v1 :解决人工设计 Prompt 的问题 (2021)
P-Tuning v1 是 2021 年提出的一种技术,通过将提示(Prompt)转化为可学习的嵌入层来解决人工设计提示的局限性。
1、P-Tuning 的创新之处
-
离散性(Discreteness):预训练优化过的正常语料嵌入层与直接对输入提示嵌入进行随机初始化训练相比,可能会导致后者陷入局部最优解。P-Tuning 通过优化提示嵌入层,避免了这种局部最优解的问题。
-
关联性(Association):难以有效捕捉提示嵌入之间的相互关系。P-Tuning 通过学习提示嵌入层的内部关系,提高了提示的有效性和模型的适应性。
2、P-Tuning v1 核心技术解读
2.1、 一个关于“The capital of Britain is [MASK]” 示例: 蓝色是上下文 “Britain”、 红色是目标单词 “[MASK]”、 橙色区域是提示词。
- 传统方式与 P-Tuning 对比:在传统方式中,提示生成器只接收离散奖励,而在 P-Tuning 中,连续的提示嵌入(Prompt Embedding)和提示编码器(Prompt Encoder)以可微的方式进行优化。P-Tuning 通过优化提示嵌入层,使得模型能够更有效地利用提示信息,从而提升任务执行效果。
2.2、 P-Tuning 和 Prefix-Tuning 的主要区别
-
嵌入位置:Prefix Tuning 在每个注意力层增加前缀嵌入来引入额外参数,而 P-Tuning 的嵌入位置更为灵活,仅在输入时加入嵌入。P-Tuning 的这种灵活性使得它在不同任务中具有更高的适应性。
-
初始化方法:Prefix Tuning 用多层感知机(MLP)进行初始化,而 P-Tuning 则通过长短期记忆网络(LSTM)加 MLP 进行初始化。这种初始化方法提高了 P-Tuning 的性能,使其在不同任务中都能表现出色。
五、P-Tuning v2 :提升小模型和多任务微调质量 (2022)
P-Tuning v2 是对 P-Tuning 的改进版本,旨在解决小模型和多任务微调中的性能问题。
1、P-Tuning 在小模型上性能不佳
P-Tuning 在小模型上的性能表现不如在大型预训练模型上。因此,P-Tuning v2 旨在改进这一问题,使得小模型也能通过提示调整(Prompt Tuning)达到类似全面微调的效果。
2、P-Tuning v2 的目标
P-Tuning v2 的目标是使提示调整在不同规模的预训练模型上,针对各种下游任务都能达到类似全面微调的效果。这一目标通过优化提示长度、多任务学习和重参数化等技术手段得以实现。
3、之前方法的限制
-
模型规模差异:在大型预训练模型中,Prompt Tuning 和 P-Tuning 能取得与全面微调相似的效果,但在参数较少的模型上则表现不佳。P-Tuning v2 通过优化提示长度和重参数化技术,解决了这一问题。
-
任务类型差异:Prompt Tuning 和 P-Tuning 在序列标注任务上的表现都较差。P-Tuning v2 通过改进提示嵌入层的设计,提高了在序列标注任务上的表现。
4. P-Tuning v2 核心技术解读
4.1 重参数化(Reparameterization)
- Prefix Tuning 和 P-Tuning 中的 MLP:P-Tuning v2 的研究发现,针对不同的任务和数据集,这种方法可能产生相反的效果,特别是在自然语言理解领域。通过重参数化技术,P-Tuning v2 提高了提示嵌入层的有效性。
4.2 提示长度(Prompt Length)
- 任务对应的最优提示长度:不同任务对应的最优提示长度不一样,例如在简单的分类任务中,长度为20的提示可能是最佳选择,而对于更复杂的任务,则需要更长的提示长度。P-Tuning v2 通过优化提示长度,使其在不同任务中都能达到最佳效果。
4.3 多任务学习(Multi-task Learning)
- 多任务学习提供更好的参数初始化:对于 P-Tuning v2 而言,多任务学习是可选的,但它可以提供更好的参数初始化,从而进一步提升模型性能。多任务学习通过共享参数,提高了模型的泛化能力和适应性。
4.4 分类头(Classification Head)
- 语言模型(LM)头的应用:在 Prompt Tuning 中,使用语言模型头来预测动词是核心思路。然而,P-Tuning v2 的研究发现,在完整数据集上这种做法并非必要,且与序列标记任务不兼容。因此,P-Tuning v2 采用类似 BERT 的方式,在第一个 token 处应用随机初始化的分类头。这一改进使得 P-Tuning v2 在序列标注任务中表现更加稳定。
通过以上对大模型高效微调(PEFT)技术的详细解读,希望能够帮助读者更好地理解和应用这些技术,以提升模型的微调效率和性能,迎接AI领域的更多挑战。
读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用
对于0基础小白入门:
如果你是零基础小白,想快速入门大模型是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。
包括:大模型学习线路汇总、学习阶段,大模型实战案例,大模型学习视频,人工智能、机器学习、大模型书籍PDF。带你从零基础系统性的学好大模型!
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓
👉AI大模型学习路线汇总👈
大模型学习路线图,整体分为7个大的阶段:(全套教程文末领取哈)
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
👉大模型实战案例👈
光学理论是没用的,要学会跟着一起做,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
👉大模型视频和PDF合集👈
观看零基础学习书籍和视频,看书籍和视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费
】🆓