北京智源表示大模型推断少用几层也可以,节省15%算力资源

news2025/3/2 2:29:03

在人工智能领域,大语言模型(LLMs)已经在各种下游任务中展现出了绝佳的性能。通常采用零次学习、少次学习和微调等多种评估协议。然而,LLMs的推理阶段非常昂贵,需要大量的计算资源。理想情况下,LLMs的推理阶段应该在保持其能力(例如泛化和上下文学习能力)的同时,使用更少的计算资源。

该研究探讨了一种动态减少激活神经元数量的方法来加速LLMs推理,灵感来自于人类思维过程。同时,提出了一种名为AdaInfer的简单但有效的算法,用于实例感知的自适应推理。AdaInfer的核心在于数据驱动的决策制定,它采用了一种早停策略,优化效率而不改变模型的参数。特别是,可以通过对LLMs的每个块特征(例如logits、隐藏状态、mlp和注意力激活值)进行统计分析,然后选择logits来构建特征,并使用经典的统计分类器(例如SVM和CRF)来促进早期退出策略。

论文标题
Not all Layers of LLMs are Necessary during Inference

论文链接:
https://arxiv.org/pdf/2403.02181.pdf

大语言模型的推理阶段成本分析

目前,LLMs的推理阶段非常昂贵。例如,典型的大型Transformer模型的单次推理时间复杂度为LSd(d+S),其中d、S和L分别代表隐藏层大小、序列长度和层数。理想的LLM推理阶段应该在保持其泛化能力和上下文学习能力的同时,使用更少的计算资源。目前实现LLM高效推理的流行方法包括模型剪枝和稀疏模型,但这些方法可能会改变LLM参数,从而冒险损害其泛化能力。

本研究考虑动态减少激活神经元的数量作为加速LLM推理的方法,提出了一个简单的算法AdaInfer,基于输入实例动态决定推理终止时刻。AdaInfer不改变LLM参数,并在任务间保持泛化能力。实验表明,AdaInfer在保持可比性能的同时,平均节省了14.8%的计算资源,在情感任务上甚至节省了高达50%的资源。此外,该方法与其他模型加速技术正交,有潜力进一步提高推理效率。

AdaInfer算法:动态调整推理过程

AdaInfer是一个简单但有效的算法,用于实例感知的自适应推理。AdaInfer的核心在于数据驱动的决策制定。通常,获取决策信号有两种方法:更新LLM参数需要训练,涉及高成本,并可能降低模型的泛化能力;保持参数不变,这是一种更理想和成本效益的方法,保留了模型的固有能力。在本研究中,研究者采用早停策略,优化效率而不改变模型的参数。

图片

图片

1. 特征选择模块

修改LLM参数需要训练并带来高成本,更重要的是,它可能会危及模型的泛化能力,并且检测这些问题可能具有挑战性。因此,该研究采用了一种更理想和成本效益的方法,即在不改变参数的情况下保留模型的固有能力。AdaInfer利用特别设计的特征(例如,“gap”和“top prob”),利用统计分类器来评估停止信号。

问题:缺乏决策特征。LLMs在初始层捕获粗粒度特征,并在后续更深层次中发展出更详细的细粒度表示。然而,缺乏通用级别的特征来证明浅层表示对当前任务是否足够。此外,这些特征需要具有内在的通用性,以确保在不同LLMs之间的兼容性。

图片

解决方案:Logits反映变化。为了解决这个问题,研究人员对LLMs中每个块的不同层的多种特征进行了视觉分析。特别关注以下因素:

  • Gap:衡量当前块对下一个token的预测置信度,定义为gap = P(top token) - P(second token),其中P代表当前块生成的概率分布

  • Top Prob:表示P(top token),当前块对最可能的下一个token的概率估计。

  • Cosine Similarity:计算以评估当前块和前一个块的特征之间的相似性,包括注意力激活值(attn)、多层感知器输出(mlp)和隐藏状态。

2. 分类器模块

分类器决定信号是否足够强以保证提前终止过程。使用基于置信度的标准不需要在推理过程中进行额外计算,但可能涉及使用验证数据进行阈值调整,以平衡准确性和效率。这涉及性能和计算效率之间的权衡。相反,门控功能的即插即用性提供了更大的通用性。然而,缺乏梯度信息的离散决策函数通常需要专门的训练方法。就研究趋势来看,经典的统计分类方法可以解决离散决策问题。研究人员可以通过统计分类器将块特征连接到决策制定。通过对一般特征(即,“gap”和“top prob”)进行分类,可以将决策制定简化为二元分类,从而实现早期退出策略。如果分类器认为当前层的特征可以停止,则可以丢弃后续层的计算;否则,继续到最后一层。

实验设计:评估AdaInfer性能

1. 任务类型和数据集

为了评估AdaInfer的性能,该研究选择了三种主要的任务类型,包括问答任务、文本分类任务和规则理解任务。问答任务包括MMLU、CommonsenseQA和SQuAD,要求模型具备世界知识和问题解决能力。文本分类任务则涉及SST-2和AG News,涉及情感分析和新闻标题分类。规则理解任务则测试了GPT-3的少数样本学习能力,使用了合成数据集进行模式识别等任务。

2. 实验设置和评价指标

实验中使用了不同规模的大型语言模型,包括OPT和Llama2系列,这些模型的参数数量从70亿到700亿不等,层数从32层到80层不等。研究者在零样本和少数样本的情况下评估AdaInfer,样本大小包括5、10、15和20。性能评估方面,检测了测试集上的top-1准确率。为了评估计算效率,研究者确定了每个输入实例的早期退出层索引,并将其转换为浮点操作(FLOPs)比率进行比较。

图片

实验结果:计算资源节约与性能保持

1. 性能对比与计算效率

实验结果表明,AdaInfer在保持与基线模型相当的性能的同时,平均节省了14.8%的计算资源,在情感任务上甚至节省了高达50%的资源。在零样本和少数样本设置中,所有任务的top-1平均准确率与基线模型相比,差距小于5%,QA和文本分类任务组的差距小于1%。

2. 不同任务类型的推理效率

AdaInfer在不同任务类型上的推理效率有所不同。例如,在情感分析任务上,使用Llama2-13B模型可以实现41%的计算成本节约,而在知识问答MMLU和CommonsenseQA任务上,节省的成本从2%到20%不等。这与实验设计中的观察相符,即在LLM推理场景中,并非所有层都是必需的,可以根据任务的不同动态调整早期退出层的配置。

图片

不同分类策略的影响分析

1. SVM与CRF分类器的比较

在探索如何在不改变大语言模型(LLMs)参数的情况下提升推理阶段的效率时,AdaInfer算法采用了两种经典的统计分类器:支持向量机(SVM)和条件随机场(CRF)。这两种分类器在早期退出策略中的应用是为了评估是否应该在处理过程中提前终止,从而跳过后续的解码器层。

SVM是一种不依赖于序列上下文的分类器,而CRF则考虑了层与层之间的特征依赖性,能够在序列标注任务中基于相邻元素状态做出决策。在AdaInfer的实验中,两种分类器都被用来处理“gap”和“top prob”这两个特征,以简化决策过程并实现早期退出策略。

实验结果表明,无论是在零样本(zero-shot)还是少样本(few-shot)的设置下,SVM和CRF都能在保持与基线模型相当的性能的同时,显著减少计算成本。具体来说,GAP阈值设置为0.8时,GAP策略在零样本设置下的性能优于CRF,这表明在不同的任务和输入实例中,早期退出的时机可能会有所不同。

图片

2. 不同大小模型的适用性

AdaInfer算法在不同大小的LLMs上的表现也进行了评估。在7B大小的Llama模型上,AdaInfer在某些任务中保持了准确率,甚至超过了基线模型,并实现了4%到32%的计算成本减少。然而,在70B大小的模型上,虽然在零样本设置中AdaInfer的性能与基线模型相当或略有提升,并且计算成本减少了10%到50%,但在少样本设置中,AdaInfer的准确率相较于基线模型在不同任务中下降了1%到25%。这表明对于更大的模型,AdaInfer可能需要更精确地识别和利用不同层级的特征。

通用性与因素研究

1. 任务内和任务间的泛化能力

AdaInfer的泛化能力通过在不同任务和模型上的性能来评估。在任务内泛化方面,使用情感任务的训练数据集训练的分类器在情感任务上表现出了令人满意的泛化能力。然而,在任务间泛化方面,使用知识问答任务的数据集训练的分类器在情感任务上的性能下降,这可能是由于特征选择不足,导致CRF过拟合了训练数据中的噪声或局部特征。此外,模型间泛化的实验结果表明,不同模型之间的logits分布特征存在差异,导致跨模型的分类器性能只有中等准确率。

2. 不同特征对性能的影响

在特征影响方面的研究中,AdaInfer主要利用了“gap”和“top prob”这两个特征。实验结果显示,其他特征如多层感知机(mlp)和隐藏状态的余弦相似性对结果影响不大,而“gap”和“top prob”作为通用特征,能够有效地指示停止信号。这一发现与LLMs在不同任务中的表现趋势一致,表明在不同的输入实例和任务中,模型的前向进展是否足够可以通过这些特征来衡量。

结论与未来展望

1. AdaInfer的贡献与潜力

AdaInfer作为一种简单但有效的算法,其核心在于数据驱动的决策制定。它采用了一种早停策略,通过优化效率而不改变模型的参数。特别是,通过对LLM的每个块特征(例如,logits、隐藏状态、mlp和注意力激活值)进行统计分析,然后选择logits来构建特征,并使用经典的统计分类器(例如,SVM和CRF)来促进早期退出策略。AdaInfer的实验结果表明,它可以在保持性能的同时显著节省计算资源,这证明了在LLM推理中实施早期退出策略的可行性,并且AdaInfer与其他模型加速技术兼容,提供了进一步提高推理效率的潜力。

2. 面向序列生成任务的扩展可能性

尽管AdaInfer在多个任务上表现出色,但由于它依赖于单次前向传播,因此尚未扩展到序列生成任务。这为未来的研究提供了重要的研究方向。例如,如何将AdaInfer应用于需要生成连续文本的任务,如机器翻译或自动文摘,可能需要对算法进行改进,以更精确地识别和利用不同层级的特征。对于更大的模型,如70B或更大规模的模型,AdaInfer可能需要更精确地识别和利用不同层级的特征。改进AdaInfer以适应这些更大的模型是未来研究的方向。

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

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

相关文章

java-ssm-jsp-基于ssm的宝文理学生社团管理系统

java-ssm-jsp-基于ssm的宝文理学生社团管理系统 获取源码——》公主号:计算机专业毕设大全

贝叶斯优化CNN-LSTM回归预测(matlab代码)

贝叶斯优化CNN-LSTM回归预测matlab代码 贝叶斯优化方法则采用贝叶斯思想,通过不断探索各种参数组合的结果,根据已有信息计算期望值,并选择期望值最大的组合作为最佳策略,从而在尽可能少的实验次数下达到最优解。 数据为Excel股票…

python 基础知识点(蓝桥杯python科目个人复习计划61)

今日复习内容:想到什么复习什么 因为比赛用到的编辑器是IDLE,所以从现在开始,我就不用pycharm了。 例题1: 从1到2020的所有数字中,有多少个2? 这个题是一个填空题,我用的方法是先在编辑器上…

基于YOLOv8深度学习的葡萄病害智能诊断与防治系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

华为新发布磁电存储“王炸”,到底是什么?

最近,在巴塞罗那举行的2024年世界移动通信大会(MWC24)上,华为数据存储产品线总裁周彼得博士介绍了这款即将面世的产品。他向听众表示,与磁带存储相比,该设备可以降低20%的总连接成本,而与硬盘相…

C# 中 Math.Round 数学函数

在 C# 中,Math.Round 是一个数学函数,用于对一个浮点数进行四舍五入操作。它接受一个浮点数作为输入,并返回一个最接近输入值的整数或指定小数位数的浮点数。 Math.Round 方法有多个重载,其中最常用的重载有以下两种形式&#xf…

OpenTenBase 开发环境搭建及Debug设置

最近有个 OpenTenBase开源核心贡献挑战赛 领导建议大家都去试试,我也去凑了下热闹,发现能力有限一时半会是搞不明白了,最多也就是能搞搞文档翻译,或者写点操作手册啥的。 不过不管怎么样,先把开发环境搭上,…

cannot import name ‘Flask‘ from partially initialized module ‘flask‘

bug: ImportError: cannot import name Flask from partially initialized module flask (most likely due to a circular import) (G:\pythonProject6\flask.py) 这个是因为包的名字和文件的名字一样 修改文件名: 结果 🤣🤣&…

基于PyTorch深度学习实战入门系列-(2)Numpy基础上

导入Numpy模块 import numpy as np创建数组(一维数组、小数数组、二维数组) # 创建一个一维数组 n1 np.array([1, 2, 3]) # 创建一个含有小数的一维数组 n2 np.array([0.1, 0.2, 0.3]) # 创建一个简单的二维数组 n3 np.array([[1, 2], [3, 4]]) print…

Rust教程:How to Rust-从开始之前到Hello World

本文为第0篇 专栏简介 本专栏是优质Rust技术专栏,推荐精通一门技术栈的蟹友,不建议基础的同学(无基础学Rust也是牛人[手动捂脸]) 感谢Rust圣经开源社区的同学,为后来者提供了非常优秀的Rust学习资源 本文使用&…

力扣由浅至深 每日一题.01 两数之和

万物惊鸿,唯我澄明 —— 24.3.9 1. 两数之和https://leetcode.cn/problems/two-sum/ 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会…

C语言转义字符:一文打尽

转义字符 1. 前言2. 预备知识2.1 打印格式2.2 进制转换2.3 ASCII码 3. 什么是转义字符4. 常见的转义字符4.1 \?4.2 \4.3 \"4.4 \\4.5 \dddddd表示1到3个八进制数字4.6 \xdddd表示1到2个十六进制数字4.7 其他转义字符 5. 一道笔试题6. 一个小插曲 1. 前言 大家好&#xf…

giffgaff怎么充值?giffgaff怎么续费?

-性价比高:0月租,免费接收短信,充值一次,接码可以用20年以上(仅需半年保号一次),可能是国内性价比最高的接码实体卡!-安全:实体卡无须担心因号码被风控,还可以…

使用阿里云服务器搭建网站简单吗?超简单教程

使用阿里云服务器快速搭建网站教程,先为云服务器安装宝塔面板,然后在宝塔面板上新建站点,阿里云服务器网aliyunfuwuqi.com以搭建WordPress网站博客为例,来详细说下从阿里云服务器CPU内存配置选择、Web环境、域名解析到网站上线全流…

BUU [网鼎杯 2020 半决赛]AliceWebsite

BUU [网鼎杯 2020 半决赛]AliceWebsite 开题&#xff1a; hint附件是源码。在index.php中有一个毫无过滤的本地文件包含 <?php $action (isset($_GET[action]) ? $_GET[action] : home.php); if (file_exists($action)) {include $action; } else {echo "File not…

STM32之串口中断接收UART_Start_Receive_IT

网上搜索了好多&#xff0c;都是说主函数增加UART_Receive_IT()函数来着&#xff0c;实际正确的是UART_Start_Receive_IT()函数。 —————————————————— 参考时间&#xff1a;2024年3月9日 Cube版本&#xff1a;STM32CubeMX 6.8.1版本 参考芯片&#xff1a…

基于Kronig-Penney能带模型的MATLAB求解与仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于Kronig-Penney能带模型的MATLAB求解与仿真.综合利用 MATLAB提供的求解常微分方程、矩阵行列式、代数表达式化简及绘图等函数 ,可使 Kronig-Penney能带模型分析…

【鸿蒙开发】第十八章 Web组件(二)

接上一章节 【鸿蒙开发】第十七章 Web组件&#xff08;一&#xff09; 4 H5与端侧交互 4.1 应用侧调用前端页面函数 应用侧可以通过runJavaScript()方法调用前端页面的JavaScript相关函数。 在下面的示例中&#xff0c;点击应用侧的“runJavaScript”按钮时&#xff0c;来触…

计算机网络(基础篇)复习笔记——体系结构/协议基础(持续更新中......)

目录 1 计算机网络基础相关技术Rip 路由更新操作 2 体系结构(OSI 7层, TCP/IP4层)应用层运输层网络层IPv4无分类域间路由选择 CIDRIPV6 数据链路层循环冗余校验CRC协议设备 物理层传输媒体信道复用技术宽带接入技术数据通信 3 网络局域网(以太网Ethernet) 4 通信过程编码:信道极…

2024年学生服务器申请流程,以阿里云学生机为例

阿里云学生服务器免费申请&#xff0c;之前是云翼计划学生服务器9元/月&#xff0c;现在是高校计划&#xff0c;学生服务器可以免费申请&#xff0c;先完成学生认证即可免费领取一台云服务器ECS&#xff0c;配置为2核2G、1M带宽、40G系统盘&#xff0c;在云服务器ECS实例过期之…