大模型微调方法

2023-09-19 01:06:24

下面是一些参数高效的微调大模型方法:

Adapter

模型总览

Adapter

Adapter作为一个插件加入到大模型内,微调下游任务时,固定大模型参数,只训练Adapter参数。

LoRA

LoRA名为大语言模型的低阶适应,最初设计用于微调LLM,但却在文生图领域大放异彩,并逐渐被人数知。其思想跟ResNet非常相似,通过在大模型旁侧添加一路分支,冻结大模型参数,学习分支参数(也即残差),达到微调效果。

模型总览

lora

formula

如果 Δ W \Delta W ΔW W 0 W_0 W0 一样,也是 R d × d \mathbb{R}^{d \times d} Rd×d,那么残差学习同样需要训练大量的参数,并没有达到参数高效的目标。而在我们学习中,常用的减少矩阵参数大小方法就是矩阵分解,因此作者对输入先降采样,再上采样,实现输入与输出维度一致。

Prefix-Tuning

该方法主要用来做NLG任务(Table-to-text Generation、 Summarization),在输入token之前构造一段任务相关的virtual tokens作为Prefix,然后训练的时候只更新Prefix部分的参数,而大模型参数冻结。

模型总览

prefix tuning

Prefix tokens初始化如下:

init

需要注意的是,在低资源场景下,用任务相关的单词来初始化prefix tokens,效果更好:

words

Prompt-tuning

Prompt-Tunning算是prefix-Tunning的简化版本,面向NLU任务,进行了更全面的效果对比,并且在大模型上成功打平了LM微调的效果。

模型总览

prompt tuning

  • 初始化:Prompt-tuning在输入层前置多个可训练的tokens,固定住大模型参数。实验结果表明用类标签来初始化prompts效果最好。
  • prompt ensembling:针对同一个任务,构造多个不同的prompts,就相当于训练了多个模型。

ensemble

Prompt-tuning 与 Prefix-Tuning 不同
  • 两者的基座模型不同,一个是T5,一个是BART和GPT2
  • 前者关注NLU,后者关注NLG
  • 前者参数更少,只需微调embeding层;后者需要微调所有层embedding,以及需要在输入层之后接一个MLP来稳定训练

P-tuning V1 & P-tuning V2

P-tuning主要用GPT来做NLU任务,达到甚至超过BERT同等水平。

模型总览

v1

v1做了如下两点优化:

  • 考虑到预训练模型本身的embedding就比较离散了(随机初始化+梯度传回来小,最后只是小范围优化),同时prompt本身也是互相关联的,所以作者先用LSTM对prompt进行编码。
  • 在prompt模板中,加入一些anchor tokens效果会更好。

v2主要是在大模型的每一层加入可训练prompts:

v2


参考

更多推荐

sql 脚本 WITH 作用

WITH是SQL中的一个关键字,用于创建临时表达式,也称为公共表表达式(CommonTableExpression,CTE)。它可以在查询中定义一个临时的命名结果集,并可以在后续的查询中引用该结果集。WITH的主要作用有两个:提高可读性:通过使用WITH关键字,可以将复杂的查询逻辑分解为多个简单的部分,并使用有意义的名

Sqilte3初步教程

文章目录安装创建数据库创建和删除表插入行数据安装Windows下安装,首先到下载页面,下载Windows安装软件,一般是sqlite-dll-win32-*.zipsqlite-tools-win32-*.zip下载之后将其内容解压到同一个文件夹下,我把它们都放在了D:\CS\sqlite目录下,然后将这个目录添加到环

【Springboot】Springboot如何优雅停机?K8S中Pod如何优雅停机?

什么是优雅停机:就是对应用进程发送停止指令之后,执行的一系列保证应用正常关闭的操作。这些操作往往包括等待已有请求执行完成、关闭线程、关闭连接和释放资源等就是对应用进程发送停止指令之后,能保证正在执行的业务操作不受影响,可以继续完成已有请求的处理,但是停止接受新请求本质上是JVM即将关闭前执行的一些额外的处理代码可以避免

安卓核心板开发板的操作系统版本有哪些?

安卓核心板也就是安卓主板平台,一般是指芯片主板硬件平台以及系统开发平台的总称。采用ARM应用处理器平台运行google的android智能化操作系统,是将核心功能封装的一块电子主板,集成芯片、存储器和功放器件等,并提供标准接口的芯片。新移科技专注于安卓核心板定制开发,联发科紫光展锐高通安卓核心板四核/八核方案定制。4G

ubuntu:在ubuntu系统上使用apache2服务器部署多个vue项目

在Ubuntu系统上使用Apache2服务器部署多个Vue.js项目,你可以按照以下步骤进行操作:1.安装Apache2如果你的系统上还没有安装Apache2,可以使用以下命令安装:sudoaptupdatesudoaptinstallapache22.配置虚拟主机要部署多个Vue.js项目,最好为每个项目配置一个单独

算法通关村-----回溯模板如何解决排列组合问题

组合总和问题描述给你一个无重复元素的整数数组candidates和一个目标整数target,找出candidates中可以使数字和为目标数target的所有不同组合,并以列表形式返回。你可以按任意顺序返回这些组合。candidates中的同一个数字可以无限制重复被选取。如果至少一个数字的被选数量不同,则两种组合是不同的

论文阅读:AugGAN: Cross Domain Adaptation with GAN-based Data Augmentation

Abstract基于GAN的图像转换方法存在两个缺陷:保留图像目标和保持图像转换前后的一致性,这导致不能用它生成大量不同域的训练数据。论文提出了一种结构感知(Structure-aware)的图像转换网络(image-to-imagetranslationnetwork)。ProposedFramework为了将图像正

基于复旦微的FMQL45T900全国产化ARM开发开发套件(核心板+底板)

TES745D是我司自主研制的一款基于上海复旦微电子FMQL45T900的全国产化ARM核心板(模块)。该核心板将复旦微的FMQL45T900(与XILINX的XC7Z045-2FFG900I兼容)的最小系统集成在了一个87*117mm的核心板上,可以作为一个核心模块,进行功能性扩展,能够快速的搭建起一个信号平台,方便

在Scrapy框架中使用隧道代理

今天我要和大家分享一些实战经验,教你如何在Scrapy框架中使用隧道代理。如果你是一个热爱网络爬虫的开发者,或者对数据抓取和处理感兴趣,那么这篇文章将帮助你走上更高级的爬虫之路。首先,让我们简单介绍一下Scrapy框架。Scrapy是一个强大的Python网络爬虫框架,它能够帮助我们高效地抓取网页数据并进行处理。使用S

京东商品详情数据采集接口

使用京东商品详情接口的具体流程如下:注册账号并登录。填写应用相关信息,包括应用名称、应用描述、应用回调地址等,然后提交申请。审核通过后,进入应用管理页面,点击“应用信息”,获取应用Key和应用Secret。获取商品详情接口。京东提供了丰富的API接口,不同的接口可以获取不同的商品信息。这里以获取商品详情接口为例。获取A

电容笔哪个厂家的产品比较好?开学季值得买电容笔

现在,几乎每个人都有一个ipad平板,可以帮助你解决很多工作和学习上的难题,比如工作时的整理文档,做一些简单的PPT,以及在学习上记录笔记等等。所以,用一支好用的电容笔来搭配iPad是非常重要的。在这里,我给大家安利几款既使用方便,又价格不贵的电容笔!一、电容笔和ApplePencil的区别以及电容笔的优势1、压感电容

热文推荐