ICLR 2024|ReLU激活函数的反击,稀疏性仍然是提升LLM效率的利器

b771e5a9faeb496392413e44c5fd0a6a.png

 

论文题目: ReLU Strikes Back: Exploiting Activation Sparsity in Large Language Models
论文链接: https://arxiv.org/abs/2310.04564

参数规模超过十亿(1B)的大型语言模型(LLM)已经彻底改变了现阶段人工智能领域的研究风向。越来越多的工业和学术研究者开始研究LLM领域中的难题,例如如何降低LLM在推理过程中的计算需求。

本文介绍一篇苹果发表在人工智能顶会ICLR 2024上的文章,本文针对LLM中激活函数对LLM推理效率的影响展开了研究,目前LLM社区中通常使用GELU和SiLU来作为替代激活函数,它们在某些情况下可以提高LLM的预测准确率。但从节省模型计算量的角度考虑,本文作者认为,经典的ReLU函数对模型收敛和性能的影响可以忽略不计,同时可以显着减少计算和权重IO量。因此作者主张在LLM社区重新评估ReLU的地位(尽可能多的使用ReLU)。

此外,作者还探索了一种基于ReLU的LLM稀疏模式,该模式可以对已激活的神经元进行重新利用来生成出新的高效token。综合这些发现和设计,本文实现了基于ReLU的高效LLM计算方案,相比其他激活函数,将LLM的推理计算量大幅减少三倍

01. 引言

为了提高LLM的推理效率,研究者们提出了包括量化、推测解码、剪枝和权重稀疏化等多种加速手段。通过引入激活函数的稀疏性可以在LLM的精度和计算量之间实现非常可观的效率平衡,尤其是在GPU等现代硬件上。在传统神经网络中经常使用的ReLU激活函数被认为可以有效诱导模型进行稀疏激活,来提高网络的推理效率。本文作者对OPT模型(激活函数使用ReLU)中每层神经元的激活稀疏度进行了测量,如下图(a)所示,所有层的稀疏度均超过90%,这种稀疏度可以在模型训练时GPU 和 CPU 之间的权重IO节省大量时间。对于 OPT 模型,这种稀疏性将推理所需的计算量从每个token的 6.6G FLOPS 减少到 4.5G FLOPS,从而节省了 32% 的计算量(如下图c所示)。

ee2ea9eeae03469dbe5f8cdd4ee370c6.png

 

02. 激活函数对模型综合性能的影响

0166465c45644be6aad2a6b548000181.png

 

上图第二行显示了LLM在使用不同激活函数时的性能指标曲线。可以看出,当使用不同的激活函数时,模型的性能非常相似。这一现象与LLM缩放定律[2]给出的结论一致,即LLM的性能很大程度上取决于计算和数据,而不是架构细节。但是不同激活函数带来的激活稀疏性水平明显不同。上图c反映了模型中所有层的平均稀疏度级别,当激活函数从SiLU过渡到ReLU(增加了门控权重  )时,模型的稀疏性也在增加。

03. ReLU充当预训练LLM的润滑剂

通过上一节的实验作者已经发现,LLM的预测准确率并不依赖于激活函数的类型。但是现有大多数LLM均是使用ReLU之外的激活函数进行训练,因此为了在推理阶段使这些LLM结合ReLU激活的计算优势,作者进行了各种架构改进实验。例如将ReLU合并到预训练LLM中,作者将这一过程称为对LLM的“再润滑”(ReLUfication)。将ReLU插入到预训练LLM中,模型在微调过程中可能快速的恢复性能,同时提高推理时的稀疏性,可谓是一举两得。

3.1 一阶段插入ReLU激活

ReLUfication过程的示意图如下图所示,这个过程可以分为多个阶段完成,一阶段是使用ReLU替换到LLM中的其他激活函数,例如在Falcon 和 Llama分别替换 GELU 和 SiLU。由于 OPT 模型已经使用 ReLU 激活,因此这里保持不变。

32d6ad8ce12e49bfba234ef95a62e7b5.png

 

随后作者将替换ReLU后的模型在RefinedWeb数据集上进行微调,下图分别展示了Falcon 和 Llama在替换后模型稀疏性的对比效果。

d76ee576b8ee45ef8304a12752e59ece.png

 

除了激活稀疏性的显着改善之外,作者还观察到了其他有趣的现象,如下图所示,作者测量了Falcon 和 Llama 预训练模型的预激活分布情况,可以看出,在微调阶段,这个分布本身的变化并不明显,这可能表明网络的预测倾向在引入稀疏性时并不会改变,具有良好的稳定性

defd4bcd4331497484a1b03883443c52.png

 

下图展示了模型的预测准确率随着ReLU的不断微调的变化情况,模型在微调阶段很快恢复了其原本的性能,其中Llama(绿色线条)完美的达到了ReLU插入之前的预测准确率

3.2 二阶段的进一步稀疏化

在一阶段的ReLU融化中,作者插入了ReLU来替代其他激活函数,这会导致模型down projection层的输入变稀疏,稀疏程度大约占总计算量的30%。然而,除了down projection层之外,transformer的解码器层中还有其他复杂的矩阵向量乘法,例如注意力层中的QKV projection,这些矩阵向量乘法大约占总计算量的约 55%,因此对这一部分进行二次稀疏也非常重要。作者发现,在现代transformer层中,注意力层和 FFN 层的输入都来自归一化层(LayerNorm),这些层可以被视为 MLP 的一种特定形式,因为它们并不是学习参数,而是学习如何对输入数据进行缩放,因此作者将ReLU接在归一化层之后来进行二阶段的稀疏激活

6cf78048ff2d4847a30e1b67a5ad6282.png

 

下表展示了ReLUfication调整后,模型的稀疏程度和zero-shot预测精度。其中模型的稀疏性可以分为三种类型:up projection、down projection和QKV projection。可以看到,对LLM的不同部位进行稀疏化后,模型的zero-shot精度变化并不明显,但是计算量的差异很大

e2352ee828da4f4fa0a62f1af8555077.png

 

为了综合评估激活函数对LLM上下文学习能力的影响,作者在下表展示了模型在大规模多任务语言理解(MMLU)任务中的性能,结果表明,当使用不同的激活函数和微调策略来增强原始 LLM 时,模型的zero-shot性能也不会发生显着变化。此外,在相同的FLOPS情况下,参数规模较大但经过ReLU简化后的模型相比原始较小模型的性能更好。总体而言,本文提出的ReLUfication可以降低LLM各个阶段的推理FLOPS,同时保持各种任务的同等性能。

04. 聚合稀疏性:重用已激活的神经元

3189c35c53914cd6a87bf0a6fd7b4886.png

 

3ed0ea39df8347f4912eedecbfd760d2.png

 

可以看出,重用激活方式对模型带来的困惑负面影响几乎可以忽略不记,其曲线与基线方法基本吻合,同时在推理加速方面也远远优于随机稀疏性。

05. 总结

本文对LLM中使用的激活函数进行了大规模的研究,作者发现,在LLM预训练和微调期间激活函数的选择不会对性能产生显着影响,而使用经典的 ReLU 可以为LLM提供稀疏性和更高效的推理效率。考虑到现有流行的LLM(例如Llama和Falcon)均已使用非ReLU激活函数进行预训练,从头对它们进行训练耗费的代价太大,因而作者提出了一种将ReLU激活函数合并到现有预训练LLM中的方法,被称为ReLUfication,ReLUfication具有即插即用的特点,可以在微调阶段快速将模型恢复到与原有状态相当的性能,同时带来显著的推理效率增益。作者在广泛的基准实验(包括zero-shot预测和上下文理解)上证明,在LLM中使用稀疏性激活函数具有强大的潜力。

参考

[1] Dan Hendrycks and Kevin Gimpel. Gaussian error linear units (gelus). arXiv preprint arXiv:1606.08415, 2016.

[2] Jared Kaplan, Sam McCandlish, Tom Henighan, Tom B. Brown, Benjamin Chess, Rewon Child, Scott Gray, Alec Radford, Jeffre Wu, and Dario Amodei. Scaling laws for neural language models. CoRR, abs/2001.08361, 2020.


  关于TechBeat人工智能社区

TechBeat(www.techbeat.net)隶属于将门创投,是一个荟聚全球华人AI精英的成长社区。

我们希望为AI人才打造更专业的服务和体验,加速并陪伴其学习成长。

期待这里可以成为你学习AI前沿知识的高地,分享自己最新工作的沃土,在AI进阶之路上的升级打怪的根据地!

更多详细介绍>>TechBeat,一个荟聚全球华人AI精英的学习成长社区

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

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

相关文章

gcc和g++的区别,如何看自己的编译器支持的C++的版本

gcc和g的区别 用一句话来说,就是gcc将程序视为c语言的,g将程序视为C的 gcc和g的区别主要在于它们处理不同后缀的文件类型、编译和连接阶段的不同调用方式,以及它们对C特性的支持方式。以下是详细介绍:123 文件类型。gcc将后缀为…

Pinia使用

官方地址:Pinia | The intuitive store for Vue.js (vuejs.org)https://pinia.vuejs.org/ 1.安装 npm install pinia npm install pinia-plugin-persistedstate Pinia是一个基于Vue 3的状态管理库,它使得管理Vue的全局状态变得更加容易和直观。 而…

自定义el-dialog的样式

实现效果: 样式代码如下:(可以写在common.scss文件夹中) .el-dialog__header {padding: 16px 20px;border-bottom: 1px solid #DCDFE6;display: flex;align-items: center;.el-dialog__title {font-size: 16px;position: relativ…

utniy urp shinyssrr插件使用

文章目录 前言步骤1首先在URP的配置文件里添加SSR后处理2 修改RenderingPath为延迟渲染3 启用深度纹理4 为物体添加脚本 插件下载 前言 用来实现屏幕空间反射效果 unity 版本为2021.3.8LTS,低版本的untiy URP的参数设置位置z可能会不同 步骤 1首先在URP的配置文件…

1028. 从先序遍历还原二叉树(三种方法:栈+递归+集合)

文章目录 1028. 从先序遍历还原二叉树(三种方法:栈递归集合)一、栈 while迭代1.思路2.代码 二、递归法1.思路2.代码 三、集合存储1.思路2.代码 1028. 从先序遍历还原二叉树(三种方法:栈递归集合) 一、栈 wh…

hive报错:FAILED: NullPointerException null

发现问题 起因是我虚拟机的hive不管执行什么命令都报空指针异常的错误 我也在网上找了很多相关问题的资料,发现都不是我这个问题的解决方法,后来在hive官网上与hive 3.1.3版本相匹配的hadoop版本是3.x的版本,而我的hadoop版本还是2.7.2的版本…

HTTPS的加密过程

文章目录 前言一、为什么需要加密?二、只用对称加密可以吗?三、只使用非对称加密四、双方都使用非对称加密五、使用非对称加密对称加密六、引入证书1.如何放防止数字证书被篡改?2.中间人有可能篡改该证书吗?3.中间人有可能掉包该证…

【YOLO系列】YOLOv9论文超详细解读(翻译 +学习笔记)

前言 时隔一年,YOLOv8还没捂热,YOLO系列最新版本——YOLOv9 终于闪亮登场! YOLOv9的一作和v7一样。v4也有他。 他于2017年获得台湾省National Central University计算机科学与信息工程博士学位,现在就职于该省Academia Sinica的…

机器视觉——硬件选型

1、相机选型 在选择机器视觉相机时,通常需要考虑以下几个方面: 1、分辨率:相机的分辨率决定了其拍摄图像的清晰度和细节程度。根据具体的应用需求,可以选择适当的分辨率范围。 2、帧率:帧率表示相机每秒钟能够拍摄的…

2023年营养保健品线上电商市场行业分析(2024年营养保健行业未来趋势分析)

近年来,受人口老龄化、养生年轻化等因素驱动,保健品行业增长强劲,加之越来越多的年轻人也加入养生大军,成为保健品市场上的一股新力量,进一步带动市场扩容。 鲸参谋数据显示,2023年度,京东平台…

[pdf]《软件方法》2024版部分公开-共196页

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 潘加宇《软件方法》2024版部分公开pdf文件,共196页,已上传CSDN资源。 也可到以下地址下载: http://www.umlchina.com/url/softmeth2024.html 如果…

Ubuntu20.04 ssh终端登录后未自动执行.bashrc

sudo vim ~/.profile输入以下内容 if [ -n "$BASH_VERSION" ]; then if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi 执行 source ~/.profile重新测试 其他答案 如果你的~/.bashrc文件在Ubuntu中没有自动生效,…

解析电源模块测试条件与测试步骤 快速完成测试

高温高湿储存测试是电源模块环境适应性测试内容之一,在实际使用过程中由于应用场景不同电源所处的环境也是多样的,因此需要测试电源对各种环境的适应能力,提高电源的性能和可靠性。 电源高温高湿存储测试的目的是为了测量环境对电源结构、元件…

C语言第三十三弹---动态内存管理(上)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 动态内存管理 1、为什么要有动态内存分配 2、malloc和free 2.1、malloc 2.2、free 3、calloc和realloc 3.1、calloc 3.2、realloc 4、常见的动态内存的错…

气象数据收集

1、国家气象科学数据中心 预报数据:需要定制,收费10万+ 观测数据:国家气象信息中心-中国气象数据网 (cma.cn)https://data.cma.cn/data/cdcdetail/dataCode/A.0012.0001.html 地面基本气象观测数据 滞后2天 滞后一天 路面数据同化系统,实时 国家气象信息中心-中国气象数…

11.以太网交换机工作原理

目录 一、以太网协议二、以太网交换机原理三、交换机常见问题思考四、同网段数据通信全过程五、跨网段数据通信全过程六、关键知识七、调试命令 前言:在网络中传输数据时需要遵循一些标准,以太网协议定义了数据帧在以太网上的传输标准,了解以…

android移动应用开发基础答案,安卓工程师面试题

一线企业的app都是多线程和多进程的,而Android进程间通信机制就是Binder,原生的线程间通信则是Handler,Binder和Handler是了解安卓运行机制必须要掌握的一个知识点,更是一线企业面试必问的知识点! 以下几道就是大厂关于…

【QT+QGIS跨平台编译】之五十五:【QGIS_CORE跨平台编译】—【qgsmeshcalcparser.cpp生成】

文章目录 一、Bison二、生成来源三、构建过程一、Bison GNU Bison 是一个通用的解析器生成器,它可以将注释的无上下文语法转换为使用 LALR (1) 解析表的确定性 LR 或广义 LR (GLR) 解析器。Bison 还可以生成 IELR (1) 或规范 LR (1) 解析表。一旦您熟练使用 Bison,您可以使用…

Unity中URP实现水体(整理优化)

文章目录 前言一、优化水的深度1、我们把 水流动的方向 和 水深浅过渡值,整合到一个四维变量中2、修改 水体流动方向3、在片元着色器中,修改使用过渡变量 二、优化泡沫三、优化水下的扭曲1、修复原本扰动UV的计算 四、优化水面高光1、把高光强度、光滑度…

红队基础设施建设

文章目录 一、ATT&CK二、T1583 获取基础架构2.1 匿名网络2.2 专用设备2.3 渗透测试虚拟机 三、T1588.002 C23.1 开源/商用 C23.1.1 C2 调研SliverSliver 对比 CS 3.1.2 CS Beacon流量分析流量规避免杀上线 3.1.3 C2 魔改3.1.4 C2 隐匿3.1.5 C2 准入应用场景安装配置说明工具…