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

在人工智能领域,大语言模型(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以适应这些更大的模型是未来研究的方向。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-10 18:56:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-10 18:56:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-10 18:56:04       87 阅读
  4. Python语言-面向对象

    2024-03-10 18:56:04       96 阅读

热门阅读

  1. LeetCode111 二叉树的最小深度

    2024-03-10 18:56:04       48 阅读
  2. flask流式响应

    2024-03-10 18:56:04       48 阅读
  3. Flask从入门到精通

    2024-03-10 18:56:04       34 阅读
  4. Python Flask 打包成exe 心得体会

    2024-03-10 18:56:04       42 阅读
  5. 5.49 BCC工具之rdmaucma.py解读

    2024-03-10 18:56:04       42 阅读
  6. 蓝桥杯刷题--python-20-多路归并,贡献法

    2024-03-10 18:56:04       38 阅读
  7. uniapp ui库 px 转 rpx

    2024-03-10 18:56:04       43 阅读
  8. PostgreSQL常用命令汇总

    2024-03-10 18:56:04       40 阅读
  9. CSS实现块级元素水平垂直居中的3种常用方式

    2024-03-10 18:56:04       42 阅读
  10. 调用GPL 开源库的法律问题

    2024-03-10 18:56:04       39 阅读
  11. Python与FPGA——帧间差算法

    2024-03-10 18:56:04       42 阅读