【模型微调】| 各类微调模型总结 P-Tuning,Prefix,P-tuning v2,LoRA

文章目录

  • 1 微调背景
    • 1.1 Full fine-tuning 全参数微调(FFT)
    • 1.2 parameter-Efficient-fine-tuning 部分参数微调(PEFT)
  • 2 提示词调整训练法
    • 2.1 P-Tuning
    • 2.2 Prefix
    • 2.3 P-Tuning v2
  • 3 结构调整训练法
    • 3.1 Adapter tuning
    • 3.2 LoRA

微调大模型方法最全综述

各种各样的微调模型在最近两三年很火爆,想要去讲明白这些方法并不容易~但是我还是想尝试一下,尽可能将这些微调模型以一个清晰的架构呈现出来

1 微调背景

首先我们从基础概念出发—— fine-tuning(微调),微调在AI界扮演着非常重要的角色,因为很多大模型往往采用预训练+微调范式

预训练大模型可以让模型广泛学习到一些知识~相当于广撒网,一个劲地学,也不管会碰撞怎样的思想火花,好比读书破万卷,所以可见预训练大模型需要很多的硬件资源,耗费很长时间,因而是很多大公司才能玩的动的。

那么预训练模型就很强了吗?不一定,就好比我们可能读了很多书,但想要对某些领域深入了解,需要再精读细读

某些领域的书籍,这就是模型微调,针对自然语言不同的下游任务(比如问答电影相关的知识)需要通过微调让模型获得更精细的知识,所以微调可以解决预训练模型在特定任务上表现差的情况。

微调可以分为两大类

1.1 Full fine-tuning 全参数微调(FFT)

很好理解,就是整体参数都参与到微调过程中,不对网络结构,Prompt进行更改,这种微调的效果往往结果会比较好,但是可想而知,耗费的资源和时间也长

因而人们想在保证结果优秀的前提下,想尽可能少的调整原本大模型的参数,来减小成本,也就是接下来的一大类

1.2 parameter-Efficient-fine-tuning 部分参数微调(PEFT)

  • 其中有些维持原本网络结构和大部分参数不变,只动个别层的参数,这是传统微调方式,在传统AI任务如分类用的很多,比如我们只调整输出层的参数,我把他叫做部分参数训练法 在大语言模型用的其实不多

  • 其中有些不动原本的网络结构和参数,对输入Prompt进行调整,我把他叫做提示词Prompt调整训练法 如P-tuning

  • 对原本网络结构进行更改,增加某些层,或者增加某些结构,我把他叫做结构调整训练法

有些方法可能是上面三种基本方法的组合~

以下五个优点:

  1. 能够降低计算成本(需要更少的GPU和GPU运行时间);

  2. 拥有更快的训练时间(更快地完成训练);

  3. 具备更低的硬件要求(适用于较小显存的GPU和较小的内存);

  4. 具有更好的模型性能(降低过拟合);

  5. 需要更少的存储空间(大部分weights可以在不同任务(tasks)之间共享)。

我们重点介绍提示词Prompt调整训练法结构调整训练法

2 提示词调整训练法

2.1 P-Tuning

在2021年论文《GPT Understands,Too》提出Prompt tuning(即我们可以常看到的P-Tuning)(讲到用到NLU自然语言理解任务)

他的思路动机来源于,观察到在很多情况下,我们调整提示词可以获得更好的结果,可以做这样一个类比

原本提示词输入是,Input=1,2,3,4,5 (这里以数字举例,每个数字对应代表一个字符)假设模型输出能够打60分

我们在实验中发现,输入调整为Input= 2,2,3,4,5 会更好,模型输出最后能够打75分

但是如上我们的调整都是离散的调整,费时费力,我看到一个专门的称呼,叫这种调整方式是离散的,硬的(hard Prompt tuning)

而很有可能这两个都不是最佳的,最佳的可能是Input=1.4,2,3,4,5

所以我们给Input加一些可学习的部分,让他自己学习到最佳的提示词状态,这便是提示词调整训练法的一大精髓和核心(Soft Prompt tuning)

如下图,将原本的离散的The captial of is 这些变为h0,h1,h2等等一系列连续的量

在这里插入图片描述

通俗可以这么理解,就是针对某些任务,在提示词上做更改是可以提高模型的表现的,但是我们不知道该做怎样的更改,人工调整费时费力,简单,让模型自适应地去学习怎么样调整提示词!

P-tuning:自动构建模版,释放语言模型潜能 - 科学空间|Scientific Spaces (kexue.fm)

2.2 Prefix

Prefix-Tuning: Optimizing Continuous Prompts for Generation

Prefix其实和 P-Tuning挺像的

Prefix支持进入前缀,P-tuning不局限于前缀

Prefix注重自然语言生成任务,P-tuning 注重自然语言理解任务

在这里插入图片描述

《The Power of Scale for Parameter-Efficient Prompt Tuning》是Prefix的简化~

好好研究一下这个

然后研究一下开源库huggingface

大模型微调实践——Prefix tuning与P-tuning v2的原理、区别与代码解析最终章 - 知乎 (zhihu.com)

2.3 P-Tuning v2

2021年,清华大学提出《P-Tuning v2: Prompt Tuning Can Be Comparable to Fine-tuning Universally Across Scales and Tasks》

v2 在v1的基础上进行了改进,显著的改进源于对预训练模型的每一层应用连续Prompt

在这里插入图片描述

3 结构调整训练法

3.1 Adapter tuning

2019年论文《Parameter-Efficient Transfer Learning for NLP》提出

如图,在自我注意模块(和前馈神经网络层模块)和后续剩余连接之间插入适配器层Adapter

在训练过程中,只训练Adapter结构的参数,原本模型参数不动

在这里插入图片描述

3.2 LoRA

论文《LoRA: Low-Rank Adaptation of Large Language Models》

具体做法

  • 在原模型旁边增加一个旁路,通过低秩分解(先降维再升维)来模拟参数的更新量
  • 训练时,原模型固定,只训练降维矩阵A和升维矩阵B;
  • 推理时,可将BA加到原参数上,不引入额外的推理延迟;
  • 初始化,A采用高斯分布初始化,B初始化为全0,保证训练开始时旁路为0矩阵;
  • 可插拔式的切换任务,当前任务W0+B1A1,将lora部分减掉,换成B2A2,即可实现任务切换;
  • 秩的选取:对于一般的任务,rank=1,2,4,8足矣,而对于一些领域差距比较大的任务可能需要更大的rank。

在这里插入图片描述

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

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

相关文章

PySimpleGUI 综合应用|英语文本朗读以及转换为语音Mp3

PySimpleGUI 综合应用 目录 PySimpleGUI 综合应用 应用界面 完整代码 所需模块 PySimpleGUI pyttsx3 pyaudio rapidfuzz 字典格式 应用界面 完整代码 英语朗读器.pyw import PySimpleGUI as sg import pyttsx3,pyaudio,pyperclip import os,re,datetime,wave,threa…

java基础(面试用)

一、基本语法 1. 注释有哪几种形式? //单行注释:通常用于解释方法内某单行代码的作用。 //int i 0;//多行注释:通常用于解释一段代码的作用。 //int i 0; //int i 0;//文档注释:通常用于生成 Java 开发文档。 /* *int i 0; …

springboot139华强北商城二手手机管理系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计,课程设计参考与学习用途。仅供学习参考, 不得用于商业或者非法用途,否则,一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

静态时序分析:时序弧以及其时序敏感(单调性)

相关阅读 静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm1001.2014.3001.5482 在静态时序分析中,不管是组合逻辑单元(如与门、或门、与非门等)还是时序逻辑(D触发器等)在时序建模时…

如何提高工业数据采集的效率和准确性-天拓四方

随着工业4.0和智能制造的兴起,工业数据采集的重要性日益凸显。通过数据采集,企业能够实时监控生产过程,优化资源配置,提高生产效率。在实时监控、生产优化、质量控制等方面,有效的数据采集系统能够为企业提供宝贵的洞察…

幻兽帕鲁服务器多少钱一台?腾讯云新版报价

腾讯云幻兽帕鲁服务器4核16G、8核32G和16核64G配置可选,4核16G14M带宽66元一个月、277元3个月,8核32G22M配置115元1个月、345元3个月,16核64G35M配置580元年1个月、1740元3个月、6960元一年,腾讯云百科txybk.com分享腾讯云幻兽帕鲁…

MongoDB安装以及卸载,通过Navicat 15 for MongoDB连接MongoDB

查询id: docker ps [rootlocalhost ~]# docker stop c7a8c4ac9346 c7a8c4ac9346 [rootlocalhost ~]# docker rm c7a8c4ac9346 c7a8c4ac9346 [rootlocalhost ~]# docker rmi mongo sudo docker pull mongo:4.4 sudo docker images 卸载旧的 sudo docker stop mong…

线上品牌展厅有哪些优点,如何打造线上品牌展厅

引言: 在当今数字化时代,品牌展示的方式也在不断演变,线上品牌展厅作为一种新型的展示方式,正逐渐成为品牌宣传的新宠。但是为什么需要线上品牌展厅,线上品牌展厅有哪些优势呢? 一.为什么需要线…

各品牌主板快速启动热键对照表及CMOS进入方法

各品牌主板快速启动热键对照表 主板品牌 启动按键 笔记本品牌 启动按键 主机品牌 启动按键 华硕主板 F8 联想笔记本 F12 联想台式机 F12 技嘉主板 F12 宏碁笔记本 F12 惠普台式机 F12 微星主板 F11 华硕笔记本 ESC 宏碁台式机 F12 梅捷主板 F9 惠普笔…

elementui 开始结束时间可以选择同一天不同时间段

先在main.js中导入 import moment from moment <el-row><el-col :span"12"><el-form-item label"考试开始时间" prop"startTime"><el-date-picker v-model"shiJuanXinXiForm.startTime" style"width: 100…

异步解耦之RabbitMQ(二)__RabbitMQ架构及交换机

异步解耦之RabbitMQ(一) RabbitMQ架构 RabbitMQ是一个基于AMQP&#xff08;Advanced Message Queuing Protocol&#xff09;协议的消息代理中间件&#xff0c;它通过交换机和队列实现消息的路由和分发。以下是RabbitMQ的架构图&#xff1a; Producer&#xff08;生产者&#…

孪生卷积神经网络(Siamese Convolutional Neural Network)的设计思路

孪生卷积神经网络&#xff08;Siamese Convolutional Neural Network&#xff09;是一种特殊类型的卷积神经网络&#xff0c;主要用于处理需要成对比较的数据&#xff0c;例如判断两个输入是否相似。 以下是孪生卷积神经网络的基本结构&#xff1a; 输入层&#xff1a;这一层…

019代码结构

什么是顺序结构&#xff1f; 什么是选择结构&#xff1f; boolean flag true; // 结果为true会执行大括号内的代码&#xff0c;否则不执行直接跳过 if(flag true){System.out.println("flag为真"); } 双if选择结构 if(flag true){// 结果为true会执行大括号内的代…

Vue3-Composition-API(二)

一、computed函数使用 1.computed 在前面我们讲解过计算属性computed&#xff1a;当我们的某些属性是依赖其他状态时&#xff0c;我们可以使用计算属性来处理 在前面的Options API中&#xff0c;我们是使用computed选项来完成的&#xff1b; 在Composition API中&#xff0c…

有哪些好用的洗地机推荐?洗地机品牌推荐

在如今快节奏的生活中&#xff0c;人们对于家居清洁的需求也越来越高。洗地机无疑成为了很多家庭清洁的得力助手。然而&#xff0c;在众多品牌和型号中&#xff0c;到底哪款洗地机值得入手呢&#xff0c;这可能是很多人都会发出的疑问&#xff0c;下面&#xff0c;我们接下来一…

JDBC - 结构优化1

JDBC - 结构优化1 文章目录 JDBC - 结构优化1三层架构1 什么是三层架构2 三层架构项目搭建 结构优化1 - 学生信息管理1 封装工具类2 ORM3 DAO 三层架构 1 什么是三层架构 **三层架构&#xff1a;**将程序划分为表示层, 业务逻辑层, 数据访问层三层&#xff0c;各层之间采用接…

vit细粒度图像分类(七)TBNet学习笔记

1.摘要 细粒度鸟类图像识别致力于实现鸟类图像的准确分类&#xff0c;是机器人视觉跟踪中的一项基础性工作。鉴于濒危鸟类的监测和保护对保护濒危鸟类具有重要意义&#xff0c;需要采用自动化方法来促进鸟类的监测。在这项工作中&#xff0c;我们提出了一种新的基于机器人视觉…

代码随想录算法训练营29期|day36任务以及具体安排

第八章 贪心算法 part05 435. 无重叠区间 class Solution {public int eraseOverlapIntervals(int[][] intervals) {Arrays.sort(intervals, (a,b)-> {return Integer.compare(a[0],b[0]);});if(intervals.length 1) return 0;int result 0;for(int i 1 ; i < interva…

分布式事务(三)—— 两阶段提交解决方案(2PC)

系列目录&#xff1a; 《分布式事务&#xff08;一&#xff09;—— 事务的基本概念》 《分布式事务&#xff08;二&#xff09;—— CAP和Base理论》 一、常见分布式事务解决方案 两阶段提交&#xff08;2PC&#xff0c;Two-phase Commit&#xff09;TCC补偿模式基于本地消…

springboot mybatis-plus 项目分层笔记

整体定义 config: 配置项&#xff0c;包含configuration注解 constants: 常量类enums: 枚举 exceptions: 全局异常处理&#xff0c;自定义异常&#xff0c;RestControllerAdvice 注解 fia3: 三大器依据执行顺序&#xff1a;过滤器filter、拦截器interceptor、切面aop 简称 fia…