LLM微调 | Adapter: Parameter-Efficient Transfer Learning for NLP

news2024/11/16 6:00:15

目的:大模型预训练+微调范式,微调成本高。adapter只只微调新增的小部分参数【但adapter增加了模型层数,引入了额外的推理延迟。】

  • Adapters最初来源于CV领域的《Learning multiple visual domains with residual adapters》一文,其核心思想是在神经网络模块基础上添加一些残差模块,并只优化这些残差模块,由于残差模块的参数更少,因此微调成本更低。

  • Houlsby等人将这一思想应用到了自然语言处理领域。他们提出在Transformer的注意力层和前馈神经网络(FFN)层之后添加全连接网络。微调时,只对新增的 Adapter 结构和 Layer Norm 层进行微调,从而保证了训练的高效性。 每当出现新的下游任务,通过添加Adapter模块来产生一个易于扩展的下游模型,从而避免全量微调与灾难性遗忘的问题。
    Adapters Tuning效率很高,通过微调不到4%的模型参数,可以实现与 fine-tuning相当的性能。

在这里插入图片描述
左图:在每个Transformer layer中两次添加adapter——在多头注意力后的投影之后和在两个前馈层之后。
右图:adapter是一个bottleneck结构,包括两个前馈子层(Feedforward)和跳连接( skip-connection)。

  • Feedforward down-project:将原始输入维度d(高维特征)投影到m(低维特征),通过控制m的大小来限制Adapter模块的参数量,通常情况下,m<<d;
  • Nonlinearity:非线性层;
  • Feedforward up-project:还原输入维度d,作为adapter模块的输出。通时通过一个skip connection来将Adapter的输入重新加到最终的输出中去(残差连接)

伪代码样子:

def transformer_block_with_adapter(x):
	residual = x
	x = SelfAttention(x)
	x = FFN(x) # adapter
	x = LN(x + residual)
	residual = x
	x = FFN(x) # transformer FFN
	x = FFN(x) # adapter
	x = LN(x + residual)
	return x

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

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

相关文章

数据库信息速递, RAFT 原生系统是未来数据流式系统的未来

开头还是介绍一下群&#xff0c;如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;在新加的朋友会分到2群&#xff08;共…

功能测试之兼容性测试点和注意项

一&#xff1a;兼容性测试的概念&#xff1a;就是验证开发出来的程序在特定的运行环境中与特定的软件、硬件或数据相组合是否能正常运行、有无异常的测试过程。 二&#xff1a;兼容性测试的分类&#xff1a; &#xff08;1&#xff09;浏览器兼容性测试 指的是在浏览器上检查…

第四课:逻辑控制

1.分支语句 &#xff08;1&#xff09;if语句 练习 1.判断一个数字是奇数还是偶数 public static void main(String[] args) {int a 10;if (a % 2 1){System.out.println("a是奇数");}else{System.out.println("a是偶数");}} 2.判断一个年份是否为闰年…

Django学习记录:初步认识django以及实现了简单的网页登录页面的前后端开发

Django学习记录&#xff1a;初步认识django以及实现了简单的网页登录页面的前后端开发 1、可以先删去template文件夹&#xff0c;并在setting里面删掉这一行 2、在pycharm中创建app&#xff1a; 3、启动app&#xff1a;编写URL与视图函数关系【urls.py】 ​ 编写视图函数【vi…

HCIA-datacom数通题库和录播视频资料

HCIA-Datacom&#xff0c;是华为数通认证的初级考试&#xff0c;培训与认证具备数通基础通用知识和技能水平的工程师&#xff0c;只是入门了解数通的一些基础通用知识&#xff0c;适用于小白了解和学习数通知识点起点。 个人建议还是有必要考的&#xff0c;如果在企业考试考试…

Java版本spring cloud 工程项目管理系统源码

​ ​工程项目管理系统是指从事工程项目管理的企业&#xff08;以下简称工程项目管理企业&#xff09;受业主委托&#xff0c;按照合同约定&#xff0c;代表业主对工程项目的组织实施进行全过程或若干阶段的管理和服务。 如今建筑行业竞争激烈&#xff0c;内卷严重&#xff0c…

助力保险行业数字化创新,麒麟信安参展2023中国财险科技应用高峰论坛

2023年7月27日&#xff0c;由中科软科技股份有限公司主办的“中国财险科技应用高峰论坛”在北京古北水镇成功举办。作为享誉中国保险科技界的盛会&#xff0c;本次活动以“数智保险 创新未来”主题&#xff0c;汇聚全国数百位保险公司主管领导、资深保险行业信息化专家&#xf…

在PHP8中检测数据类型-PHP8知识详解

在PHP 8中&#xff0c;可以使用多种方法来检测数据类型。以下是常用的四种方法&#xff1a;使用 gettype() 函数、使用 is_* 系列函数、使用 get_debug_type() 函数、使用 get_class() 函数。 一、使用 gettype() 函数 gettype() 函数返回给定变量的数据类型。例如&#xff1a…

【Git系列】IDEA集成Git

&#x1f433;IDEA集成Git &#x1f9ca;1. idea配置git&#x1f9ca;2. idea添加暂存区和提交&#x1fa9f;创建文件&#x1fa9f;将整个项目添加到暂存区&#x1fa9f;提交到本地仓库&#x1fa9f;查看控制台&#xff0c;显示提交的信息&#x1fa9f;修改文件&#xff0c;再次…

matlab编程实践14、15

目录 数独 "四独"游戏 解的存在和唯一性 算法 常微分方程 数独 采用蛮力试凑法来解决数独问题。&#xff08;采用单选数&#xff0c;以及计算机科学技术中的递推回溯法&#xff09; 以上的数独是图14-2的两个矩阵的和&#xff0c;左侧的矩阵可以由kron和magic函…

软件测试之性能测试实施流程

软件测试之性能测试实施流程&#xff1a; 1.测试需求分析 测试需求分析是整个性能测试的基础&#xff0c;在这一阶段测试负责人要和项目干系人进行沟通&#xff0c;同时手机各种项目资料&#xff0c;尤其要搞清楚用户对待性能测试的核心需求。 测试需求分析阶段的主要任务是确…

小红书2020校招测试开发后端笔试题卷三

//完全背包求组合数 #include <iostream> #include<vector> #include<set> #include<map> #include<algorithm> using namespace std; int value[300]; // vector<int>vis; // vector<int>vis1; map<vector<int>,int>m…

Verilog语法学习——LV3_奇偶校验

LV3_奇偶校验 题目来源于牛客网 [牛客网在线编程_Verilog篇_Verilog快速入门 (nowcoder.com)](https://www.nowcoder.com/exam/oj?page1&tabVerilog篇&topicId301) 题目 题目描述&#xff1a; 现在需要对输入的32位数据进行奇偶校验,根据sel输出校验结果&#xff0…

【GITHUB】FlipIt – Windows的开源翻页时钟

FlipIt 是一款免费开源的翻页时钟应用&#xff0c;专为 Windows 平台设计。该应用灵感来源于备受喜爱的老牌翻页时钟应用 Fliqlo&#xff0c;后者被公认为经典的翻页时钟屏保。然而&#xff0c;由于 Fliqlo 是基于 Flash 技术开发的&#xff0c;随着微软最近正式禁用 Flash&…

《cuda c编程权威指南》03 - cuda小功能汇总

1. 计时 1.1 linux #include <sys/time.h>double cpuSecond() {struct timeval tp;gettimeofday(&tp, NULL);return ((double)tp.tv_sec (double)tp.tv_usec*1e-6); }// 调用 double start cpuSecond(); kernel_name << <grid, block >> > (ar…

防火墙监控工具

防火墙监控是跟踪在高效防火墙性能中起着关键作用的重要防火墙指标&#xff0c;防火墙监控通常应包括&#xff1a; 防火墙日志监控防火墙规则监控防火墙配置监控防火墙警报监控 防火墙监控服务的一个重要方面是它应该是主动的。主动识别内部和外部安全威胁有助于在早期阶段识…

CompletableFuture使用详解(全网看这一篇就行)

CompletableFuture是jdk8的新特性。CompletableFuture实现了CompletionStage接口和Future接口&#xff0c;前者是对后者的一个扩展&#xff0c;增加了异步会点、流式处理、多个Future组合处理的能力&#xff0c;使Java在处理多任务的协同工作时更加顺畅便利。 一、创建异步任务…

element-tree-line el-tree 添加结构线 添加虚线

概览&#xff1a;给element组件添加上虚线&#xff0c;通过使用插件element-tree-line 参考连接&#xff1a; 参考别人的博客 安装插件&#xff1a; # npm npm install element-tree-line -S # yarn yarn add element-tree-line -S main.js全局注册引入插件&#xff1a; imp…

《翻开收藏夹,拾起行动的力量》

文章目录 每日一句正能量前言分享一道收藏的好题分享一个收藏的便捷技巧积灰这么久&#xff0c;这个当时被收藏的东西对现在的你还有用吗&#xff1f;后记 每日一句正能量 很喜欢一个字&#xff0c;淡&#xff0c;平淡的淡&#xff0c;其实很不平淡&#xff0c;蕴含着很多人生哲…

巨人互动|Google海外户Google SEO关键词工具有哪些?

Google SEO是网站优化的重要工具之一&#xff0c;可以通过优化关键词来提升网站在搜索引擎结果页面的排名。而Google SEO关键词工具是帮助网站管理员和营销人员找到最有效关键词的工具。Google SEO关键词工具是一组被广泛使用的在线工具&#xff0c;可以帮助网站管理员和营销人…