大模型参数高效微调

news2024/11/16 2:48:46

参数高效微调目的

PEFT技术旨在通过最小化微调参数的数量和计算复杂度,来提高预训练模型在新任务上的性能,从而缓解大型预训练模型的训练成本。这样一来,即使计算资源受限,也可以利用预训练模型的知识来迅速适应新任务,实现高效的迁移学习。

参数高效微调方法主要有如下几类:

  • 增加额外参数,如:Prefix Tuning、Prompt Tuning、Adapter Tuning及其变体。
  • 选取一部分参数更新,如:BitFit。
  • 引入重参数化,如:LoRA、AdaLoRA、QLoRA。
  • 混合高效微调,如:MAM Adapter、UniPELT。在这里插入图片描述

高效微调(PEFT)

BitFit

  • 是一种稀疏的微调方法,它训练时只更新bias的参数或者部分bias参数。
  • 涉及到的bias参数有attention模块中计算query,key,value跟合并多个attention结果时涉及到的bias,MLP层中的bias,Layernormalization层的bias参数。
  • 特点:
    • 训练参数量极小(约0.1%)。
    • 在大部分任务上效果会差于LoRA、Adapter等方法。

Prompt-Tuning

  • 冻结主模型全部参数,在训练数据前加入一小段Prompt,只训练Prompt的表示层,即一个Embedding模块。
  • 其中,Prompt又存在两种形式,一种是hard prompt,一种是soft prompt.
  • 特点:
    • 相对于Prefix Tuning,参与训练的参数量和改变的参数量更小,更节省显存。
    • 对一些简单的NLU 任务还不错,但对硬序列标记任务(即序列标注)表现欠佳。
      在这里插入图片描述

P-Tuning

  • 在Prompt-Tuning的基础上,对Prompt部分进行进一步的编码计算,加速收敛
  • 具体来说,PEFT中支持两种编码方式,一种是LSTM,一种是MLP。
  • 与Prompt-Tuning不同的是Prompt的形式只有Soft Prompt。
  • 特点:
    • 引入一个prompt encoder(由一个双向的LSTM+两层MLP组成)来建模virtual token的相互依赖会收敛更快,效果更好。
      在这里插入图片描述

Prefix-Tuning

  • 相较于Prompt-Tuning和P-tuning,Prefix-Tuning不再将Prompt加在输入的Embedding层,而是将其作为可学习的前缀,放置在Transformer模型中的每一层中,具体表现形式为past key values。
  • 特点:
    • 前缀Token会占用序列长度,有一定的额外计算开销。
    • Prefix Tuning的线性插值是比较复杂的。
      在这里插入图片描述

LoRA

  • 基于大模型的内在低秩特性,增加旁路矩阵(一般是模型的q和v),冻结原参数,模拟全参数微调
  • 工作步骤:
    • 选择要调整的权重矩阵:在大型模型(如GPT)中,我们首先确定要微调的权重矩阵。通常,这些矩阵位于模型的多头自注意力(Multi-head Self-Attention)和前馈神经网络(Feed-Forward Neural Network)部分。
    • 引入两个低秩矩阵:接着,我们引入两个低秩矩阵,记为A和B,这两个矩阵的维度比原始权重矩阵小得多,例如,如果原始矩阵的尺寸是dd,那么,A和B的尺寸可能是dr和r*d,其中r是一个远小于d的数。
    • 计算低秩更新:通过计算这两个低秩矩阵的乘积,生成一个新的矩阵AB,这个新矩阵的秩(即r)远小于原始权重矩阵的秩。这个乘积实际上是一个低秩近似,可以视为对原始权重矩阵的一种调整。
    • 结合原始权重:最后,这个新生成的低秩矩阵AB被加到原始的权重矩阵上。这样,原始的权重矩阵得到了微调,但大部分权重保持不变。这个过程可以用数学公式表示为:新权重 = 原始权重 + AB。
  • 特点:
    • 将BA加到W上可以消除推理延迟。
    • 可以通过可插拔的形式切换到不同的任务。
    • 设计的比较好,简单且效果好。

在这里插入图片描述

QLoRA

  • QLORA微调的核心机制和思想,不降低训练效果下使用更少的GPU资源,使用一种新颖的高精度技术将预训练模型量化为 4 bit,然后添加一小组可学习的低秩适配器权重,这些权重通过量化权重的反向传播梯度进行微调。
    • NF4量化+二次量化
      • 减少数据存储
      • 精度并未下降优于BF16
      • 微调中数据质量比数据量更重要
      • NF4存储,BF16计算
    • NF4 Quantization
      • 考虑了模型权重真实分布为正态分布,采用分位数量化
      • 一共15个点,将范围切分为16个区间再映射到0-1区间(原始参数->原始参数的【0-1】->16分位的【0-1】->16分位)
    • Double Quantization
      • 将反量化时用到的量化常数absmax化成8bit
    • Paged optimizers
      • 当显存不足时,将优化器的参数转移到CPU内存上,再需要时再将其收回,防止显存峰值时OOM

Adapter Tuning

  • 与 LoRA 类似,Adapter Tuning 的目标是在不改变预训练模型的原始参数的前提下,使模型能够适应新的任务。在 Adapter Tuning 中,会在模型的每个层或某些特定层之间插入小的神经网络模块,称为“adapters”。这些 adapters 是可以训练的,而原始模型的参数则保持不变。

  • Adapter Tuning 的关键原理和步骤:

    • 预训练模型作为基础:开始时,我们有一个已经预训练好的大型模型,例如BERT或GPT。这个模型已经学习了大量的语言特征和模式。
    • 插入适配器:在这个预训练模型的每一层或选定的层中,我们插入适配器。这些适配器是小型的神经网络,通常只包含几层,并且参数相对较少。
    • 保持预训练参数不变:在微调过程中,原始预训练模型的参数保持不变。这意味着我们不直接调整这些参数,而是专注于训练适配器的参数。
    • 训练适配器:适配器的参数会根据特定任务的数据进行训练。这样,适配器可以学习如何根据任务调整模型的行为。
    • 任务特定的调整:通过这种方式,模型能够对每个特定任务做出微调,而不会影响到模型其他部分的通用性能。适配器可以帮助模型更好地理解和处理与特定任务相关的特殊模式和数据。
    • 高效和灵活:由于只有一小部分参数被调整,这种方法比全模型微调更高效,同时也允许模型快速适应新任务。

LoRA和Adapter Tuning的区别:

LoRA:通过在模型的权重矩阵中引入低秩矩阵(通常是两个小的矩阵的乘积)来实现对模型的微调。这些低秩矩阵作为原有权重矩阵的修改项,使得原有的权重矩阵在实际计算时得到调整。

Adapter Tuning:通过在模型的各个层中添加小型神经网络模块,即“适配器”,来实现微调。这些适配器独立于模型的主体结构,只有它们的参数在微调过程中被更新,而模型的其他预训练参数保持不变。

IA3

  • 抑制和放大内部激活,通过可学习的向量对激活值进行抑制或放大。
  • 具体来说,会对K、V、FFN三部分的值进行调整,训练过程中同样冻结原始模型的权重,只更新可学习的部分向量部分。训练完成后,与Lora类似,也可以将学习部分的参数与原始权重合并,没有额外推理开销.
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1467776.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

bat脚本检测进程程序的方法

一、脚本检测进程 使用批处理脚本检测程序是否在运行,可以使用tasklist命令来列出当前运行的所有进程,并通过findstr命令来搜索特定的进程名。下面是一个简单的批处理脚本示例,它会检测指定的程序是否在运行,并给出相应的信息&…

python 基础知识点(蓝桥杯python科目个人复习计划49)

今日复习内容:做复习题 例题1:希尔排序 题目描述: 希尔排序是直接插入排序算法的一种更高效的改进版本,但它是非稳定排序算法。希尔排序是基于插入排序的以下两点性质而提出的改进方法之一: 1.插入排序在对几乎已经…

打开 Camera app 出图,前几帧图像偏暗、偏色该怎样去避免?

1、问题背景 使用的安卓平台,客户的应用是要尽可能快的获取到1帧图像效果正常的图片。 但当打开 camera 启动出流后,前3-5帧图像是偏暗、偏色的,如下图所示,是抓取出流的前25帧图像, 前3帧颜色是偏蓝的,…

【前端素材】推荐优质后台管理系统Airmin平台模板(附源码)

一、需求分析 系统定义 后台管理系统是一种用于管理和监控网站、应用程序或系统的在线工具。它通常是通过网页界面进行访问和操作,用于管理网站内容、用户权限、数据分析等。后台管理系统是网站或应用程序的控制中心,管理员可以通过后台系统进行各种管…

中国农业无人机行业市场现状分析与投资前景预测研究报告

全版价格:壹捌零零 报告版本:下单后会更新至最新版本 交货时间:1-2天 第一章农业无人机行业发展综述 第一节农业无人机行业定义及分类 一、农业无人机行业的定义 农业无人机是一种无人驾驶的飞行器来帮助优化农业经营,增加作…

jetson nano——报错(已解决):ModuleNotFoundError: No module named ‘wx‘

目录 1.问题描述:2.报错,如下图:3.**解决:得安装一些wxpython的依赖,然后自己编译**3.1 wxPython链接4.编译过程中的图片:(用时48min.....流泪)5.编译完成以后的图片6.验证结果7.这是…

怎么在wifi中实现手机和电脑文件互传

有时我们想手机电脑文件互传,数据线却不在身边,这时我们可以用MiXplorer来实现wifi中手机和电脑互相访问文件。 MiXplorer是一款来自著名安卓开发者论坛XDA的作品,免费且功能强大,被很多人誉为是“全能文件管理器”。 1.在手机上…

【JavaEE】_smart tomcat常见问题

目录 1. 插件安装故障问题 2. 端口占用问题 3. 乱码问题 1. 插件安装故障问题 如果由于网络问题在IDEA中无法直接安装插件,可以去IDEA官网进行下载: 进入官网后点击Install安装,得到一个jar包: 把jar包拖拽到idea上即可自动安装…

职业规划,电气工程师的岗位任职资格

电气工程技术人员主要是指精通电气施工技术,从事与电气产相关研发工作并能够解决实际问题,对相关资源进行最终统筹的人员。一般来说,这类人员主要从事绘制、审核和把关电气图纸的工作,在审核电气图纸的时候,会检查施工…

(六)激光线扫描-三维重建

本篇文章是《激光线扫描-三维重建》系列的最后一篇。 1. 基础理论 1.1 光平面 在之前光平面标定的文章中,已经提到过了,是指 激光发射器投射出一条线,形成的一个扇形区域平面就是光平面。 三维空间中平面的公式是: A X + B Y + C Z + D = 0 A X+B Y+C Z+D=0

Spring Boot application.properties和application.yml文件的配置

在Spring Boot中,application.properties 和 application.yml 文件用于配置应用程序的各个方面,如服务器端口、数据库连接、日志级别等。这两个文件是Spring Boot的配置文件,位于 src/main/resources 目录下。 application.properties 示例 …

Linux--ACL权限管理

一.ACL权限管理简介 ACL(Access Control List,访问控制列表)是一种文件权限管理机制,它提供了比传统的UGO(用户、组、其他)权限更灵活的权限设置方式。以下是ACL的一些主要功能: 针对特定用户或…

[力扣 Hot100]Day33 排序链表

题目描述 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 出处 思路 归并排序即可。 代码 class Solution { public:ListNode* merge(ListNode *h1,ListNode *h2) {ListNode *head nullptr;if(h1->val<h2->val){head h1;h1h1-…

我用Python写了一个倒计时软件

人过中年&#xff0c;每天都觉得时间过得很快&#xff0c;忙活了一天却发现自己很多时候是瞎忙&#xff0c;似乎没有什么成效&#xff0c;匆忙中一天就过去了。 后来&#xff0c;我想想可能是我没有时间的紧迫感&#xff0c;或者说没有明确的目标和执行力&#xff0c;所以才会…

代码随想录刷题39,40天|62.不同路径

62.不同路径 想要求dp[i][j]&#xff0c;只能有两个方向来推导出来&#xff0c;即dp[i - 1][j] 和 dp[i][j - 1]。 此时在回顾一下 dp[i - 1][j] 表示啥&#xff0c;是从(0, 0)的位置到(i - 1, j)有几条路径&#xff0c;dp[i][j - 1]同理。 那么很自然&#xff0c;dp[i][j] …

堆排序法的名字由来,排序步骤是什么,最坏情况下的排序次数如何计算得来的呢?

问题描述&#xff1a;堆排序法的名字由来&#xff0c;排序步骤是什么&#xff0c;最坏情况下的排序次数如何计算得来的呢&#xff1f; 问题解答&#xff1a; 堆排序法的名字来源于它使用了堆这种数据结构。堆是一种特殊的树形数据结构&#xff0c;具有以下特点&#xff1a;在…

AI:135-基于卷积神经网络的艺术品瑕疵检测与修复

🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带关键代码,详细讲解供大家学习,希望…

信息系统项目管理师(高项)—学习笔记

第一章信息化发展 1.1 信息与信息化 1.1.1 信息 信息是物质、能量及其属性的标示的集合&#xff0c;是确定性的增加。 它以物质介质为载体&#xff0c;在传递和反映世界各种事物存在方式、运动状态等的表征。 信息不是物质&#xff0c;也不是能力&#xff0c;它以一种普遍…

在python里的常用运算符及优先级

python常用的运算符有七种&#xff0c;分为两部分来学习&#xff0c;第一部分是各个运算法的用法&#xff0c;第二部分是运算符的优先级。 一、 运算符的用法 数字相关的运算符有&#xff1a;算数运算符、比较运算符、赋值运算符和位运算符 关系运算符&#xff1a; 示例如…

TreeData 数据查找

TreeData 数据查找 最近做需求的时候遇到了这样的一个需求&#xff0c;Tree组件数据支持查找&#xff0c;而且TreeData的数据层级是无限级的 开始想的事借助UI组件库&#xff08;Ant-design-vue&#xff09;中的Tree组件的相关方法直接实现,看了下api 发现没法实现&#xff0c;…