大模型微调技术PEFT

news2024/9/20 12:11:22

1. 横向对比

总体概览:
在这里插入图片描述

方法Transformer 中如何应用特点
Prompt Tuning在输入到Transformer的input文本中添加Prompthard 模式prompt CO-STAR
P-tuning在输入到Transformer的embedding 层添加Promptsoft 模式 prompt
Adapter Tuning在 Transformer 中间层插入 Adapter layer添加额外模型层
Prefix-Tuning在 Transformer 自注意力的 K和V token 前添加前缀适用于下游任务,易于调整
LORA在Transformer的 QKVO 矩阵和 FFN 矩阵中添加可训练参数最少
IA3在Transformer的 K 和 V token以及 FFN 中添加通过中间任务优化微调步长
方法Transformer 中如何应用特点
Prompt Tuning找到合适的prompt需要大量计算和时间当计算资源有限但需要微调模型
P-tuning微调效果有限当需要平衡原始信息和优化目标
Adapter Tuning引入推理延迟复杂任务
Prefix-Tuning容易导致旧知识遗忘使用 BERT 进行微调
LORA原有网络参数改变,但没有增加推理延迟整体效果最好的情况
IA3可能增加计算和存储要求在源任务和目标任务之间需要平衡的情况

2. 纵向理解

2.1 Adapter Tuning

  • 核心理念:在保留并冻结原始模型的基础上,通过添加并训练额外的网络层,增强模型对其他任务的适应性,就像给模型装上一种“适配器”

在这里插入图片描述

2.2 Prompt-tuning

  • 核心理念:通过在训练数据前加入一段“提示”(Prompt)并只对其进行训练,从而在保留主模型全部参数的同时增加模型的弹性。其中,“提示”有两种形式,一种是固定的(hard prompt),一种是可以学习的(soft prompt)

在这里插入图片描述

2.3 P-Tuning

  • 核心理念:在 Prompt-Tuning 的思想上更进一步,对 “提示” 部分引入额外的编码计算(比如 LSTM 或 MLP),以加速模型的收敛。这种方法只使用可以学习的“提示”(Soft Prompt)

在这里插入图片描述

2.4 Prefix-Tuning

  • 核心理念:与其它方法不同,Prefix-Tuning 将 “提示” 当作可学习的前缀,在模型的每一层中都会使用到,具体形式为 past_key_values。这就像在模型的每个层级都留下了一段有用的“前缀”

在这里插入图片描述

  • 什么是 past_key_values?
    • past_key_values: Transformer 模型中历史计算过的key和value的结果,最早是用于生成类模型解码加速,解码逻辑是根据历史输入,每次预测一个新的tokern,然后将新的token加入输入,再预测下一个token。这个过程中,会存在大量的重复计算,因此可以将key和value的计算结果缓存,作为past_key_values输入到下一次的计算中,这一技术又被称之为kv_cache
    • Prefix-Tuning中,就是通过past_key_values的形式将可学习的部分放到了模型中的每一层,这部分内容又被称之为前缀

在这里插入图片描述

2.5 Lora

  • 核心理念:训练时,输入会与原始权重以及两个低秩矩阵共同参与计算,但优化过程只针对这两个低秩矩阵。训练完成后,可以将这两个低秩矩阵与原始模型合并,合并后的模型与原始模型一样,避免了推理时的额外计算量。
  • 理论基础
    • LORA得益于前人的一些关于内在维度(intrinsic dimensicon)的发现:模型是过参数化的,它们有更小的内在维度,模型主要依赖于干这个低的内在维度(lowintrinsic dimension)去做任务适配。
    • 假设模型在任务适配过程中权重的改变量是低秩(lowrank)的,由此提出低秩自适应(LoRA)方法。
    • LORA允许我们通过优化适应过程中密集层变化的秩分解矩阵,买来间接训练神经网络中的一些密集层,同时保持预先训练的权重不变。
  • 算法细节
    在这里插入图片描述

2.6 IA3

  • 核心理念:通过一种可以学习的向量对激活值进行抑制或放大,对 K、V、FFN 三部分的值进行调整,从而在训练过程中只更新这部分向量。训练完成后,可以将这部分参数与原始模型合并,没有额外的推理开销。

在这里插入图片描述

2.7 结论

    1. Lora 微调方法适用于 LLM / LMM 微调,其参数量较全参数微调(Fine-Tuning)显著降低,参数量和现有高效参数微调方法持平或更低。性能优于其它参数高效微调方法,和全参数微调(Fine-Tuning)基本持平甚至更高。
    1. Adapter-tuning 与 predix-tuning 适用于 BERT 微调

2.8 P-Tuning V2

2.9 QLora

  • 代码实现
import torch
from transformers
import BitsAndBytesConfig
bnb_config = BitsAndBytesConfig(
    load_in_4bit=True,
    bnb_4bit_use_double_quant=False,    # 双量化
    bnb_4bit_quant_type="nf4",         # 创新2 int8、fp16、fp32、bf16
    bnb_4bit_compute_dtype=torch.bfloat16
    )
model_4bit = AutoModelForCausalLM.from_pretrained(model_id, quantization_config=bnb_config
  • 非均匀量化
    在这里插入图片描述

  • 量化过程

    • Quantize:

      • 1.73<x<2.26 -> 14
    • Dequantize:

      • 14 -> (1.73+2.26) / 2 = 1.995
    • 两边各舍弃累计概率密度:

      • 0.0322917
    • 0值单独拿出来,作为 16 个值中的 1 个,正数分配 8 个,复数分配 7 个,按照累计概率密度等分
      在这里插入图片描述

    • 这里也就是 NF4,用于对符合正态分布的数进行量化的,而非用于直接计算,需要反量化为浮点型才能进行推理计算,这也是 config 中需要指定计算类型——bnb_4bit_compute_dtype 的原因

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

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

相关文章

MATLAB代码|蚁群算法|计算二元函数最大值

总述 蚁群方法求解二元函数的最大值。蚂蚁群先随机分布在定义域内&#xff0c;如下&#xff1a; 计算结束后&#xff0c;得到如下的分布&#xff0c;再计算分布均值&#xff0c;得到此时的自变量取值&#xff0c;因为是二元函数&#xff0c;所以有两个自变量&#xff0c;带入…

Qt 实战(9)窗体 | 9.1、QWidget

文章目录 一、QWidget1、定义与概念2、继承体系3、常用特性3.1、事件处理3.2、布局管理3.3、子控件与父子关系3.4、右键菜单 4、注意事项5、总结 前言&#xff1a; 在Qt这一强大的跨平台C图形用户界面应用程序开发框架中&#xff0c;QWidget扮演着至关重要的角色。作为所有用户…

【日记】为啥家族原发性高血压的人还喜欢喝酒啊……(442 字)

正文 今天跟人吵了一下午架&#xff0c;因为有一张报表换了新表&#xff0c;所有人都不知道怎么报。上级行一个想法&#xff0c;我一个想法。吵完都发现对方说得有道理&#xff0c;于是决定明天问省分行。难绷。草台班子。 鱼儿说他最近喜欢上了喝酒。我们劝他的同时&#xff0…

太阳光度计CE-318数据处理

太阳光度计CE-318数据处理 备注&#xff1a;处理公式 在我国近海&#xff0c;α的值在0到3之间&#xff0c;所以他们相对误差最大不超过25%&#xff0c;而通过查阅相关资料&#xff0c;北京地区α的值可以近似的取1.665。 大气是不断运动的&#xff0c;气溶胶在短时间内也可…

【网络安全】https协议的加密方案避免中间人攻击(MITM攻击)导致的数据泄露风险

目录 引言 概念准备 中间人 加密 数据摘要 && 数据指纹 数字签名 密钥加密 中间人攻击 CA证书 https加密的解决方案 个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 引言 http在应用层协议中是明文传输协议&#xff0c;它是通信双方传输数据时的一种约定。【…

超声波便携式气象站:精准监测,随身携带

在追求高效与便捷的今天&#xff0c;超声波便携式气象站以其独特魅力脱颖而出&#xff0c;成为众多行业及户外爱好者的理想选择。超声波便携式气象站采用多采集装置一体式设计&#xff0c;不仅实现了体积的小型化与重量的轻量化&#xff0c;更便于用户随身携带&#xff0c;随时…

期权杠杆与期货杠杆的区别是什么?

期权与股指期货在杠杆性上展现出截然不同的特性&#xff0c;这些特性对投资者的策略选择具有深远影响。首先&#xff0c;股指期货采用保证金制度&#xff0c;其杠杆比例是恒定的&#xff0c;无论市场如何波动&#xff0c;投资者在月初设定的十倍杠杆到月尾仍保持不变。相比之下…

STM32常见的下载方式有三种

经过对比&#xff0c;推荐使用 SWD下载&#xff0c;只需要一个仿真器&#xff08;如jLINK、ST LINK、 CMSIS DAP 等&#xff09;&#xff0c;比较方便。 不推荐使用串口下载&#xff08;速度慢、无法仿真和调试&#xff09;和 JTAG 下载&#xff08;占用 IO 多&#xff09;。

Java语言程序设计基础篇_编程练习题*16.7 (设置时钟的时间)

*16.7 (设置时钟的时间) 编写一个程序&#xff0c;显示一个时钟&#xff0c;并通过在三个文本域中输入小时、分钟和秒 钟来设置时钟的时间&#xff0c;如图16-38b 所示。使用程序清单14-21的ClockPane改变时钟大小使其居于面板中央 习题思路 实例化一个ClockPane(在程序清单1…

【网络安全渗透测试零基础入门必知必会】之什么是文件包含漏洞分类(非常详细)零基础入门到精通,收藏这一篇就够了

一、前言 这是大白给粉丝盆友们整理的网络安全渗透测试入门阶段文件包含渗透与防御第1篇。 本文主要讲解什么是文件包含漏洞、本地文件包含漏洞 喜欢的朋友们&#xff0c;记得给大白点赞支持和收藏一下&#xff0c;关注我&#xff0c;学习黑客技术。 一、什么是文件包含漏洞…

the request was rejected because no multipart boundary was found

文章目录 1. 需求描述2. 报错信息3. 探索过程1. 使用postman 排除后端错误2. 搜索网上的解决方法3. 解决方法 1. 需求描述 想要在前端上传一个PDF 发票&#xff0c;经过后端解析PDF之后&#xff0c;将想要的值自动回填到对应的输入框中 2. 报错信息 org.apache.tomcat.util.…

VSCode远程调试Linux程序

VS 安装CodeRunner插件 菜单→添加配置→lunch.json中设置如下&#xff1a; program填入要调试的文件 {"version": "0.2.0","configurations": [{"name": "gdb renderPng","type": "cppdbg","re…

为什么某央企可以抓到红队攻击,而你不行?

国家HVV行动从2016年到2024年已经是第9年了&#xff0c;HVV行动目的就是保卫国家关键基础设施的网络安全行动&#xff0c;更是一场实战化的网络攻击与防御实战&#xff0c;这些年来红队攻击手段层出不穷&#xff0c;最为典型的就是 0/N Day、弱口令、社工钓鱼等&#xff0c;也极…

北京青蓝智慧科技ITSS服务经理:长安链ChainBridge“链桥”问世 加速国家级区块链网络互联互通

8月5日&#xff0c;据国家区块链技术创新中心消息&#xff0c;我国首个完全自主控制的区块链软硬件技术系统——长安链&#xff0c;正式推出了全场景技术平台ChainBridge“链桥”。 此平台能够支持所有异构和同构的区块链进行协作&#xff0c;满足跨领域、跨地域、跨行业及跨层…

用Java手写jvm之模拟方法调用指令invokexxx和方法返回指令xreturn

写在前面 源码 。 本文一起看下方法调用相关的指令invokexxx以及方法返回&#xff08;栈帧弹出线程栈&#xff09;相关的指令xReturn 。 1&#xff1a;正文 因为invokexxx指令和普通的指令不同&#xff0c;会创建一个新的栈帧&#xff0c;并压倒操作数栈中&#xff0c;所以我…

《黑神话:悟空》在PS5上优化得不错 能达到2K/60帧

《黑神话&#xff1a;悟空》是今年最受玩家期待的游戏之一&#xff0c;但许多粉丝担心该作优化不佳&#xff0c;因为其使用的是虚幻5引擎。虚幻5引擎会导致性能问题出现&#xff0c;游戏 科学的新作也将面临同样问题。但有新报告称&#xff0c;《黑神话》PS5版优化得相当不错&a…

UE 后期处理

UE4后期处理材质的一些应用&#xff08;上&#xff09; - 哔哩哔哩 (bilibili.com) UE4后期处理材质的一些应用&#xff08;下&#xff09; - 哔哩哔哩 (bilibili.com) 后期处理材质的作用 后期处理材质使您能够设置与后期处理一起使用的材质&#xff0c;以创建破坏的视觉屏幕…

免费【2024】springboot 二手图书交易系统的设计与实现

博主介绍&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

PyCharm找不到Python了咋办

Python发生了重装的&#xff0c;且新的路径和原有路径不同&#xff0c;就会出现如下的错误&#xff1a; 解决办法&#xff1a; 点开PyCharm菜单的File/Setting 然后&#xff1a; 有上图的提示&#xff0c;说明需要将原来的venv进行清空。 如此操作之后&#xff0c;原来的红色…

交通预测数据文件梳理:PEMS04

文章目录 前言一、PEMS04.csv文件二、adj_PEMS04.pkl文件三、adj_PEMS04_distance.pkl文件四、PEMS04.npz文件 前言 最近做的实验比较多&#xff0c;对于交通预测数据的各种文件和文件中的数据格式理解愈加混乱&#xff0c;因此打算重新做一遍梳理来加深实验数据集的理解&…