ACL2022 | 大模型微调哪家好?小孩子才做选择,成年人当然是全都要

news2024/11/24 22:58:04

一、概述

title:UNIPELT: A Unified Framework for Parameter-Efficient Language Model Tuning

论文地址:https://arxiv.org/abs/2110.07577

代码:GitHub - morningmoni/UniPELT: Code for paper "UniPELT: A Unified Framework for Parameter-Efficient Language Model Tuning", ACL 2022

1.1 Motivation

  1. 大模型不同的微调方法(PELT)例如LoRA,prefix-tuning,Adapter方法效果不同,在不同的任务上效果也有差异,到底选哪个方法好呢?
  2. parameter-efficient language model tuning (PELT) 方法能在参数量比fine-tuning小很多的情况下,perform追上fine-tuning的水平,但是不同的PELT方法在同一个任务上表现差异可能都非常大,这让针对特定任务选择合适的方法非常繁琐。

1.2 Methods

  1. 提出了PELT方法,将不同的PELT方法作为子模块,并学习通过门控机械激活最适合当前数据或任务的方法。

说明:

  • 例如通过Gp参数控制Prefix-tuning方法的开关,GL控制LoRA方法的开关,GA控制Adapter方法的开关。
  • 图中蓝颜色的参数为可学习的参数。

1.3 Conclusion

  1. 本文方法始终优于传统的fine-tuning方法以及它在不同子模块下的表现,并且通常超过了在每个任务上单独使用的每个子模块的最佳性能的上限 。
  2. 融合多种PELT方法可能会有利于预训练语言模型PLM的有效性和鲁棒性

二、详细内容

1 GLUE实验结果

  • UniPELT(AP)和UniPELT(APL)区别
    • A: Adapter
    • P: P-tuning
    • L: LoRA
  • 结论
    • 在样本K=100,500,1000的实验上,UniPELT集成了多个微调方法的效果更好

2 Adapter方法分析:bottleneck大小对该方法效果的影响

  • bootleneck size越大,可训练的参数越多,效果也就更好,size=48的时候,可能学的还不太充分

3 LoRA方法对参数的敏感性

正对两个任务SST和MRPC,和不同的参数a来做实验,结果如下:

  • 没有一个有效的a在任何task上都是效果比较好的,说明了本文方法让他自己来学习这些参数的重要性

4 其他方法分析:

  • Prefix-tuning
    • 增加训练参数效果不一定好
  • BitFit和LoRA
    • LoRA训练参数比较小的情况下,效果好像也还可以

5 UniPELT和原始微调方法的上限对比

  • 6个实验有5个都超过了单独方法的上限

6 全量数据的训练效果

  • 使用全量的数据PELT还是取得了最好的结果
  • 不使用门,简单的融合,效果也没有本文PELT效果好,说明了本文方法的有用性

7 训练时间和推理时间分析

  • 训练速度UniPELT比之前微调的方法多一些,但是也还好,推理时间BitFit增加的最少,本文方法时间增加27%
  • 训练参数量LoRA,BitFit,Prefix-tuning都比较小,UniPELT多了一些

三、Adaptor、Prefix-tuning、LoRA背景知识

参考原文:从统一视角看各类高效finetune方法:从统一视角看各类高效finetune方法

1 Adaptor方法介绍

Adaptor核心是在原Bert中增加参数量更小的子网络,finetune时固定其他参数不变,只更新这个子网络的参数。Adaptor是最早的一类高效finetune方法的代表,在Parameter-Efficient Transfer Learning for NLP(ICML 2019)这篇文章中被提出。在原来的Bert模型的每层中间加入两个adapter。Adapter通过全连接对原输入进行降维进一步缩小参数量,经过内部的NN后再将维度还原,形成一种bottleneck的结构。在finetune过程中,原预训练Bert模型的参数freeze住不更新,只更新adapter的参数,大大减少了finetune阶段需要更新和保存的参数量。

2 Prefix-tuning方法介绍

Prefix-tuning的核心是为每个下游任务增加一个prefix embedding,只finetune这些embedding,其他参数freeze。Prefix-tuning对应的论文是Prefix-Tuning: Optimizing Continuous Prompts for Generation(2021),这类方法的思想来源于prefix prompt,prefix embedding相当于一个上下文信息,对模型最终产出的结果造成影响,进而只finetune这个embedding实现下游任务的迁移。

2 LoRA方法介绍

LoRA的核心是通过引入参数量远小于原模型的可分解的两小矩阵建立一个旁路,通过finetune这个旁路来影响预训练模型。LoRA于LoRA: Low-rank adaptation of large language models(2021)论文中被提出,利用低秩矩阵替代原来全量参数的训练,提升finetune效率。

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

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

相关文章

Java程序设计入门教程--浮点类型

情形 在Java中,Java提供了两种浮点型数据,单精度float和双精度double。 格式 一般情况下实型常量以如下形式表示: 0.123, 1.23, 123.0 等等表示双精度数; 123.4f, 145.67F, 0.65431f 等等表示单精度数。 当表示的数字比较…

零代码平台如何助力企业数字化,零代码会把IT人员淘汰掉吗

据研究,国内企业超过 70% 以上的业务管理需求得不到 IT 排期。 由于爆发的业务需求无法被满足,企业的数字化转型过程中充满着危险的 IT 失能陷阱。 01 IT面临的信息化现状 业务管理需求爆发: 在经济增速下行趋势下,企业面临更…

【Java8新特性--->异步处理】CompletableFuture

一、引入 假设一个商品详情页需要以下操作: 查询展示商品的基本信息耗时:0.5s 查询展示商品的销售信息耗时:0.7s 查询展示商品的图片信息耗时:1s 查询展示商品销售属性耗时:0.3s 查询展示商品规格属性耗时&#xff1a…

JVM--解析运行期优化与JIT编译器

本篇博客,我们来谈一谈JVM(HotSpot)为了提高Java程序的运行效率,都实现了哪些激动人心的技术~ 1 JIT编译器的引入 首先我们这篇文章中所说的编译器都是指JVM的组成部分之一---即时编译器(JIT)…

《三》Git 中的本地仓库

初始化本地 Git 仓库: 通过 git init 初始化,可以把当前目录变成了 Git 管理的本地仓库。目前仅仅是做了一个初始化仓库的操作,项目里的文件还没有被跟踪。 在当前目录下会出现一个名为 .git 的目录,这些文件是 Git 仓库的核心。…

每天一个面试题之==和equals的区别是什么?

==和equals的区别是什么? ""是一个关系运算符,关系运算符可以用来进行数据和数据之间的比较,而在java中数据类型大致可以分为两大类分别是基本数据类型和引用数据类型。 基本数据类型包含 byte&#xff0c…

React学习笔记八-受控与非受控组件

此文章是本人在学习React的时候,写下的学习笔记,在此纪录和分享。此为第八篇,主要介绍非受控组件与受控组件。 目录 1.非受控组件 1.1表单提交案例 1.2案例的总结 2.受控组件 2.1受控组件案例 2.1受控案例总结 1.非受控组件 1.1表单提…

基于LLMs的多模态大模型(Flamingo, BLIP-2,KOSMOS-1,ScienceQA)

前一篇博客已经整理了不训练视觉模型的文章们: 基于LLMs的多模态大模型(Visual ChatGPT,PICa,MM-REACT,MAGIC) 本篇文章将介绍一些需要训练视觉编码器来适配多模态大模型的工作们,这也是目前最…

QT桌面项目(状态栏和导航栏设置)

文章目录 前言一、状态栏二、导航栏三、同时添加状态栏和导航栏总结 前言 为了和我们这个项目做的更加真实,这里为我们的项目添加上状态栏和导航栏让他变成更加接近手机的桌面效果。 一、状态栏 这个状态栏就是显示时间和wifi状态,电池电量的&#xf…

9秒被骗132万元,AI换脸骗术,如何防范?

5月22日,安徽安庆的何先生接到熟人视频电话,让他帮忙转一笔账,但在9秒之后,对方却以“在开会”为由,迅速挂断了电话,还称“微信和电话不能说,加一下QQ”。“因为打了视频电话,又是熟…

数据结构学习记录——如何建立图(邻接矩阵、邻接表-图节点的结构、创建并初始化、插入变、完整图的建立)

目录 邻接矩阵 图节点的结构 创建并初始化 插入边 完整的图的建立 邻接表 图节点的结构 创建并初始化 插入边 完整的图的建立 邻接矩阵 图节点的结构 #include <stdio.h> #include <stdlib.h>#define MaxVertexNum 100 // 最大顶点数typedef int Wei…

Maven介绍与安装和配置

目录 Maven 简介 约定优于配置 Maven 特点 Maven 安装与配置 Maven 下载 配置 Maven 环境变量 Maven 简介 Maven 是一款基于 Java 平台的项目管理和整合工具&#xff0c;它将项目的开发和管理过程抽象成一个项目对象模型&#xff08;POM&#xff09;。开发人员只需要做一…

C语言结构体

C语言结构体 前言1. 结构体的声明1.1 结构体的基础知识1.2 结构体声明1.3 结构体成员的类型1.4 结构体变量的定义和初始化 2. 结构体成员的访问2.1 结构体变量访问成员2.2 结构体指针访问指针变量的成员 3. 结构体传参4. 结尾 前言 C语言结构体是一种自定义数据类型&#xff0…

vite-plugin-pwa配置详解

vite-plugin-pwa配置详解 前提&#xff1a;前端域名和后端服务域名相同时&#xff0c;用window.open新开页面下载或者导出文件&#xff0c;项目中导出和下载功能失效&#xff0c;原因是&#xff0c;域名相同走缓存 实现service worker离线缓存以前需要自己编写sw.js文件内容&…

基于SpringBoot+Vue的闲一品交易平台设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

MT4电脑版交易软件使用技巧有哪些?

MT4交易软件作为连接券商平台与投资者之间的纽带&#xff0c;不仅是外汇金融机构的首选交易平台&#xff0c;也因其显著的优势成为了外汇投资者进行网上交易的重要平台。而MT4交易软件又分为电脑版和手机版&#xff0c;因为大多数投资者进行外汇投资时使用的是MT4电脑版软件&am…

Gradio的web界面演示与交互机器学习模型,接口自动刷新或连续刷新数据流《5》

通过在接口中设置liveTrue&#xff0c;可以使接口自动刷新。现在&#xff0c;一旦用户输入发生变化&#xff0c;界面就会重新计算。依然使用计算器的示例&#xff1a; 实时接口 import gradio as grdef calculator(num1, operation, num2):if operation "add":ret…

浏览器原理+跨域+解决方案

原网址&#xff1a;浏览器部分笔记_浏览器不同窗口cookie共享吗_JackieChan_的博客-CSDN博客 一、浏览器存储对象 1.cookie cookie是一种纯文本文件&#xff0c;大小只有4kb&#xff0c;每次发送非跨域html请求时都会自动携带。特性如下&#xff1a; cookie一旦创建&#xff…

华为开源自研AI框架昇思MindSpore应用案例:Pix2Pix实现图像转换

目录 一、环境准备1.进入ModelArts官网2.使用CodeLab体验Notebook实例 在实际应用场景中&#xff0c;由于训练数据集不足&#xff0c;所以很少有人会从头开始训练整个网络。普遍的做法是&#xff0c;在一个非常大的基础数据集上训练得到一个预训练模型&#xff0c;然后使用该模…

Java程序设计入门教程--主函数

情形 在Java中&#xff0c;主函数就是主方法&#xff0c;即main()方法。它是Java应用程序的入口方法&#xff0c;也就是说&#xff0c;程序在运行的时候&#xff0c;第一个执行的方法就是main()方法&#xff0c;这个方法和其他的方法有很大的不同&#xff0c;比如方法的名字必…