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

文章探讨了在大型语言模型中,ReLU激活函数的使用可以显著提升推理效率,通过ReLUfication方法将ReLU整合到预训练模型中,减少了计算量,且不影响性能。研究发现ReLU能有效诱导模型稀疏,实现更佳的硬件效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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所示)

### ICLR 2024中的图神经网络(GNN) 对于ICLR 2024会议中有关GNN的研究动态,虽然具体细节尚未公布,但从以往的趋势可以推测一些可能的方向。考虑到NeurIPS这样的顶级会议已经展示了大量关于图上的机器学习成果[^1],以及专门针对图结构数据的学习方法如超双曲图神经网络的发展[^3],预计ICLR 2024也将继续关注这一领域。 #### 预期的论文主题 鉴于先前的工作表明预训练语言模型能够显著减少特定任务所需的标注量并推动少样本和零样本学习的进步[^4],未来可能会有更多的研究探索如何将这些技术应用于GNN框架内,特别是在处理半监督或无监督场景下的节点分类、链接预测等问题时。此外,随着对复杂关系建模需求的增长,新型架构设计及其理论分析将成为热点之一。 #### 可能举办的研讨会 由于之前提到过不少NeurIPS workshop的内容会在次年的其他会议上重现,因此合理猜测,在ICLR 2024期间也有可能会举办类似的专题讨论活动来探讨最新的研究成果和技术挑战。特别是那些涉及跨学科交叉应用(比如生物信息学、社交网络分析等领域)或者是新兴方向(例如量子计算辅助下的高效算法实现等),都将是潜在的主题范围。 ```python # 示例代码展示了一个简单的GNN模型定义过程 import torch.nn as nn from torch_geometric.nn import GCNConv class SimpleGNN(nn.Module): def __init__(self, input_dim, hidden_dim, output_dim): super(SimpleGNN, self).__init__() self.conv1 = GCNConv(input_dim, hidden_dim) self.conv2 = GCNConv(hidden_dim, output_dim) def forward(self, data): x, edge_index = data.x, data.edge_index x = self.conv1(x, edge_index) x = F.relu(x) x = F.dropout(x, training=self.training) x = self.conv2(x, edge_index) return F.log_softmax(x, dim=1) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值