多模态 LLM 中的跳过计算 ,通过跳过整个块、FFN层甚至单个神经元,可以实现计算的巨大减少 !

大模型关系型数据库图像处理

备注好友: 方向-学校/公司-姓名/昵称

【AIGC 先锋科技】交流群

picture.image

picture.image

大型语言模型(LLMs)在文本和多模态领域取得了显著的成功。然而,这种成功往往伴随着巨大的计算成本,特别是在处理多模态输入序列时。这激发了众多研究致力于提高训练和推理的效率。在本研究中,作者研究了多模态大型语言模型(MLLMs)在推理时的计算冗余。

作者提出了一些跳过计算的方法,例如跳过整个块、FFN或自注意力(SA)层。此外,作者还探索了并行化某些层,如FFN和SA层。

作者的发现验证了以下几点:

(1)在推理时可以避免大量计算,特别是对于视觉问答(VQA)等任务。

(2)在训练过程中跳过计算可以恢复原始性能的97%,即使跳过一半块或删除70%的权重。

(3)用较小的LLMs进行适当训练可以获得与2或3倍大小的LLMs相当的表现。

总之,作者将研究扩展到最近的多模态LLMs,如LLaVA-1.5,并得到了相似的观察结果。作者的工作表明,MLLMs内部存在冗余计算,因此有可能在不牺牲性能的情况下显著提高推理成本。

代码在这里:https://github.com/mshukor/ima-lmms。

1 Introduction

大型语言模型(LLMs)是人类达到智能水平的重要一步。这些模型能够在几乎所有人类可以完成任何文本任务上达到合理的分数。

除了文本领域,语言模型现在已成为大型多模态模型(LMMs)或多模态语言模型(MLLMs)的主要构建模块。然而,在更多模态上训练语言模型需要显著增加计算资源,因为多模态输入的复杂性。多模态输入涉及更长的序列长度,需要额外的解码器来划分不同的模态,以及每个示例的额外的处理延迟。

最近的方法试图通过冻结所有预训练模型参数并只训练映射模块来解决这个问题。这些模型只训练了少量的参数(几百万个),能够在广泛的多种模态任务上达到合理的性能。除了可训练参数外,互补工作还解决了数据效率问题,并避免了昂贵的多种模态预训练。当参数和数据效率相结合时,训练成本显著降低,变得可以承受消费者级GPU。

然而,降低MLLM的推理成本是一个鲜少受到关注的问题。这些模型在带有LLM的情况下,推理速度极慢,消耗大量的RAM和存储空间,这阻碍了它们在实际应用中的部署。

在这项工作中,作者假设LLM在通用多模态任务上具有高度过参数化的特点,并且包含可以跳过的冗余参数、层和块。

作者的工作也受到了最近一项研究[61]的启发,该研究指出文本和感知 Token 的嵌入在缓慢变化,这一现象已在LLM[67, 25, 41]中观察到。

作者研究了不同粒度 Level 上的计算冗余。作者专注于在自回归生成过程中跳过视觉和文本 Token 的计算。具体来说,作者从预训练模型开始,测试是否可以跳过整个块、FFN或SA层以及单个神经元,而无需进行额外的训练。此外,作者还尝试并行SA和FFN层,或2个完整块。

作者继续关注跳过整个块,但只在训练期间。这有助于减少训练和推理成本。作者证明,在高稀疏LLM(如跳过一半的层或删除超过70%的参数)训练映射模块时,可以保留97%以上的性能。最后,作者证明,通过适当训练具有较小LLM的多模型模型,可以保留几乎相同的原性能。

简而言之,作者提出了一种框架来研究和比较不同任务无关的压缩方法,适用于图像、视频和音频语言任务。作者的研究得出以下结论:

跳过生成的文本 Token 只会导致轻微的性能下降,尤其是在VQA任务中。

在跳过计算的情况下训练映射模块,可以保留几乎原始性能,即使当70%的参数被删除或50%的块被跳过时也是如此。

正确训练小型语言模型(例如OPT-2.7B)可以达到与大型语言模型(例如OPT-6.7B)相同的表现。

相似的观察也适用于大规模的MLLMs,如LLaVA-1.5。

2 Related work

大型语言模型(LLMs) 是当代大型多模态模型(LMMs)的基础组成部分。这些大多数 LMMs 要么使用冻结的 LLMs,要么在初始化后微调 LLMs 。除了规模之外,LLMs 推动了能够在一个统一框架中解决多个多模态任务的一体化模型的开发 。有效适应单模态模型 是一条重要的研究途径,旨在通过保持 LLMs 冻结并训练一小部分适应参数来避免昂贵的训练。尽管它们在效率上显著更高,但它们在推理阶段仍然承担着巨大的成本,与端到端训练的模型 在图像/视频/音频和语言任务上竞争 。然而,尽管它们的训练效率很高,但这些模型在推理阶段仍然承担着巨大的成本。

LLM压缩。模型压缩一直是研究重点,尤其是在大型模型出现后。已经开发了有效且可扩展的压缩方法,可对具有数百亿参数的LLM进行压缩。post-training pruning方法旨在使用有限数量的示例对模型进行稀疏化,而无需额外的模型训练。这些方法使用层级优化或仅通过几个模型推理实现效率[68]。

虽然大多数剪裁方法针对无结构化剪裁,但结构化剪裁可以实现实际计算时间的减少[45; 41]。post-training quantization 将模型参数的精度降低到8位、4位或更低,从而提高了效率并支持各种硬件架构。Early exiting方法直接从中间层生成输出,而不使用最后的LLM层[57; 9]。虽然基于输入样本的计算方法(如条件计算方法)可以跳过计算,但作者的方法是静态的且与输入无关。

压缩多模态模型。虽然有许多方法关注压缩LLMs,但针对多模态模型的压缩方法较少。现有方法包括从强大模型中进行知识蒸馏[16; 74],基于Lottery Ticket Hypothesis(LTH)的无结构剪枝[22; 69],或结构剪枝[60]。然而,当应用于非常大规模的模型(如MLLMs)时,这些方法通常需要承担相当大的额外成本。

3 Framework for compressing perceptually augmented LLMs

General MLLMs framework

作者研究了一种通用的架构,包括一个冻结的预训练语言模型(LLM)、一个可训练映射模块(C)和冻结的感知编码器(E_M),用于各种模态(M),如图像(I)、视频(V)和音频(A)。LLM的输入,表示为X,是一个文本 Token (T=[t_1, ..., t_{n_T}])的 ConCat ,以及多模态或感知 Token ,称为 Prompt (P=[p_1, ..., p_{n_P}])。 Prompt 通过编码特定模态的输入(XM)与相应的编码器进行编码,并使用映射模块将其投影到LLM输入空间。这可以表示为以下形式:

picture.image

LLM由N个块组成,每个块对输入的 Token 进行轻微的优化:

picture.image

并且每个块B可以表示为:

picture.image

作者主要关注参数/数据高效的设置,在这种设置下,语言模型和感知编码器保持冻结,只训练一个轻量级的映射模块(几百万参数)。

Efficient MLLMs baselines

作者遵循了之前工作的设置,为每个多模态任务微调一个映射模块。作者在图像、视频和音频文本数据集上训练多个模型。作者采用[61]中提出的 Baseline ,该 Baseline 采用轻量级 Transformer ,具有可学习的 Query 和自注意力机制,以关注感知 Token 。这种 Transformer 在低维空间中运行,由下/上投影层提供便利,并限制了可学习的 Query 的数量。

作者的 Baseline 类似于[71],然而,作者使用的可学习 Query 数量显著较少(例如,10个),并优先选择一个由5个块组成,隐藏维度为256的深度架构,而不是一个更宽的架构,其隐藏维度更大。作者在实际中发现的更深架构在参数数量减少的情况下效果更好。这些 Baseline 使用OPT-6.7B [82]进行训练,作者的研究得到了Vicuna-v1.5-7B [83]的补充。作者为图像使用不同的强大编码器(CLIP [54]),视频(X-CLIP [46]),音频(AST [23])。

Implementation details

作者采用了[61]中给出的实现细节。具体来说,作者使用AdamW优化器,学习率为2e-4,并通过余弦退火调度器将其降低到最小值1e-5。在训练过程中,作者分别使用16个总批处理量进行描述生成,以及64个批处理量进行VQA数据集。作者将周期数设置为20,以确保收敛,尽管许多模型在几周期内即可收敛。作者选择最佳预训练权重进行评估;

例如,图像描述生成模型通常在约4个周期后收敛。训练在8个V100 GPU上进行,持续时间取决于任务;例如,对于大型VQAv2数据集,每个周期大约需要30分钟,而较小的数据集如Audiocaps和MSVD-QA需要大约10分钟每周期。

Datasets and metrics

遵循先前的研究,作者选择了几个公共的多模态数据集,涵盖两个代表性的任务:跨多种模态的问答(QA)和图像描述(captioning),包括图像(VQAv2 [24],COCO描述 [38])、视频(MSVD [76],MSRVTT [77])和音频(Audiocaps [28])。对于问答数据集,作者报告了开放式生成设置下的精确匹配准确率,而对于描述,作者报告了CIDEr指标。

4 Skipping computations for MLLMs

Skipping computations

方法. 作者提出了一种在输入和任务无关的情况下跳过整个层的简单方法。LLM 包含许多重复的块,作者认为它们是冗余的,可以跳过。

此外,以前的工作已经证明了 LLM 或 MLLM 中嵌入的缓慢变化[67, 25, 41] 或 MLLM[61]。具体来说,当跳过整个块时,方程 (2) 可以写成:

picture.image

这意味着跳过从层开始,每个间隔(例如,和时跳过一半块)。在块内,作者还调查是否可以跳过FFN或SA层。为了跳过FFN,每个间隔(I)的层,等式(3)可以写为:

picture.image

同样,在跳过SA层时:

picture.image

实验结果。图2展示了在不同多模态数据集上,跳跃块、 FFN (FFNs)或自注意力(SA)层之间的比较。对于问答(QA)任务,作者观察到,在保留原始性能的同时,可以跳过最多33%的块。然而,由于生成的文本 Token 数量较大,描述(captioning)任务面临更大的挑战,跳跃块的数量可以在15%至25%之间根据数据集有所不同。总的来说,跳过整个块可以获得最佳结果,而跳过SA层会导致性能最低,这强调了这些模型中SA层的重要性。

picture.image在本比较中,作者研究了只跳过生成文本中的哪些 Token 的影响,正如本节中的内容,与跳过所有 Token (包括包含感知 Token 、BOS Token 以及QA任务中的相应文本 Token )相比。如图3所示,对于QA任务,作者观察到跳过所有 Token 的25%的块仍能保持90%的性能。一般来说,跳过生成 Token 的层会导致更高的分数。

picture.image哪里开始跳过层?先前的研究 [61] 已经指出了在早期层(如前几层)中,文本和感知嵌入发生了显著变化,这突显了它们的重要性,与后期层相比。为了进一步研究这一现象,作者比较了不同的起始层数用于块跳。如图4所示,作者观察到跳过早期层会导致改进,尤其是在跳过大量层(如50%)时。这种效应在跳过感知 Token 时更为明显。

picture.image### Parrallelizing computations

在本节中,作者提出了一种并行处理不同层的方法,理论上这有助于在GPU上减少推理时间,避免顺序计算。具体来说,作者通过用以下方式替换方程(2)来并行处理整个块:

picture.image

在块内,作者还通过表示方程(3)如下,对FFN和SA在每个层间隔(I)上进行并行化:

picture.image

实验结果。图5比较了两种并行计算方法:在每个块内并行FFN和SA层,以及并行整个块。结果表明,两种方法在QA任务上都表现良好。然而,并行FFN和SA层可以显著提高所有数据集上的结果。

picture.image### Training with highly sparse LLMs

从头训练映射模块以解决跳过计算的问题。如前文所述,为了保留原始模型性能,跳过的参数数量应受到限制。在此背景下,作者提出了一种解决方案:使用压缩的LLM从头训练映射模块。作者保留了 Baseline 模型的所有超参数和训练细节,唯一的变化是LLM本身,其中作者使用Wanda [68]或α-SubNet [61]移除权重,或者跳过整个块,适用于所有 Token 。

表1呈现了有趣的结果。使用压缩的LLM进行训练,在描述生成和VQAv2上的性能几乎相同。当剪枝70%的权重或跳过一半的块(I=2)时,这一说法仍然成立。此外,在后者的情况下,除了提高推理效率外,训练时间减少了一个因子1.5。对于剪枝方法,实际效率提升需要专门的硬件。

picture.image与其他未压缩的模型进行比较。为了说明作者的发现,表2提供了与使用未压缩LLM的先前方法进行比较。在稀疏LLM的训练中,整体性能可以保留超过97%。有趣的是,尽管训练参数只有几乎的一半,并且删除了模型权重的50%以上,但作者的模型在除VQAv2之外的所有任务上与当前最先进的方法(DePALM [71])具有竞争力,在MSR-VTT任务上作者优于它。这些结果表明,对于通用多模态任务,LLM的参数显著过拟合。

picture.image### Training with smaller LLMs

在前面的章节中,作者探讨了显著压缩通用多模态任务的LLM(语言模型)的可行性。在这里,作者将探讨训练较小LLM模型的可能性。

实验结果。作者的模型使用较小的OPT模型家族进行训练。作者保持了 Baseline 模型的训练细节,除了最小的OPT-350M模型(在该模型中,较小的学习率可以获得更好的结果)。图6呈现了不同LLM大小之间的比较。有趣的是,参数在1.3B左右的模型在描述生成上表现相同。同样,对于VQAv2,作者可以在不损失点数的情况下将其模型缩放到2.7B参数。然而,尤其是在VQAv2上,OPT-350M与其他模型之间存在明显的差距。

此外,与OPT-350M相比,较大模型在计算效率上更有优势,这一点从第一轮之后的得分可以看出。表3进一步说明了在额外多模态任务上的类似结果。特别是,具有OPT-2.7B参数的模型可以与 Baseline 和先前的方法相竞争,这表明使用较小的LLM进行训练是可行的,避免了与较大模型相关的昂贵成本。

值得注意的是,以前的研究[63]表明,随着LLM大小的增加,性能也在提高,但它们使用较弱的视觉编码器,并且训练周期较少。作者认为,适当训练映射模块(例如,更好的编码器,足够的训练时间)可以减小来自较大LLM的改进。

picture.image### Case study for larger scale multitask MLLMs.

在本节中,作者研究了所提出方法在大规模多任务设置下的泛化能力。作者关注的是LLaVA-1.5 [39] 模型,该模型包括CLIP-ViT-L、Vicuna-v1.5与MLP相连接,并在一组公共数据集上进行训练。该模型在更近期的多模态基准测试(如SEED [33]、MME [21]、POPE [36]、ScienceQA(SQA)[44]等)以及传统的基准测试(如VQAv2 [24]、GQA [27] 和 TextVQA [66])上进行评估。

实验结果。表4表明,作者可以移除50%的参数,同时在多个数据集上保持原始性能的90%以上。基于所有 Token 计算剪枝得分给出最佳结果,其次是 Prompt (包含视觉 Token )和文本 Token 。作者还提出跳过整个块(图7)。与前一部分类似,只跳过生成的文本 Token 会导致最佳结果,此时作者可以保持原始性能的90%以上。总的来说,与单任务设置相比,性能出现了更大的退化。然而,这也表明了对于大规模模型移除冗余计算的可能性。

picture.image5 Discussion

单任务与多任务MLLMs。在本研究中,作者关注于在单任务设置下具有高计算冗余度的参数和数据高效的模型。作者还通过初步结果补充了在更大规模的模型上的工作,如LaMDA-1.5,这些模型采用多任务训练方式,可以支持更广泛的任务,包括与人类的对话。在这个设置中,作者也观察到类似的结果,然而作者认为这些 Baseline 需要更适应的压缩技术来限制性能下降。

动态计算。在作者的研究中,作者专注于静态计算跳过技术,在这些技术中,跳过策略在任务或输入示例中保持不变。这些静态方法对硬件不敏感,并与扩展技术兼容。然而,另一种方向涉及探索更适应计算策略,这些策略应根据任务的复杂性分配不同数量的计算。虽然已经为LLM 提出了类似的途径,但作者认为在这个领域仍有很大的改进空间。最终,作者认为作者的研究是突出LLM的过参数化,并提倡更大努力减少其计算成本的第一步。

局限性。作者的研究主要关注参数高效的MLLMs,其中LLM保持冻结。作者承认,作者没有探索的其他架构,如涉及通过交叉注意力机制的交互[2, 31]。此外,作者没有深入研究需要推理能力的更复杂的多模态任务[79]。由于本文的主要目标不包括提出新的SoTA模型压缩技术,作者没有与更 recent 方法进行广泛比较。将作者的研究扩展到涵盖这些场景将对未来研究具有重要意义。此外,作者专注于调查可能导致理论上高效训练和推理的冗余。然而,实际设备上的减少预计会更小,因为有许多其他影响因素。

6 Conclusion

这项研究调查了在感知增强的LLM(MLLM)中不同粒度 Level 的计算冗余性。作者的实验结果表明,通过跳过整个块、FFN层甚至单个神经元,可以实现计算的巨大减少。

作者证明了,通过训练压缩严重的LLM映射模块,可以有效地保留97%以上的性能。另一方面,使用较小的LLM进行训练,可以实现与两到三倍大的模型相当的表现。

作者在单任务和多任务多模态设置中都得到了类似的结果,强调了其广泛适用性。

作者希望在训练和推理阶段都减少MLLM计算成本的方法能够引起未来研究的关注。

参考文献

[0]. Skipping Computations in Multimodal LLMs.

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论