Meta提出全新参数高效微调方案,仅需一个RNN,Transformer模型GPU使用量减少84%!

近来,随着ChatGPT和GPT-4模型的不断发展,国内外互联网大厂纷纷推出了自家的大语言模型,例如谷歌的PaLM系列,MetaAI的LLaMA系列,还有国内公司和高校推出的一些大模型,例如百度的文心一言,清华的ChatGLM等模型。几乎隔几天就会有一个全新的大模型发布,但是对于研究者和开发者来讲,可能大家更关心的是在基础大模型训练、微调、推理和部署等实际落地方面上的创新。这就不得不谈到大模型底层的语言建模架构了,现如今,绝大多数大模型的基础架构,仍然使用6年前发表在NeurIPS上的Transformer。

随着模型规模和任务数量的增加,对整个Transformer模型进行微调也变得越来越昂贵。因此很多参数高效的迁移学习方法(Parameter Efficient Transfer Learning,PETL)被提出。本文来自Meta AI,提出了一种基于传统RNN架构的参数高效适应方法REcurrent ADaption(READ),具体来说,READ只需要在基础Transformer旁插入一个小型RNN网络,就可以实现高效的参数微调,模型无需再通过主干Transformer进行反向传播。作者通过一系列实验表明,READ在保持较高质量模型微调效果的同时,可以节省56%的训练显存消耗和84%的GPU使用量。

论文链接:

https://arxiv.org/abs/2305.15348

一、引言 

自2018年以来,大语言模型参数规模的增长速度相比GPU显存增长的速度快了近两个数量级,这使得入局大模型的门槛越来越高,配置一个足以放下大模型的“炼丹炉”的成本非常昂贵。只有少数资金的公司和机构才有能力对大模型进行训练和微调。为了降低这一门槛,PETL方法已经成为目前首选的方案,例如Adapter方法[1]通过在Transformer中插入小模块来减少模型需要更新的参数量。Soft Prompts方法[2]在模型输入embeddings后拼接小规模参数来达到类似的效果。还有受到广泛关注的Lora方法[3],通过低秩近似来最小化模型参数量,以及仅微调网络前几层中的偏执项的BitFit方法[4],下表展示了本文提出的READ方法与上述几种方法的微调代价对比结果。

从上表中看出,通过PETL方法的优化,模型的微调的成本相比完全微调已经大大降低。同时本文READ相比其他方法有着明显的优势,这得益于READ内部增加的小型RNN结构,在Transformer架构横行的今天,相对老旧的RNN展现出了强大的生命力。最近一个由华人主导的开源团队也发布了一个基于RNN架构的大语言模型RWKV[5],并且打出了与Transformer“鱼和熊掌兼得”的口号。

二、本文方法

2.1 什么是READ? 

本文提出的READ主要由一个标准的RNN和一个Joiner网络组成,READ网络的整体架构如下图所示。

2. 网络在优化过程中只涉及到RNN和前馈网络(FFN),且无需更新Self-Attention层。这提高了模型整体的可用性和训练效率,READ可以在任意的Transformer结构中即插即用。

3. 由于READ的循环网络特性,模型微调的可训练参数规模不随主干网络层数的增加而增加。两者的关系呈次线性增长。

4. READ可以在不修改主干Transformer网络中间结果的情况下进行计算。

2.2 READ如何起作用? 

三、实验效果 

本文的实验在GLUE基准的多个自然语言任务中进行,采用的基础Transformer架构为T5模型,RNN模型也使用了包含原始RNN,LSTM和GRU等多种循环神经网络结构。

3.1 READ方法在能耗显著较低的情况下表现优于其他方法 

下图展示了READ方法与其他PETL方法在GPU能耗降低情况下的性能对比,从下图左半部分我们可以看出,相比全微调(Full-tuning),READ可以将GPU使用量降低90%左右,GPU显存占用降低56%,同时模型的预测精度与原来保持一致。

虽然LoRA、BitFit或Adapter等PETL方法也可以明显减少可训练参数的数量,但它们并不能降低微调的计算成本,而这是PETL的主要优化目标。从上图右半部分我们可以看出,READ在训练过程中使用的显存占用非常小,图中主要展示了模型性能和显存占用之间的性能和空间权衡。与所有其他的baseline方法相比,READ实现了至少25%的训练显存优化,同时实现了更好的下游任务预测性能。

3.2 READ具有很强的可扩展性

如下图所示,与其他PETL方法相比,READ的可训练参数数量增长速度非常缓慢。随着T5骨干模型尺寸的增加,READ的参数数量呈现对数线性增长的趋势。这得益于READ的循环网络性质,使其微调参数规模与骨干网络层数无关,这使得READ在具体的工程实现中更适合于微调超大规模的Transformer模型。

3.3 READ在模型推理速度和显存占用方面也有很大的改进

如下图左半部分所示,READ相比其他PETL方法在模型推理阶段的显存占用更低,且推理速度也保持在一个较高的水平。此外,为了更全面地评估READ的推理显存占用,作者在下图右半部分展示了随着模型骨干网络尺寸的增加,推理显存占用的变化情况,相对于全微调方式,READ的推理显存增长几乎可以忽略不计。

四、总结 

本文针对大规模Transformer模型提出了一种全新的高效参数微调方法,称为REcurrent ADaption(READ)。READ方法不仅具有轻量化的特点,还能够在准确性方面与传统微调方法相媲美。READ通过引入RNN+Joiner模块的形式,使网络在微调时无需经过主干Transformer模型,显著降低了模型微调的GPU使用量,最高可以达到84%的节省效果。此外,READ还表现出了极强的扩展性,可以在几乎所有的Transformer结构上即插即用,而无需考虑修改原有模型中复杂的自注意力层。同时相对于全微调方法,READ可以降低56%的训练显存占用,这也进一步降低了深度学习工程师微调大模型的门槛。

参考 

[1] Neil Houlsby, Andrei Giurgiu, Stanislaw Jastrzebski, Bruna Morrone, Quentin De Laroussilhe, Andrea Gesmundo, Mona Attariyan, and Sylvain Gelly. Parameter-efficient transfer learning for nlp. In International Conference on Machine Learning, pages 2790–2799. PMLR, 2019

[2] Brian Lester, Rami Al-Rfou, and Noah Constant. The power of scale for parameter-efficient prompt tuning. arXiv preprint arXiv:2104.08691, 2021.

[3] Edward J Hu, Yelong Shen, Phillip Wallis, Zeyuan Allen-Zhu, Yuanzhi Li, Shean Wang, Lu Wang, and Weizhu Chen. Lora: Low-rank adaptation of large language models. arXiv preprint arXiv:2106.09685, 2021

[4] Elad Ben Zaken, Shauli Ravfogel, and Yoav Goldberg. Bitfit: Simple parameter-efficient fine-tuning for transformer-based masked language-models, 2022.

[5] Peng B, Alcaide E, Anthony Q, et al. RWKV: Reinventing RNNs for the Transformer Era[J]. arXiv preprint arXiv:2305.13048, 2023.

作者:seven_

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

迅镭激光赋能工程机械,客户连续复购激光加工设备达双赢!

工程机械是装备制造业的重要组成部分,当前,我国已成为门类齐全、规模庞大、基础坚实、竞争力强的工程机械设备制造大国。 随着工程机械产业正在全面向智能化、绿色化转型,激光加工成为推动工程机械产业转型升级的重要工具,越来越多…

CS162 11-12 调度与死锁

调度 overview 1.FCFS 可以利用好cache缓存,减少上下文切换。 2.很直观,贪心,可以减少平均的响应时间 3 4. 5.等待调度的时间是平均的 6.优先级翻转,和优先级捐赠 解决 cfs中的调度 死锁 四个必要不充分条件 银行家算法&…

《深度学习推荐系统》笔记

目录 一、推荐系统是什么1.作用和意义2.推荐系统的架构2.1 逻辑架构2.2 技术架构 二、传统的推荐系统方法1. 协同过滤算法1.1 userCF&&ItemCF1.3 矩阵分解算法 2. 逻辑回归算法3. 因子分解机3.1 POLY2模型3.2 FM模型3.3 FFM模型3.4 小结 4. 组合模型4.1 GBDTLR组合模型…

数学建模-多元线性回归分析

回归分析介绍和分类 数据分类及数据的来源 线性回归 四种模型的解释、虚拟变量的设置以及交互项的解释 3个定量,7个定类插入,表格,包含标题,标题换黑色 可以右键,复制表格,excel中设置三线表 ,gen(A)是参数…

Linux 部署Vue+Spring Boot项目

部署Vue Spring Boot项目 安装redis wget http://download.redis.io/releases/redis-4.0.8.tar.gz tar -zxvf redis-4.0.8.tar.gz yum install gcc-c make make install如果出现下面的问题: yum install tcl make testredis-server myconifg/redis.conf输入客户端…

WordPress作为可扩展的企业级解决方案

网络商业世界就像一片汪洋大海,大型企业是大海中最大的鱼。然而,只因为你比其他人都大,并不意味着你不能逆流而上。相反,企业业务面临的挑战更大,对网站的技术要求更高。 多年来,大型公司通常依赖最昂贵的…

不用显示器,不用鼠标和键盘,让我们用主机远程访问OK3588的桌面

不用显示器,不用鼠标和键盘,让我们用主机远程访问OK3588的桌面 MobaXterm软件介绍串口终端运行命令MobaXterm访问开发板 MobaXterm软件介绍 MobaXterm是一款增强型终端软件,对于Windows平台上的程序员、网络管理员和开发者是一款极其优秀的工…

用 pesq 给 torchaudio 读取的音频数据打分

用torchaudio读取的音频文件,在输入pesq之前需要进行格式处理与转换。 import torchaudio from pesq import pesq# 读取音频文件 audio_clean, src torchaudio.load(./audio/NOIZEUS/clean/sp01.wav) audio_0dB, sr0 torchaudio.load(./audio/NOIZEUS/bable/0dB/…

基于FPGA的按键消抖

文章目录 基于FPGA的按键消抖一、按键消抖原理二、按键消抖代码三、仿真代码编写四:总结 基于FPGA的按键消抖 一、按键消抖原理 按键抖动:按键抖动通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性…

wampserver的mysql8.0版本在my.ini文件中加入skip_grant_tables无效等一系列问题。

背景:安装了新的wampserver之后,php版本mysql8.0.31,想打开phpadmin可视化管理页面,后来忘记密码了,报错:ERROR 1045 (28000): Access denied for user rootlocalhost (using password: No),只能…

Ubuntu 更改内核启动顺序

ubuntu服务器系统中用run包安装了某卡的驱动,后来又安装了docker,重启后,驱动失效。 经分析 安装docker时,又把新的linux内核安装上了。驱动是安装在旧内核上。 然会重新安装驱动,失败,确认是因为驱动只支…

MDK版本坑error: A1167E: Invalid line start

移植threadx时对于.s的汇编文件报了大量错误,到文件里查看是汇编文件中的注释使用的C的注释方法,导致大量报错 MDK官网查到原因,一个是版本问题,一个是设置问题, https://developer.arm.com/documentation/ka002247…

isaac sim添加孔网格

isaac sim仿真和其它仿真实际上一样,对于孔的仿真,是没那么简单的 在此记录一下踩过的坑 1,首先,你需要在soildworks中将你的孔画出来,并导出stl 2,你可以在win10中使用3D画图查看孔的网格,看…

ylb-接口4投资排行榜

总览: 1、使用Redis存储投资信息 2、Redis常量类 在common模块constants包,创建一个Redis常量类(RedisKey): package com.bjpowernode.common.constants;public class RedisKey {/*投资排行榜*/public static fin…

实现本地缓存-caffeine

目录 实现caffeine cache CacheManager Caffeine配置说明 创建自定义配置类 配置缓存管理器 编写自动提示配置文件 测试使用 创建测试配置实体类 创建测试配置类 创建注解扫描的测试实体 创建单元测试类进行测试 实现caffeine cache CacheManager SimpleCacheManag…

3.8 Bootstrap 面包屑导航(Breadcrumbs)

文章目录 Bootstrap 面包屑导航(Breadcrumbs) Bootstrap 面包屑导航(Breadcrumbs) 面包屑导航(Breadcrumbs)是一种基于网站层次信息的显示方式。以博客为例,面包屑导航可以显示发布日期、类别或…

Unity打包窗口化放大、缩小、拖拽功能、无边框设置 C#

Unity打包Windows窗口实现放大、缩小、拖拽、无边框 文章目录 Unity打包Windows窗口实现放大、缩小、拖拽、无边框前言一、引入 user32.dll二、使用步骤1.引入库2.功能封装3.效果图如下,绑定自定义按钮 总结 前言 Unity无边框设置、窗口化放大、缩小、拖拽 提示&am…

Ceph

Ceph简介 Ceph使用C语言开发,是一个开放、自我修复和自我管理的开源分布式存储系统。具有高扩展性、高性能、高可靠性的优点。Ceph目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack,Kubernetes都可与Ceph整合以支持虚拟机镜像的后端存储…

TCP缓冲区和4次挥手调优

目录 如何修改TCP缓冲区才能兼顾并发数量与传输速度? 四次挥手性能调优 1,为什么建立连接是三次握手,而关闭连接需要四次挥手呢? 2.四次挥手的流程,注意5个状态 3.主动方优化 4,被动方调优 最后 如何修改TCP缓冲区才能兼顾并发数量与传输速度&…

APP外包开发中的H5框架

在开发APP的技术中,除了原生开发外也可以使用H5框架来开发。原生开发的特点是质量高,用户体验更好,但成本高,适用于对质量要求高的APP项目。H5框架的特点是通用性较强,对开发人员的要求相对较低,成本也低&a…