【LLM-多模态】高效多模态大型语言模型综述

news2024/11/23 12:43:57

一、结论写在前面

模型规模的庞大及训练和推理成本的高昂,限制了MLLMs在学术界和工业界的广泛应用。因此,研究高效轻量级的MLLMs具有巨大潜力,特别是在边缘计算场景中。

论文深入探讨了高效MLLM文献的领域,提供了一个全面的视角,涵盖了其核心主题,包括基础理论及其扩展。论文的目标是识别并强调需要进一步研究并提出未来研究可能的方向。论文旨在提供一个关于高效MLLM当前状态的全面视角,希望能够激发更多的研究。鉴于该领域的动态性,可能有些最新的发展并未被完全覆盖。为此,论文建立了一个专门的网站,利用众包来跟上最新的进展。该平台旨在作为持续更新的信息源,促进该领域的持续增长。

更多细节请参考论文的GitHub仓库:https://github.com/jiannuist/Efficient-Multimodal-LLMs-Survey。

二、论文的简答介绍

2.1 论文的背景

大型语言模型(LLM)的卓越能力激发了将其与其他基于模态的模型结合,以增强多模态能力的研究。OpenAI的GPT-4V和Google的Gemini等专有模型的成功进一步支持了这一概念。因此,多模态大型语言模型(MLLMs)应运而生,包括mPLUG-Owl系列、InternVL、EMU、LLaVA、InstructBLIP、MiniGPT-v2和MiniGPT-4。这些模型通过有效利用各模态的预训练知识,避免了从头开始训练的高计算成本。MLLMs继承了LLMs的认知能力,展现出如强大的语言生成和迁移学习能力等众多显著特性。通过与其他基于模态的模型建立强大的表征联系和校准,MLLMs能够处理来自多种模态的输入,显著拓宽了其应用范围。

MLLMs(多模态大型语言模型)的成功在很大程度上归功于scaling law:随着投入更多的资源,如数据、计算能力或模型大小,AI模型的性能会得到提升。然而,可扩展性伴随着高资源需求,这阻碍了大型模型的发展和部署。例如,根据NVIDIA A100 GPU的计算,MiniGPT-v2的训练需要总共超过800个GPU小时。这带来了巨大的费用,对于大型企业之外的研究人员来说是难以承受的。除了训练之外,推理构成了MLLM中资源消耗的主要部分。考虑一个典型场景,模型输入包含一个336 x 336像素的图像和一个包含40个token的文本提示,使用LLaVA-1.5和Vicuna-13B LLM骨干进行推理需要18.2T FLOPS和41.6G的内存使用。大型模型资源密集型的特性也引发了关于民主化和隐私保护的担忧,考虑到当前主流的MLLMs,如GPT-4V和Gemini,由少数主导企业控制,并在云中运行。如前所述的实验所示,即使是开源的MLLMs,对计算资源的高要求使得在边缘设备上运行它们变得具有挑战性。这进一步加剧了确保公平访问和保护用户隐私的挑战。

图1:高效MLLMs的时间线

鉴于这些挑战,对高效多模态大型语言模型(MLLMs)的研究越来越受到关注。这些努力的主要目标是减少MLLMs的资源消耗,同时扩大其适用性并最小化性能下降。高效MLLMs的研究始于用轻量级模型替换大型语言模型,并进行典型的视觉指令调整。随后的研究通过以下方式进一步增强能力和扩展应用场景:(1) 引入了更轻量级的架构,重点在于效率,旨在减少参数数量或计算复杂度;(2) 开发了更专业的组件,专注于针对高级架构的效率优化或赋予特定属性,如局部性;(3) 支持资源敏感型任务,一些工作采用视觉token压缩来提升效率,使得MLLM能力能够转移到如高分辨率图像和视频理解等资源密集型任务。

图2:高效多模态大型语言模型进展的组织结构 图3展示了高效多模态大型语言模型(MLLMs)的架构

2.2 架构

遵循标准MLLM框架,高效MLLMs可以分为三个主要模块:负责接收和处理视觉输入的视觉编码器g,管理接收的多模态信号并执行推理的预训练语言模型,以及作为连接两种模态桥梁的视觉-语言投影器P。为了提高通用MLLMs的效率,主要的优化在于处理高分辨率图像,压缩视觉token,实施高效结构,以及利用紧凑型语言模型等策略。架构图如图3所示。表1概述了高效MLLMs的总结,包括基础LLM、视觉编码器、图像分辨率以及用于连接视觉和语言的投影器。这些高效MLLMs包括:MobileVLM 、LLaVA-Phi 、Imp-v1、TinyLLaVA 、Bunny 、Gemini Nano-2 、MobileVLM-v2 、MoE-LLaVA-3.6B、Cobra、Mini-Gemini、Vary-toy、TinyGPT-V、SPHINX-Tiny 、ALLaVA 、MM1-3B、LLaVA-Gemma、Mipha-3B、VL-Mamba、MiniCPM-V2.0、DeepSeek-VL、KarmaVLM、moondream2。

2.2.1 视觉编码器

视觉编码器接收输入图像 ,将其压缩为更紧凑的图像块特征。

高效MLLM通常继续采用在大规模MLLM中广泛使用的视觉编码器,如表1所述*

多个视觉编码器:在图4中的BRAVE对处理多模态大型语言模型(MLMM)任务的各种视觉编码器及其不同的归纳偏置进行了广泛的消融研究。结果表明,没有单一的编码器设置能在不同任务中始终表现出色,具有多样偏置的编码器可以产生出乎意料相似的结果。可以推测,整合多个视觉编码器有助于捕捉广泛的视觉表示,从而增强模型对视觉数据的理解。Cobra将DINOv2和SigLIP作为其视觉主干,理由是结合DINOv2提供的低级空间特征和SigLIP提供的语义属性将提升后续任务的性能。SPHINX-X[14]采用两个视觉编码器——DINOv2和CLIP-ConvNeXt。鉴于这些模型通过不同的学习方法(自监督与弱监督)和网络架构(ViT与CNN)进行了预训练,它们自然能够提供最互补和复杂的视觉知识。

轻量级视觉编码器:ViTamin代表了一种轻量级视觉模型,专为视觉和语言模型定制。它以卷积基座开始,随后在第一和第二阶段采用移动卷积块,第三阶段则使用Transformer块。值得注意的是,拥有436M参数的ViTamin-XL达到了82.9%的ImageNet零样本准确率,这一成绩优于EVA-E[80]的82.0%准确率,后者以4.4B的参数规模运行,参数数量是其十倍。简单地将LLaVA的图像编码器替换为ViTamin-L,就能在多种MLLM性能指标上树立新标准。

2.2.2 视觉-语言投影器

视觉-语言投影器的任务是将视觉补丁嵌入映射到文本特征空间。
图4展示了BRAVE [12] 如何将来自K个不同视觉编码器的特征以序列方式进行拼接。这些拼接后的特征随后被MEQ-Former缩减

基于MLP的方法,如[7, 54]所述,视觉-语言投影器通常通过直接可学习的线性投影器或多层感知机(MCP)实现,即几个线性投影器与非线性激活函数交错,如表1所示。

基于注意力的BLIP2 [15] 引入了Q-Former,一种轻量级transformer,它使用一组可学习的查询向量从冻结的视觉模型中提取视觉特征。Flamingo[16]提出的Perceiver Resampler考虑使用可学习的潜在查询作为交叉注意中的Q,同时图像特征被展开并与Q拼接,作为交叉注意中的K和V。通过这种方式,transformer在可学习潜在查询对应位置的输出被视为视觉特征的聚合表示,从而将可变长度的视频帧特征标准化为固定大小的特征。BRAVE [12] 中的MEQ-Former设计了一个多编码器查询transformer,将来自多个冻结视觉编码器的特征融合成一种通用表示,该表示可以直接输入到冻结的语言模型中。

基于CNN的MobileVLMv2[17]提出了LDPv2,一种新的投影器,包含三个部分:特征变换、token缩减和位置信息增强。通过使用逐点卷积层、平均池化和带有跳跃连接的PEG模块,LDPv2实现了更高的效率,参数减少了99.8%,并且处理速度略快于原始的LDP[20]。

基于Mamba的VL-Mamba[18]在其视觉-语言投影器中实现了2D视觉选择性扫描(VSS)技术,促进了不同学习方法的融合。VSS模块主要解决了1D序列处理与2D非因果视觉信息之间的不同处理方法。

混合结构蜜蜂[191]提出了两种视觉投影器,即C-抽象器和D-抽象器,它们遵循两个主要设计原则:(1) 在视觉token数量上提供适应性,以及(ii) 高效地维护局部上下文。C-抽象器,或称卷积抽象器,通过采用卷积架构,专注于熟练地建模局部上下文。该结构由个ResNet块组成,随后是自适应平均池化和额外的个ResNet块,这有助于将视觉特征抽象为任意平方数量的视觉token。相反,D-抽象器,或基于可变形注意的抽象器,使用可变形注意,通过基于2D坐标的采样过程,利用参考点和采样偏移量来维护局部上下文。

图 5:MobileVLM v2 [17] 和 Honeybee [19] 的高效多模态语言投影器。

2.2.3 小型语言模型

由于SLM贡献了MLLM参数的绝大部分,其选择与MLLM的轻量级特性密切相关。与参数规模从70亿到数百亿的传统MLLMs[87, 88]相比,高效MLLMs通常采用参数少于30亿的语言模型,如微软的phi2-2.7B[74]和谷歌的Gemma-2B[78]。Phi-2经过特殊数据配方的训练,其性能可与常规数据上训练的模型相比,后者规模是其25倍。Phi-3-mini[86]可以轻松部署在现代手机上,并达到与Mixtral 8x7B[89]和GPT-3.5等模型相当的品质。除了利用预训练模型外,MobileVLM[20]对LLaMA[87]进行缩减,并使用开源数据集从头开始训练。具体模型缩放情况见表.1和表.4。

2.2.4 视觉token压缩

初步研究表明,MLLMs在视觉问答和图像标注等多种任务中具有潜力。然而,在需要复杂识别的任务中,如人群计数和小字符的OCR,MLLMs面临重大挑战。直接的解决方法是通过提高图像分辨率,即实际增加视觉token的数量。然而,这种方法给MLLMs带来了巨大的计算负担,主要是因为在Transformer架构中,计算成本与输入token数量呈二次方增长。受此挑战驱动,视觉token压缩旨在减少由大量token引起的过高计算预算,已成为高效MLLMs的关键方面。论文将通过多种关键技术探讨这一主题,包括多视角输入、token处理、多尺度信息融合、视觉专家agent和针对视频的特定方法。

多视角输入 直接使用高分辨率视觉编码器进行细粒度感知在成本上是不切实际的,且不符合实际使用需求。因此,为了在使用低分辨率视觉编码器的同时使多模态大型语言模型(MLLM)能够感知详细信息,一种常见的方法是输入多视角IIR图像,即全局视图:通过调整大小获得的低分辨率图像,以及局部视图:通过分割得到的图像块。例如,

图6:Phi [86](从左至右:phi-1.5, phi-2, phi-3-mini, phi-3-small)与Llama-2 [91]系列模型(7B, 13B, 34B, 70B)的比较,这些模型均在相同的固定数据集上训练

LLaVA-UHD [35]提出了一种图像模块化策略,将原生分辨率图像分割成更小的可变尺寸切片,以实现高效且可扩展的编码。此外,InternLM-XComposer2-4KHD [90]引入了一种动态调整分辨率的策略,通过自动布局安排,不仅保持了图像的原始宽高比,还自适应地改变补丁布局和数量,从而提高了图像信息提取的效率。通过实施针对不同分辨率图像的自适应输入策略,可以在感知能力和效率之间取得平衡。

Token Processing:针对处理长视觉token序列的token处理技术对于高效的MLLMs至关重要,因为它们解决了保留细粒度细节和降低计算复杂性的双重挑战。LLaVA-UHD [35]提出了一种新颖的方法来管理与高分辨率图像相关的计算负担。它提出了两个关键组件:

(1) 一个压缩模块,进一步压缩视觉编码器中的图像token,显著减少了计算负载;

(2) 一个空间模式,用于组织LLMs的切片token。值得注意的是,LLaVA-UHD通过支持比以前模型大6倍的分辨率图像,仅使用94%的推理计算来展示其效率。

此外,该模型可以在学术环境中高效训练,在8个A100 GPU上完成训练过程仅需23小时。LLaVA-PruMerge [41] 和 MADTP [42] 提出了一种自适应视觉token减少方法,显著减少了视觉token的数量,同时保持了可比模型性能。TinyChart [37] 和 Textllawk [36] 专注于文档导向任务,前者采用视觉token合并模块,后者引入重采样和重排模块。这些模块可以增强细粒度视觉感知和信息压缩能力。

多尺度信息融合 利用多尺度图像信息对于视觉特征提取确实至关重要。这种方法使得模型能够捕捉到小尺度中存在的精细细节以及大尺度中可用的更广泛上下文。Mini-Gemini [26] 包含两个编码器,一个用于高分辨率图像,另一个用于低分辨率视觉嵌入。它提出了Patch信息挖掘,使用低分辨率视觉嵌入作为查询,通过交叉注意力从高分辨率候选中检索相关的视觉线索。在尺度上进行缩放表明,一个多尺度的小模型具有与大模型相当的学习能力,并且使用预训练小模型可以在MLLM基准上匹配甚至超过大模型的优势,同时更加计算效率。在大图像分割成小子图像后,Sr-wrapper处理单个子图像而不是使用窗口注意力,这允许使用不支持窗口注意力的预训练模型,并避免了从头开始训练额外的参数。然后,它将大型特征图插值到常规大小,确保视觉token的数量保持可接受。

视觉专家agent 大多数MLLM由于其非无损图像标记化,难以完全捕捉文本和物体的复杂细节。利用视觉专家agent是解决单一视觉编码器在细节丰富的内容上泛化能力有限的解决方案。P2G [38] 采用专家agent进行实时基础,通过多模态提示实现高效和有目的的推理。这一创新框架促进了在高分辨率场景中,即富含自然视觉和文本的场景中,推理的可插拔接地。它通过利用agent来增强文本和视觉接地与感知,例如OCRagent(文本)或接地agent(图像)来实现这一点。MoVA[43]解决了单个视觉编码器在各种内容上的泛化能力下降的问题,通过引入专家路由策略。这种方法使得能够灵活有效地利用来自多个任务特定视觉专家的表示,从而增强了泛化能力。。

图7:S3-Wrapper [40] 是一个简单的机制,它以无参数的方式将任何预训练的视觉模型扩展到多个图像尺度。

视频特定方法 视频理解也需要处理大量帧,这可能会在LLMs的上下文窗口内造成显著的计算挑战。Elysium [92] 在性能和视觉token消耗之间提供了权衡,其中T-Selector被引入作为视觉token压缩网络,以使LLMs能够区分单个帧同时减少视觉token的使用。VideoLLaVA [44],建立在LanguageBind [93] 之上,将视觉表示统一到语言特征空间中,推动基础LLMs向统一的语言-视觉LLM发展,而不会产生巨大的计算负担。

2.2.5高效结构

高效结构主要探索三个方向:混合专家、Mamba和推理加速。

混合专家(Mixture of Experts, MoE)通过调节模型参数总数来增强模型能力,同时保持激活参数不变,因此不会显著影响推理速度。MoE-LLaVA[25]提出了一种基于MoE的稀疏多模态大型语言模型(MLLM)框架,有效增加了参数数量而不损害计算效率。此外,它引入了MoE调优,这是一种三阶段训练策略,旨在将MoE[89]适配到MLLMs,并防止由于稀疏性导致的模型退化。MM1[30]设计了两种MoE模型的变体。第一种是3B-MoE模型,采用64个专家,每两层用稀疏层替换密集层。第二种是7B-MoE模型,利用32个专家,每四层用稀疏层替换密集层。

Mamba Cobra [13]将高效的Mamba[77]语言模型整合到视觉模态中,并探索不同的模态融合方案,以开发一种有效的多模态Mamba。实验表明,它不仅在与最先进的效率方法竞争中表现出色,而且由于其线性序列建模,速度更快。它还在克服封闭集挑战性预测基准中的视觉错觉和空间关系判断方面表现出色,并实现了与LLaVA相当的性能,而仅使用43%的参数。VL-Mamba[18]用预训练的Mamba语言模型替换了基于Transformer的主干语言模型。它探讨了如何有效地实施2D视觉选择性扫描机制以进行多模态学习,以及不同视觉编码器和预训练Mamba语言模型变体之间的组合。

推理加速 SPD[45]提出使用仅语言模型进行推测解码以提高推理效率。通过使用仅语言模型作为草稿模型进行推测在并行解码中,绕过了对图像token及其相关处理组件的需求。FastV [46] 发现,大多数图像token在第二解码器层之后接收到的注意力效率低下,并通过在推理阶段消除冗余视觉token来实现计算减少,而不牺牲性能。VTW [47] 断言,在MLLM的深层中,视觉token并非必需。它策略性地在特定层移除所有视觉token,只允许文本token参与后续层。VTW的这种方法可以在不损害性能的情况下,将多种多模态任务的计算开销减少超过40%。

图8:MOE 89和Mamba 77的结构。

2.3 高效视觉

视觉Transformer(ViT)[94]架构在计算机视觉应用中获得了显著的流行,并被广泛使用。然而,随着ViT模型规模的增大,可训练参数和操作的数量也随之增加,影响了它们的部署和性能。此外,自注意力机制的计算和内存成本随图像分辨率呈二次增长。参考论文[95],本调查旨在探讨可能用于高效MLLM的最有效视觉编码方法。
图9:高效视觉技术的组织结构

2.3.1 紧凑架构

紧凑架构指的是在保持下游任务高性能的同时,设计轻量级和高效模型的设计。它涵盖了多种策略和方法,旨在减少模型大小、计算复杂度和内存占用,同时不牺牲性能。这些策略大致可以分为三类:1) 架构设计方法,2) 架构搜索方法,以及3) 注意力机制优化方法。

架构设计方法涉及创建新的架构[133]或调整现有架构[134],以在不牺牲性能的情况下实现紧凑性。例如,Reformer[96]在注意力机制中引入了局部敏感哈希,以减少复杂度,并采用可逆残差层以更高效地存储激活。此外,Efficient-Former[97]分析了基于ViT的模型架构和操作符,引入了一个维度一致的纯变换器范式,并采用延迟驱动的瘦身方法,以优化Hncetngncrner在sdn nang deore上的表现。

架构搜索方法涉及使用神经架构搜索算法[113]来探索和发现针对特定任务或约束定制的紧凑架构。例如,Autoformer[99]在层间交织权重,使得数千个子网络能够得到充分训练。NASViT[100]引入了一种梯度投影算法、可切换层缩放和简化的数据增强,增强了收敛性和性能。此外,TF-TAS[101]研究了无需训练的架构搜索方法,提出了一种高效方案。UniNet[102]引入了上下文感知的下采样模块,通过变换器和MLP操作符改善了信息适应性。

注意力机制优化方法通过引入自适应注意力、学习稀疏注意力模式以及动态调整注意力机制来降低计算复杂度。Fayyaz等人[135]通过评分和自适应采样重要token实现了自适应注意力。PatchMerger[103]提取了区域token间的全局信息,并通过自注意力交换了区域token间的局部自注意力。DynamicViT[104]提出了一种注意力掩码策略,通过阻止与其他token的交互来可微地修剪token。此外,Sepvit[105]在窗口内及跨窗口进行了局部-全局信息交互,使用深度可分离自注意力。这些方法共同优化了注意力机制,提高了计算效率和性能。

2.3.2 剪枝

剪枝涉及对Transformer模型进行精简,通常可分为非结构化剪枝、结构化剪枝和混合剪枝技术。

非结构化剪枝侧重于消除单个权重,不考虑它们在模型内的结构排列。Rao等人[104]引入了一个动态token稀疏化框架,用于基于输入的渐进式和自适应剪枝冗余token,集成了一个轻量级预测模块来估计token重要性分数,并采用注意力掩码策略来区分token交互,以端到端方式优化预测模块。Cap[106]提出了一种新颖的理论基础剪枝器,能够在剪枝过程中准确且高效地处理复杂的权重相关性,并配有一个有效的微调过程用于压缩后的恢复。Cait[107]引入了非对称token合并,以高效整合相邻token同时保留空间结构,结合一致的动态通道剪枝,对Vision Transformers中不重要的通道进行均匀剪枝,增强了模型压缩。

结构化剪枝旨在移除结构组件,如基于预定义标准的注意力头或层。例如,WDPruning [108] 使用二元掩码来根据参数的大小识别不重要的参数。此外,Yu等人[136]提出了一种统一框架,将剪枝集成以生成紧凑的transformer。X-Pruner [109] 利用端到端学习的可解释性感知掩码来评估每个单元对预测目标类别的贡献,并自适应地搜索层级阈值,以保留最具信息性的单元,同时确定修剪率。此外,VTP [110] 通过集成控制系数减少嵌入维度,同时移除具有微不足道系数的神经元。Tang等人[111]首先在最后一层识别有效补丁,然后利用它们指导前一层的选择过程,其中对最终输出特征影响最小的补丁随后被丢弃。
图10:[138]中高效的视觉Transformer技术。虚线橙色块突出显示了每个优化技术主要关注的组件

混合修剪,如[137],研究了非结构化和结构化稀疏性,引入了一种一阶重要性近似方法用于注意力头移除。SPViT [112] 开发了一种基于动态注意力的多头token选择器,用于自适应实例级token选择,以及一种软修剪技术,将较少信息的token整合为包token而不是丢弃它们。ViT-Slim 113 利用了可学习的统一稀疏约束,并预定义了因子来表示跨各种维度的连续搜索空间中的全局重要性。

2.3.3 知识蒸馏

知识蒸馏是一种技术,其中较小的模型从更大、更复杂的模型学习以复制其性能,从而在保持预测准确性的同时实现高效部署[139]。视觉Transformer(ViTs)的知识蒸馏(KD)技术可以分为两大类:1)同构KD和2)异构KD。

同态知识蒸馏(Homomorphic KDs)可以进一步分为对数级[114, 115]、块级[117]、模块级[116]和特征级KD[118]。对于对数级方法,在DeiT[114]中,一个蒸馏token被整合到自注意力模块中,以模拟教师模型推断的类别标签,促进学生注意力和层之间的交互,从而在反向传播过程中学习硬标签。TinyViT[115]在预训练期间应用蒸馏,其中来自大型教师模型的对数被预先存储在硬件中,当将知识转移到缩小的学生变压器时,实现了内存和计算效率。块级技术如DeiT-Tiny[117]训练小型学生模型以匹配预训练教师模型的块级结构,然后使用分解的流形匹配损失进行优化,以减少计算成本。模块级方法涉及从预训练的统一模型中分离教师模块,以及从模块化模型中分离学生模块。在m2mKD[116]中,这些模块与共享的元模型结合,允许学生模块模拟教师模块的行为。特征级KD方法,如MiniViT[118]所示,结合了连续变压器块的权重。这涉及在层之间共享权重的同时引入变换以增强多样性。此外,利用自注意力上的权重蒸馏,将知识从大规模ViT模型转移到具有多路复用权重的紧凑模型。

异构KD涉及在具有不同架构的模型之间转移知识。例如,DearKD [119] 提出了一种新颖的两阶段框架DearKD,与传统的ViT架构方法不同。在第一阶段,他们使用简单的KD策略将CNN特征转移到ViT学生模型中,代表了一种异构转移。在后续阶段,如果真实样本有限,他们引入了一种边界保持的内部差异损失来增强这一过程。类似地,CiT [120] 提出了一种异构KD策略,其中知识从多样化的模型(如CNN和自卷积神经网络)转移到ViT学生模型,从而提高了性能。

2.3.4 量化

ViT量化是指减少ViT模型中数值表示的精度,通常从浮点运算过渡到定点运算[140]。这种精度的降低旨在减少内存使用、计算复杂度和能源消耗,同时保持模型准确性在可接受的水平。当前的研究主要可以分为后训练量化、量化感知训练和硬件感知量化。

后训练量化(Post-Training Quantization,PTQ)通过将训练好的ViT模型的参数从高精度浮点数转换为低精度定点数(如8位整数)来压缩这些模型。例如,Liu等人[141]引入了一种排名损失方法,以确定权重和输入的最佳低比特量化区间,确保注意力机制的功能性。他们还进行了一项分析,以理解不同层中的量化损失与特征多样性之间的关系,探索了一种利用每个注意力图和输出特征的核范数的混合精度量化方法。此外,PTQ4ViT[121]引入了双均匀量化方法,以最小化激活值在softmax和GELU函数后的量化误差,并采用了一种基于Hessian的度量来提高校准精度。APQ-ViT[122]提出了一种统一的Bottom-elimination Blockwise Calibration方案来优化校准度量,优先处理关键的量化误差,并设计了一种Matthew效应保持的Softmax量化方法,以维持幂律特性和注意力机制的功能。NoisyQuant[123]提出在量化值上添加固定的均匀噪声偏置,在某些条件下显著减少了量化误差。这一技术成功地将重尾激活分布修改以适应给定的量化器。

量化感知训练(QAT)将量化过程融入训练周期中。这种融合在降低到极低比特精度(如4比特或更低)时尤为有利,此时后训练量化(PTQ)会面临显著的性能损失。例如,Quantformer[124]利用熵信息保持自注意力排名的连续性,并引入可微搜索机制以最优地组合补丁特征维度,减少舍入和剪裁误差。Q-ViT[126]结合了蒸馏token和信息校正模块(IRM),以抵消量化注意力模块中分布的改变。TerViT[127]和Bit-shrinking[125]逐步降低模型比特宽度,同时调节锐度以在整个量化过程中保持精度。PackQViT[129]减轻了量化过程中的异常值影响。BiViT[128]引入了Softmax感知二值化,调整二值化过程,最小化二值化Softmax注意力值时的误差。Xiao等人[142]整合了一种梯度正则化方案,以抑制二值化训练期间的权重振荡,并引入激活移位模块以减少激活中的信息失真。此外,BinaryViT[130]将CNN中的关键架构元素融入纯ViT框架,增强了其功能。

硬件感知量化(Hardware-Aware Quantization)针对特定硬件平台(如GPU [131]、FPGA [132])优化神经网络模型的量化过程。它调整精度级别和量化策略,以在推理过程中最大化性能和能效。例如,Yu等人[131]提出了一种利用GPU友好的2:4细粒度结构化稀疏性和量化的压缩方案。他们通过2:4结构化剪枝将密集模型剪枝成稀疏模型,利用GPU加速。然后,他们通过稀疏蒸馏感知量化感知训练将稀疏模型量化为定点表示,利用GPU加速。在整个过程中,他们采用混合策略知识蒸馏,支持监督和无监督学习风格。Auto-ViT-Acc [132]提出了一种框架,旨在将ViT架构量化以在FPGA驱动的设备上进行推理。他们将先前研究中的量化函数特别应用于注意力块内的FNN模块,旨在优化FPGA资源利用和加速推理。

2.4 高效LLMs

          ![](https://mmbiz.qpic.cn/mmbiz_jpg/KQq0TwTibbBDIlGsjGFdwsKBn9pufRubMD87c7U6cqRFib1k5SGYoDttyo6DqAfRib6p8B3huOnRzrqK8vtU5DsmA/640?wx_fmt=jpeg)                

图11:高效大型语言模型进展的组织结构。

在多模态大型语言模型(MLLMs)中,大型语言模型(LLM)占据了参数体积的绝大部分,是提升MLLMs效率的关键切入点。本节中,类似于综述文章[160],论文对高效LLMs的研究进展进行了简要概述,为开发高效MLLMs提供了启示。

2.4.1 注意力机制

基于共享的注意力 基于共享的注意力旨在通过在多个键-值头之间共享计算资源来加速推断过程中的注意力计算。例如,Llama-2[91]采用了称为分组查询注意力(GQA)[143]的技术,以优化自回归解码期间的内存带宽。GQA是一种基于共享的注意力技术,旨在在性能和效率之间取得平衡,位于多头注意力和多查询注意力[144]机制之间。在多头注意力中,每个头使用一组独特的线性变换参数进行查询、键和值。相反,多查询注意力在所有查询之间共享一组键-值头。GQA将所有查询头分为若干组,每组的查询头共享一个公共的键-值头,从而在效果和计算成本之间建立了严格的平衡。

特征信息缩减 特征信息缩减,如Funnel-Transformer[145]和Set Transformer[146]等模型所示,解决了注意力机制中计算效率的关键需求,具体通过减少输入特征的维度或数量,同时保留数据中嵌入的基本信息。这种策略背后的关键动机源于在Transformer模型中所有层之间维持完整长度的隐藏表示可能存在的冗余。Funnel-Transformer[145]通过逐步减少自注意力模型中的序列大小到隐藏表示,解决了这一问题,比如序列长度。这种减少不仅降低了计算复杂度和内存使用,还释放了资源,可用于构建更深或更宽的模型。

图12:在GQA[59]中,为每组查询头分配了一组键和值头,平衡了多头和多查询注意机制。

近似注意力 近似注意力使模型在处理长文本时能高效地关注任务相关信息。近似注意力中的两个关键概念是核化和低秩。核化,例如[148],涉及将问题转换为基于核的框架,目的是在更高维空间中将原始问题转换为更易管理的形式。核化主要用于将文本序列映射到高维空间,其中任务相关信息可以更容易被捕捉。在这个新空间中,文本序列中的每个词被表示为高维向量,这些向量之间的距离用于衡量它们的相似性。低秩[147]旨在将高维矩阵分解为两个低维矩阵的乘积。因此,通过计算这两个低维矩阵的逆,可以得到注意力矩阵的近似逆,从而显著降低计算复杂度。

2.4**.2 框架**

混合专家 混合专家(MoE)[89]的核心思想是将大规模模型分解为几个小型模型,每个模型专注于学习输入数据的特定部分。在训练过程中,每个专家被分配一个权重,该权重决定了其在整体模型中的重要性。在推理阶段,给定输入,所有专家被排名,并选择最相关的专家进行计算。这种方法大大减少了计算量,因为只有一部分专家参与计算。通过在不同专家之间分配计算任务,MoE在训练和推理阶段都实现了计算资源的更有效利用。在MoE中,每个专家有自己的一组参数;然而,这些参数在训练过程中是共享的。这种参数共享策略减少了模型中的总体参数数量,从而降低了存储和计算成本。GShard[149]是一个模块,由一组轻量级注解API和XLA编译器扩展组成,提供了一种优雅的方式来表达各种并行计算模式,同时对现有模型代码进行最小的更改。它使论文能够使用自动分片将多语言神经机器翻译Transformer模型与稀疏门控混合专家扩展到超过6000亿参数。Switch Transformer[150]用MoE路由层替换了标准Transformer中的前馈网络(FFN)层,其中每个专家独立地对序列中的token进行操作。其训练速度是Google之前开发的最大的模型T5-XXL的四倍,在相同的计算资源下。提出的训练技术消除了训练过程中的不稳定性,表明大型稀疏模型也可以以低精度格式(如bfioatl)进行训练。

Transformer-Alternative Structures 尽管Transformer是当前大规模语言模型的主导架构,但像RWKV [151] 和Mamba [77] 这样的模型已经作为实现更高效率和处理长文本的流行解决方案出现。这些创新模型展示了与Transformer类似的特性,包括处理长距离依赖和并行处理的能力。RWKV模型利用了一种线性注意力机制,使得论文可以将该模型表述为Transformer或循环神经网络(RNN)。这种方法在训练期间并行化计算,并在推理过程中保持恒定的计算和内存复杂性。
图13:RWKV中的元素(左)、块(中)和架构(右)[151]。

状态空间模型(SSMs)[152]可以被表述为一种RNN,用于高效的自回归推理,并作为注意力机制的有前景的替代方案出现,相比注意力的二次复杂度,提供了近线性的计算复杂度。已经提出了几种技术来增强SSMs,例如结构化状态空间序列模型(S4)[152],它通过低秩校正条件矩阵A来改进SSMs,以及对角状态空间(DSS)模型[153],它提出对状态空间进行完全对角参数化以提高效率。H3堆叠两个SSMs以交互其输出和输入投影,弥合了SSMs和注意力之间的差距,同时适应现代硬件。

Mamba[77],一种选择性状态空间模型,已被引入作为大型语言模型中Transformer架构的有力竞争者。Mamba包含一个选择机制以消除无关数据,并开发了一种针对循环操作的硬件感知并行算法。这导致了与相同容量的LLMs相比具有竞争力的性能,具有更快的推理速度,该速度随时间线性扩展且内存使用恒定。

2.4.3 微调

微调,作为适应LLMs到下游任务和训练MLLLMs遵循视觉指令的主要阶段,在提高LLMs效率方面发挥着至关重要的作用。

参数高效微调(Parameter-Efficient Fine-Tuning, PEFT)是一种旨在通过减少参数数量来实现大型语言模型(LLMs)高性能的方法。诸如适配器基调优和低秩适应等技术提供了有效的解决方案,以缓解与微调LLMs相关的计算和内存挑战,同时保持其表达能力和泛化能力。适配器基调优在预训练模型的架构中引入了轻量级的适配器模块。这些适配器模块通常由具有少量参数的前馈神经网络组成,并插入在原始模型的层之间。在微调过程中,仅更新适配器参数,而预训练模型的参数保持固定。这种方法显著减少了可训练参数的数量,从而在不牺牲模型性能的情况下加快了训练和推理时间。LLM-Adapters [154] 提出了一种将各种适配器集成到大型语言模型中的框架,为多样化的任务提供了参数高效的微调。该框架涵盖了最先进的公开可用大型语言模型以及广泛使用的适配器。(IA)- [155] 引入了一种新颖的参数高效微调方法,即通过抑制和放大内部激活来注入适配器,该方法通过与激活相乘来学习权重模型参数的向量,从而在推理过程中无需手动调整模型结构即可实现稳健的少量样本性能和任务混合。低秩适应 [161] 采用矩阵分解技术来减少模型中的参数数量。通过将原始权重矩阵分解为低秩矩阵,低秩适应捕捉了模型表示的最重要部分,同时丢弃了不太重要的信息。这导致了一个更紧凑的模型,参数数量减少,可以更有效地进行微调。在LoRA-FA [156] 中,LoRA的一种变体,初始化后冻结第一个低秩矩阵并将其用作随机投影,而另一个则进行训练。这导致参数数量减半,同时保持了与传统LoRA技术相当的性能。DyLoRa [157] 引入了一种动态低秩适应技术,该技术允许训练不同秩的LoRA块,而不是单一秩,这是通过在训练过程中跨不同秩对适配器模块学习的表示进行排序来实现的。

全参数微调(Full-Parameter Fine-Tuning)是一种方法,其中预训练模型的所有参数在微调过程中都会被更新。这种方法旨在通过利用预训练模型的全部能力,在特定的下游任务上达到最佳性能。尽管全参数微调通常能带来最先进的结果和提高任务特定性能,但它伴随着更高的资源需求,包括计算能力和内存消耗。为了减轻与训练相关的负担,许多研究集中在全参数微调期间提高内存效率。这种策略有效地减少了曾经阻碍该领域研究进展的障碍。LOMO[158]引入了一种基于随机梯度下降(SGD)的低内存优化技术来减少内存消耗。通常使用ADAM优化器,但这种方法中的优化器状态占用大量内存。通过使用基于SGD的修改版LOMO,可以减少内存使用。虽然SGD本身面临三个挑战,但这些问题在模型微调过程中往往自行解决。具体修改涉及在梯度计算中更新参数,而不是在整个层之后。MeZO[159]提出了一种优化器,仅通过两次前向传递计算梯度,使得LLM的微调内存占用与推理相当。在55GB的GPU内存要求下,它允许对300亿参数模型进行全面微调。

2.5训练

高效的多模态大型语言模型(MLLMs)的训练过程是决定其在下游任务上性能及其处理多样模态能力的关键方面。本节概述了各种训练方法,包括预训练、指令调优、多样化的训练步骤和参数高效迁移学习策略。这些方法旨在优化不同模态之间的对齐,对模型进行特定任务的微调,并最小化与迁移学习过程相关的计算和参数成本。图14展示了高效MLLMs开发中涉及的不同训练阶段的示意图。在以下小节中,论文将深入探讨这些方面,并讨论它们在高效MLLMs背景下的重要性。

2.5.1 预训练

在预训练阶段,主要关注的是在嵌入空间中对齐不同模态,使语言模型能够接受来自多种模态的输入。这一阶段的训练主要涉及大规模的文本配对数据,主要形式为图像-标题对。图像-标题对(X, Y)通常被扩展为单轮对话(Xinstruct, Aa),其中Xinstruct包含图像X和一个从一组指令中随机抽取的问题X,该指令要求助手简要描述图像,而Aa是原始图像描述。给定这样的对话,模型被训练来自回归地预测图像描述。因此,论文可以计算预测在给定条件下的概率,并对其进行优化。

图14:高效多模态大型语言模型(MLLMs)的训练阶段

应该解冻哪部分?考虑到仅训练连接器可能无法很好地对齐视觉和文本信息,当使用结构化语言模型(SLMs)时,TinyLlava[23]也选择部分冻结预训练模块(即视觉编码器和SLM),以激活更多参数进行学习对齐。VILA[49]揭示了在整个预训练阶段更新基础大型语言模型(LLM)对于继承一些吸引人的LLM特性(如情境学习)至关重要。ShareGPT4V[55]发现,在学习更大和更多样化的数据集时,解冻更多参数,特别是在视觉编码器后半部分的层中,证明是有益的,表明训练配方的选择与数据质量密切相关。

多阶段预训练 为了最大化计算效率,Idefics2[48]将预训练分解为两个阶段。在第一阶段,它将最大图像分辨率限制为384像素,并使用大的全局批量大小。在第二阶段,引入PDF文档以将图像分辨率增加到最大980像素,使文本清晰可读。

2.5.2 指令调优

指令调优(IT)是高效MLLMs的关键方面,旨在通过利用任务特定的指令对模型进行微调。这种方法建立在MLLMs能够理解和遵循自然语言提供的指令的概念上,从而提高其在目标任务上的性能。IT在高效MLLMs中的好处是多方面的。首先,它使模型能够适应广泛的任

在IT阶段,通常采用监督微调(Supervised Fine-Tuning, SFT)的模式进行。SFT数据集往往来源于预训练数据的一部分,经过转换形成对话格式。 图15:LaVIN [50] 中不同多模态适应方案在LLMs中的比较。

通过这种多模态指令遵循序列,可以采用与预训练阶段相同的自回归训练目标来执行IT。一种流行的策略是在I过程中保持视觉编码器权重不变,同时继续更新投影器和SLM的预训练权重。

高效IT 当前的IT解决方案成本高昂,需要优化大量参数和额外的规模化训练。LaVIN [50] 引入了针对MLLMs高效指令调整的创新且经济的方法。LaVIN中的多模态适应混合(MMA)使用轻量级模块来弥合LLMs与视觉-语言任务之间的差距。这也有助于视觉和语言模型的联合优化。实施LaVIN的实际成本非常低,例如,它仅需要1.4训练小时和3.8M可训练参数。HyperLLaVA [51] 研究了Macnansntecrnsandadn rnondt n的未充分探索的动态调整策略。

2.5.3 多样化的训练步骤

传统的两阶段策略要求手动分配各种可调参数和数据集组合到不同的训练阶段,这可能是一项繁琐的任务。为了缓解这一问题,SPHINX-X[14]设计了一个单阶段、全面的训练流程,公平对待所有收集的数据集,并始终将它们转换为多模态、多轮对话格式。在这一统一的训练阶段中,SPHINX-X中除视觉编码器外的所有参数都被激活。Cobra[13]也认为,预对齐的初始阶段可能不是必需的,即使在微调后模型仍可能处于欠拟合状态。因此,它放弃了预对齐阶段,选择直接微调整个SLM主干以及投影器。TinyGPT-V[28]的训练过程包括四个阶段:初始阶段用于视觉-语言理解预训练,第二阶段用于细化图像模态处理,第三阶段通过微调进行类人学习,第四阶段进行多任务学习以增强其作为聊天机器人的对话能力。

2.5.4 参数高效迁移学习

多项研究采用参数高效微调(PEFT)技术进行迁移学习,例如LoRA [161],以防止预训练知识的丢失。高效注意力跳过(EAS)模块[52]提出了一种新颖的参数和计算高效调整方法,用于MLLMs在保持高性能的同时减少下游任务的参数和计算开支。MemVP [53]认为这种迁移学习范式仍然效率不高,因为它显著增加了语言模型的输入长度。在MemVP中,视觉提示与前馈网络的权重串联,用于视觉知识的注入,以减少微调MLLMs的训练时间和推理延迟,并超越了先前PEFT方法的性能。

2.6 数据与基准

论文讨论了预训练数据、指令调整数据的重要性,以及用于评估这些模型性能的基准。讨论强调了多样化和高质量数据集在实现鲁棒和准确MLLMs中的重要性,以及用于生成和精炼这些数据集的各种策略。此外,论文全面比较了MLLM在既定基准上的性能,强调了彻底评估以确保这些模型在实际应用中有效性的必要性。

2.6.1 预训练数据

预训练数据主要服务于两个关键目标:(1)促进各种模态的整合和(2)传达全面的知识。大规模图像-标题对数据集自然满足这些要求。首先,它们主要来源于互联网,提供了广泛的数据量和广泛的知识覆盖。其次,两种模态之间的直接对齐有利于训练模态投影器。然而,此类语料库中的标题通常简短且含有噪声,可以使用自动化方法进行精炼和过滤,例如使用CLIP [13]模型消除低相似度分数的图像-文本对。常用预训练数据集的概述可在图2中找到。

越来越多的研究正在探索通过利用强大的MLLMs(如GPT-4V)来生成高质量的细粒度预训练数据。这些数据集通常提供比其粗粒度对应物更详细和准确的图像描述,从而实现图像和文本模态之间的更紧密对齐。然而,这种方法通常需要使用商业MLLMs,导致成本增加和数据量减少。ShareGPT4V[55]通过首先在100K GPT-4V生成的数据上训练一个标题生成器,然后将数据集扩展到1.2M,从而解决了这一问题。此外,VILA[49]的研究表明,结合交错预训练数据是有益的,而仅依赖图像-文本对在实现预期结果方面是次优的。

2.6.2 指令调优数据

指令调优(IT)是精炼高效MLLMs准确解释用户指令并有效执行所需任务能力的关键步骤。这一过程与多任务提示的概念有着密切的联系。

常用的预训练数据集概述见表3。高质量的IT数据可以从特定任务的数据集中提取。例如,考虑来自VQA数据集的一个样本,其中输入包括一个图像和一个自然语言问题,输出是基于图像的文本答案。这可以轻松构成指令样本的多模态输入和响应。指令或任务描述可以通过手动创建或借助GPT进行半自动生成获得。除了利用公开的任务特定数据集外,SPHINX-X[14]还从互联网上的广泛PDF数据中组装了一个专注于OCR的数据集。具体来说,它首先从网络上收集大规模的PDF数据集。然后,它获取PDF文件中每一页的渲染结果,同时保存所有文本注释及其各自的边界框。最终,这些元素被转换成统一的问答格式。

尽管多任务数据集提供了丰富的数据来源,但它们并不总是适用于复杂的现实世界情况,例如进行多轮对话。为了应对这一挑战,一些研究探索了利用大型语言模型(LLMs)通过自我指导生成基于文本或多媒体的指令遵循数据,这些数据来源于有限的手工标注样本。例如,SPHINX-X[14] 组装了一个丰富的多领域数据集,该数据集具有图像和文本之间的细粒度对应关系。它收集了来自不同来源的图像,并通过标注将各种标记应用于原始图像。通过使用这些标记图像和特定领域的指导方针提示GPT-4V,系统生成了提供图像概览、区域细节和对象关系洞察的标题。在训练过程中,SPHINX-X使用未修改的图像而非标记图像。ALLaVA[29] 提出在单个会话中为一个图像提取标题和问答对。具体来说,它使用图像提示GPT-4V,首先生成一个细粒度的标题,然后生成一个视觉问答(VQA)对。

此外,除了多媒体教学数据外,仅基于语言的用户与助手之间的对话也能显著提高模型在对话中的专业知识和响应指令的能力。例如,VILA[49]的研究表明,在微调过程中结合仅文本的教学数据和图文数据,不仅缓解了仅文本任务性能下降的问题,还提高了多模态大型语言模型(MLLM)相关任务的准确性。

表3:常见MLLM IT数据集的统计信息。I-→O:输入到输出模态,T:文本

2.6.3 基准测试

为了提供一个全面的性能评估,论文整理了一个表格,展示了22个多模态大型语言模型(MLLMs)在14个公认的视觉语言(VL)基准上的有效性,如表4所示。此外,为了进一步参考,论文还包含了13个知名且规模较大的MLLMs的结果比较。

表4:主流MLLMs和高效MLLMs在14个VL基准上的比较。VQAv2 [57]; VQAT: TextVQA [58]; GQA [59]; SQA: ScienceQA-IMG [188]; VizWiz [189]; MMMU [190]; MathV: MathVista [191]; MMEPC: MME [60]的感知/认知分割;MMB: MMBench [61]; SEED: SEED-Bench [192]; POPE [62]; LLaVA: LLaVA-Bench (In-the-Wild) [7]; MM-Vet [193]。MMMU报告的两个数字分别表示在val和test分割上的性能。SEED报告的两个数字分别表示整个SEED-Bench和图像部分的性能。"表示两个分割的组合点。*表示训练图像在训练期间被观察到。红色表示高效MLLMs的最高结果,蓝色表示大规模MLLMs的最高结果

2.7 应用

从前述分析中可以清楚地看到,许多高效的MLLM方法在各种场景下评估其性能,如视觉问答(VQA)、视觉定位、图像分割等。然而,探索这些高效架构在既定任务中的表现以达到其最终性能也至关重要。因此,论文选择了几个下游任务进行介绍,如医学分析、文档理解和视频理解。

2.7.1 生物医学分析

由于标注生物医学数据的成本高昂,基础模型正成为生物医学领域的新范式,在包括医学问答[194]和医学图像分类[195]在内的许多应用中取得了最先进的结果。最近,多模态生成式AI在生物医学领域崭露头角,将应用范围从单一模态扩展到多模态,如VQA和放射学报告生成。

专家混合调谐有效地提升了通用MLLMs的性能,参数更少,但其应用于资源有限的医疗环境尚未得到充分探索。MoE-TinyMed[64]是为医学应用量身定制的模型,显著降低了参数需求。LLaVA-Rad[63]是一款尖端工具,在私有环境中使用单个V100 GPU展示了快速性能,使其非常适合实际临床场景。它采用模块化方法,整合单模态预训练模型并强调轻量级适配器的训练。因此,LLaVA-Rad在标准指标上超越了较大的模型如GPT-4V和Med-PaLM,展示了其卓越的效率和有效性。

2.7.2 文档理解

文档或图表作为信息的重要来源,提供了各种形式数据的直观可视化。它们已成为信息传播、商业决策和学术研究不可或缺的一部分。然而,当前的图表理解模型仍面临两大主要限制:(1) 庞大的参数数量使得训练和部署变得困难。例如,ChartLlama[196],一个拥有130亿参数的模型,难以部署在单个消费级GPU上。(2) 这些模型在高效编码高分辨率图像方面遇到困难,因为视觉Transformer倾向于产生冗长的特征序列。

为了解决面向文档的大型多模态语言模型(MLLMs)在细粒度视觉感知和视觉信息压缩方面的挑战,TinyChart [37] 通过思维程序(PoT)学习和视觉token合并策略,在同时实现更快的推理速度的同时,超越了几种13B MLLMs。TextHawk [36] 通过设计四个专用组件来探索高效的细粒度感知,以应对面向文档任务带来的挑战。HRVDA [66] 和 Monkey [65] 也是大型多模态模型,旨在解决视觉文档理解任务中对高分辨率要求带来的挑战。

2.7.3 视频理解

视频提供了对人类如何持续感知视觉世界的极其准确的表示。智能视频理解对于包括视频类别分类、视频字幕生成和视频-文本检索在内的各种现实世界应用至关重要。像videoChat [197] 和 Video-LLaMA [198] 这样的工作是基于LLM的大型多模态模型,用于端到端以聊天为中心的视频理解。然而,这些方法只能处理有限数量的帧,用于理解短视频。

为了解决由于视觉token数量过多而导致处理长视频的计算挑战,已经开发了多种方法。mPLUG-video [67] 旨在处理视频理解任务,首先使用基于TimeSformer的视频编码器有效提取稀疏采样视频帧的特征,随后通过视觉抽象器模块减少序列长度。Video-LLaVA [44] 通过将图像和视频的视觉表示统一到一个语言特征空间中,在投影之前,在各种视频理解任务中表现出色。这种方法能够有效学习与LanguageBind [93]的多模态交互。LLaMA-VID [69] 通过使用两个不同的token,即上下文token和内容token,来表示每个帧,解决了这一问题。

上下文token基于用户输入编码整体图像上下文,而内容token封装了每个帧中的视觉线索。这种双token策略显著减少了长视频的处理负担,同时保留了关键信息。与大多数现有工作试图同时处理更多帧不同,MA-LMM [68] 提出以在线方式处理视频,并将过去的视频信息存储在内存库中,以引用历史视频内容进行长期分析,而不会超出LL.Ms的上下文长度约束或GPU内存限制。

论文标题:Efficient Multimodal Large Language Models: A Survey

论文链接:https://arxiv.org/pdf/2405.10739v1

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

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

相关文章

简易人工智能入门

一、监督or非监督 监督学习(Supervised Learning):训练集有标记信息(Y),学习方式有分类和回归 无监督学习(Unsupervised Learning):训练集没有标记信息,学习…

20240621将需要自启动的部分放到RK3588平台的Buildroot系统的rcS文件中

20240621将需要自启动的部分放到RK3588平台的Buildroot系统的rcS文件中 2024/6/21 17:15 开发板:飞凌OK3588-C SDK:Rockchip原厂的Buildroot 缘起:在凌OK3588-C的LINUX R4系统启动的时候,需要拉高GPIO4_B5、GPIO3_B7和GPIO3_D0。…

高通Android 12 aapt报错问题踩坑

背景 最近因为要做多module模块,出现aapt报错,于是简单记录下,踩坑过程。 1、我一开始项目中三个module,然后在build.gradle设置androidApplication plugins {alias(libs.plugins.androidApplication) }2、运行完之后都是报下面…

中服云产品远程运维系统

中服云产品远程运维系统主要针对设备售后市场服务的管理,利用工业物联网技术,一方面面向设备生产厂商,将分散的经销商、客户、销售出去的设备统一管理;另一方面面向设备使用厂家,实现设备实时运行监控;系统…

五种实用方法!手把手教你系统盘瘦身

随着电脑的使用时间变长,电脑硬盘会逐渐被各种类型的数据占满,其中系统盘的可用空间也在慢慢变小。这是因为系统在运行过程中会产生大量临时文件和缓存文件,同时,系统的每一次更新升级也都会生成相关的文件夹存放在系统盘中&#…

C语言:生命周期和作用域,static和extern

关键字static与extern 1.作用域(scope):代码中能够访问到变量的范围(变量可以被使用的文本区间)。(分为全局作用域和局部作用域) ☺全局作用域:在整个程序中都能访问的变量。通常…

机器学习算法的电影推荐系统以及票房预测系统

一、实验概述 1. 实验目标 本项目希望基于电影数据集,依据电影的简介、关键词、预算、票房、用户评分等特征来对电影进行分析,并完成以下任务: 对电影特征的可视化分析对电影票房的预测多功能个性化的电影推荐算法 2. 数据集 针对票房预…

58-DOS与DDOS分析(正常TCP会话与SYN Flood攻击、ICMP Flood 攻击、SNMP放大攻击等)

目录 正常 TCP 会话与 SYN Flood 攻击 1、正常的三次握手过程: 2、 SYN Flood 攻击 一、攻击windows系统: 二、攻击web网站 : 拒绝服务攻击工具-Hping3-Syn Flood 攻击 拒绝服务攻击工具--Hping3--ICMP Flood 攻击 sockstress攻击 So…

Studying-代码随想录训练营day16| 513找到左下角的值、112.路径总和、106从中序与后序遍历序列构造二叉树

第十六天,二叉树part03💪💪💪,编程语言:C 目录 513找到左下角的值 112.路径总和 113.路径总和II 106从中序与后序遍历序列构造二叉树 105.从前序与中序遍历序列构造二叉树 总结 513找到左下角的值…

【计算机毕业设计】​206校园顺路代送微信小程序

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

思聪私生女能继位吗?王健林表态,家族不会亏待

黄一鸣坚称:这绝对是王思聪的骨肉!常言道,常在河边走,哪能不湿鞋。换女友如换装的王思聪,这次终于跌入了陷阱!他的网红女友们如繁星点点,但选择标准始终如一——年轻、美丽。在金钱上&#xff0…

Nodejs 第七十九章(Kafka进阶)

kafka前置知识在上一章讲过了 不再复述 kafka进阶 1. server.properties配置文件 server.properties是Kafka服务器的配置文件,它用于配置Kafka服务的各个方面,包括网络设置、日志存储、消息保留策略、安全认证 #broker的全局唯一编号,不能…

市场价格到底是因为什么而变动?

在外汇及广泛的金融市场中,影响金融工具价格起伏的因素纷繁复杂。然而,万变不离其宗,无论是哪个市场,价格的最终决定力量始终是供需之间的平衡法则。 对于外汇、大宗商品等金融市场而言,表面上似乎受宏观经济数据、央…

极速查询:StarRocks 存算分离 Compaction 原理 调优指南

作者:丁凯,StarRocks TSC member/镜舟科技云原生技术负责人 StarRocks 在数据摄入过程中,每次操作都会创建一个新的数据版本。在查询时,为了得到准确的结果,必须将所有版本合并。然而,随着历史数据版本的累…

Midjourney v6 快速入门指南

Midjourney V6快速入门教程来了,这是Midjourney的AI图像生成器的又一次令人印象深刻的升级。最显著的是,V6在逼真渲染和图像中的文字功能方面取得了重大进展。 在这篇文章中,我们将探讨如何开始使用Midjourney V6,并提供一些示例…

【单片机毕业设计选题24018】-基于STM32和阿里云的农业大棚系统

系统功能: 系统分为手动和自动模式,上电默认为自动模式,自动模式下系统根据采集到的传感器值 自动控制,温度过低后自动开启加热,湿度过高后自动开启通风,光照过低后自动开启补 光,水位过低后自动开启水泵…

【LeetCode最详尽解答】42-接雨水 Trapping-Rain-Water

欢迎收藏Star我的Machine Learning Blog:https://github.com/purepisces/Wenqing-Machine_Learning_Blog。如果收藏star, 有问题可以随时与我交流, 谢谢大家! 链接: 42-接雨水 直觉 通过可视化图形来解决这个问题会更容易理解和解决。 给定输入: height [0,1,…

不破不立,B站终于跳出“舒适圈”?

哔哩哔哩已经很久没有这么振奋人心的时刻了。 6月19日,哔哩哔哩当日股价涨超18%,最高达到145.6元每股,时隔11个月,再次回归高位。从时间线上看,这次的股价大涨明显与哔哩哔哩刚(以下简称“B站”&#xff0…

分享HTML显示2D/3D时间

效果截图 实现代码 <!DOCTYPE html> <head> <title>three.jscannon.js Web 3D</title><meta charset"utf-8"><meta name"viewport" content"widthdevice-width,initial-scale1,maximum-scale1"><meta n…

vulnhub靶场之FunBox-11

一.环境搭建 1.靶场描述 As always, its a very easy box for beginners. Add to your /etc/hosts: funbox11 This works better with VirtualBox rather than VMware. 2.靶场下载 https://www.vulnhub.com/entry/funbox-scriptkiddie,725/ 3.靶场启动 二.信息收集 1.寻找靶…