vivo端侧多模态大模型BlueLM-V-3B解读:基于LLaVA 架构,2.2GB 内存即可运行!

开讲预告12月17日晚7点,# 智猩猩AI新青年讲座 第257讲开讲!清华大学在读博士生李镕辉将以《音乐驱动的高质量序列舞蹈生成》为主题进行直播讲解,欢迎扫码报名~01引言随着多模态大型语言模型的快速发展,如何在移动设备高效部署这些模型成为关键挑战。Vivo提出BlueLM-V-3B,通过算法系统协同设计,实现了高性能的移动端部署方案。02简介Vivo提出的BlueLM-V-3B是一种专门为移动设备(如手机)优化的多模态大型语言模型(MLLM)。通过算法和系统的协同设计,从模型小型化、推理速度优化和高效性能提升等角度,成功将 BlueLM-V-3B 部署到移动平台上。BlueLM-V-3B 在具有约 3B 参数规模的模型中实现了优异的性能表现,同时在手机端实现了高效的实时推理。Q1: 这篇文章想要解决什么问题?A1: 目标是解决多模态大型语言模型在资源受限的移动设备(如智能手机)上部署的挑战,包括内存占用高、推理速度慢和能效较低等问题。Q2: 这篇文章如何解决这些问题?A2: 文章提出了一种算法和系统协同设计方法,通过以下创新来解决问题:算法创新:提出宽松的宽高比匹配方法,优化动态分辨率策略,减少冗余图像 token;通过 token 下采样减少推理复杂度。系统优化:针对手机硬件特性,设计了批量图像编码和流水线并行处理;采用分块计算策略以提升长 token 序列的推理效率。模型设计与量化:基于经典 LLaVA 架构,结合混合精度量化(如 INT4 和 INT8),实现模型小型化和高效推理。Q3: 文章所提出方法的效果如何?A3: BlueLM-V-3B 在性能和效率上均取得显著提升:性能:在多模态基准测试(如 OpenCompass 和 OCRBench)中,BlueLM-V-3B 以 3B 参数规模超越了部分 8B 模型,达到了当前的 SOTA 水平(66.1 分)。效率:在联发科天玑 9300 处理器上,仅需 2.2GB 内存,推理速度达 24.4 token/s,显著优于同类方法。Q4: 文章所提方法还有哪些不足?A4: 文章提出的 BlueLM-V-3B 仍有以下局限性:适配范围有限:当前优化主要针对特定硬件平台(如天玑 9300),对其他设备的通用性有待探索。模型能力与大规模模型仍有差距:尽管在小参数量级中表现优异,但与更大规模模型相比,生成质量和多模态理解能力仍有限。多模态任务的覆盖性:部分下游任务(如视频处理、多语种生成)并未充分测试。论文地址:https://arxiv.org/abs/2411.1064003方法模型概览BlueLM-V-3B模型通过多方面的创新设计,实现了高效的性能和部署能力,主要体现在以下几个方面:模型架构BlueLM-V-3B基于经典的LLaVA框架,模型由图像编码器(SigLIP ViT,拥有4亿参数,输入图像尺寸为384×384)、两层MLP投影层和核心语言模型BlueLM-3B(2.7B参数)组成。MLP投影层负责将图像Token映射到大语言模型的特征空间。为了提升高分辨率图像的处理能力,模型集成了动态分辨率处理器,并通过token下采样模块降低推理复杂度,以应对NPU在处理长Token时的性能限制。算法创新宽松的宽高比匹配:改进传统动态分辨率方法,避免图像过度放大,减少生成的图像Token数量,从而提高训练和部署的效率。Token下采样:通过下采样模块对图像Token进行降维,缩短输入序列长度,减少推理资源消耗。系统优化批量图像编码:通过并行处理多个图像块,提高图像编码器的推理速度。流水线并行:设计了在CPU和NPU之间的流水线并行方案,进一步优化图像推理的效率。输入Token分块计算:为应对NPU计算能力的限制,引入了分块处理策略,每次并行处理固定数量的Token(如128个),平衡了效率和资源需求。模型量化混合精度量化:采用INT4和INT8进行权重量化,同时使用FP16或INT16处理激活值,在保证模型精度的同时显著减少内存使用。解耦图像编码与指令处理:通过将图像处理与语言处理解耦,减少了内存占用峰值,并提升了整体推理效率。训练策略预训练阶段:冻结图像编码器和语言模型,仅训练MLP投影层,赋予模型初步的多模态能力微调阶段:在6.45亿图像-文本数据集上进行全面微调,涵盖图像描述、视觉问答(VQA)、OCR等任务,增强模型的多模态理解能力。模型结构BlueLM-V-3B基于LLaVA的经典架构,经过适当调整以增强其在高分辨率图像处理方面的能力。该架构由图像编码器、MLP投影层和大语言模型组成(见图2)。图像编码器采用SigLIP ViT,能够处理384×384大小的输入图像;MLP投影层则将图像的特征空间映射到语言模型的Token空间。为了应对高分辨率图像的处理,模型引入了动态分辨率处理模块,同时利用Token下采样技术减小序列长度,降低部署复杂度。在训练过程中,图像编码器接收经过动态分辨率处理器处理的图像,输出的特征经过Token下采样器和MLP投影层,生成对应的图像Token。这些Token与用户输入的语言指令Token拼接后,用于模型训练。在推理过程中,图像和文本Token以类似方式获取,模型自回归地生成后续Token。模型架构:BlueLM-V-3B基于经典的LLaVA方法,因为在先前的工作中,例如InternVL 1.5和LLaVA-NeXT中已经证明其有效。整体架构如图2所示。它由以下组件组成。图2:BlueLM-V-3B模型架构。BlueLM-V-3B的架构遵循经典的LLaVA。这里集成了一个动态分辨率处理模块(如LLaVA-NeXT和InternVL 1.5)来增强模型功能,并应用token下采样来降低部署复杂性。动态分辨率的实现主要是为了解决高分辨率图像带来的计算复杂度问题,尤其是在移动设备上,计算资源有限。动态分辨率技术的目标是根据图像的实际需求灵活调整图像分辨率,以减少计算量和内存占用,同时保持足够的图像信息用于模型的推理任务。以下详细阐述如何通过动态分辨率和Token下采样技术,优化高分辨率图像在视觉语言模型(如BlueLM-V-3B)中的处理效率,尤其是在移动设备上部署时的挑战。动态分辨率动态分辨率旨在优化高分辨率图像的处理,避免直接对所有图像采用固定尺寸(如384×384的简单缩放),从而提升训练和推理的效率。问题:图像过度放大早期方法(如LLaVA-NeXT和InternVL 1.5)采用动态分辨率设计,但在处理高分辨率图像时,会选择较大的分辨率比例(Aspect Ratio, AR),导致:图像分辨率过度放大:生成的图像面积可能比原图大4倍甚至25倍。训练和部署成本增加:放大的图像生成更多的图像patch(每个patch为384×384),直接增加了最终的image tokens数量,也提高了硬件计算负担。例子:LLaVA-NeXT:给定一个394×390的图像,选择AR为2:2,生成768×768的图像,面积放大为原来的4倍。InternVL 1.5:给定380×76的图像,选择AR为5:1,生成1920×384的图像,面积放大为原来的25倍。这种过大的图像放大通常不会提供额外的信息收益,但却严重增加了训练和部署的复杂度。解决方案:放松的长宽比匹配为了解决图像过度放大的问题,BlueLM-V-3B提出了一种放松的长宽比匹配方法(Relaxed Aspect Ratio Matching),核心思想是:引入阈值参数α:公式如下:当Re − Re,max > α ⋅ Re,max,或者(Re,max − Re) < α ⋅ Re,max 且 Rw < Rw,min 时,更新Re_max 和Rw_min。避免始终选择更大分辨率的趋势,通过限制放大的程度。如果Re(有效分辨率)与Re,max(最大有效分辨率)之间的差异超过设定阈值,则不选取更大的分辨率。优先选择较小的长宽比:通过从较大的长宽比(如6:6)到较小的长宽比(如1:1)依次枚举,优先选择总面积更小的组合。优点:减少了图像的放大面积,使得输出patch数量减少,从而降低了训练和部署的复杂性。改进后的效果:在面对极端宽高比的图像(如Fig. 3中的案例)时,优化后的方法能够更加灵活地选择合适的长宽比(如1:1),避免不必要的分辨率放大。系统优化:批量图像patch编码与流水线并行为进一步提高训练和推理效率,BlueLM-V-3B在动态分辨率的基础上进行了系统级优化:批量图像patch编码:在训练中,利用GPU的并行计算能力,将所有图像patch批量处理,提升了编码效率,速度提升约10%。推理时,针对移动设备的NPU(如MediaTek Dimensity 9300),采用固定批量大小(如4个patch)进行分块处理,进一步降低了延迟。流水线并行:Conv2D层在CPU上处理。Vision Transformer块在NPU上处理。将图像patch的编码过程设计为流水线操作:通过流水线隐藏不同模块的执行延迟,从而提高整体效率。Token下采样尽管动态分辨率减少了图像面积,但高分辨率图像仍然可能生成大量的tokens,尤其是在移动设备部署时,NPU的计算能力和上下文长度限制对这些tokens的处理提出了挑战。为了应对动态分辨率生成的大量图像tokens,BlueLM-V-3B提出了两种主要优化策略:基本Token下采样(Token Downsampling)和分块计算(Chunked Computing)。问题:Token数量过多以一个分辨率为2:4(例如手机屏幕)的图像为例:图像会被分割成9个patch(2×4的局部patch,加上1个全局缩略图patch)。每个patch经过SigLIP视觉编码器后,生成729个tokens。总共的image tokens数量为:9 × 729 = 6561。这种数量的tokens:超出了移动设备NPU的计算能力。可能超过语言模型的最大上下文长度(即,模型在一次推理中能够处理的最大token数量)。因此,需要对image tokens进行下采样,减少其总长度。基本Token下采样BlueLM-V-3B在SigLIP视觉编码器中采用了VILA方法中的下采样模块:2×2 tokens合并:将每组2×2的tokens合并为一个token。合并后,使用一个线性层对信息进行融合,确保下采样后的tokens仍能保留足够的图像信息。下采样效果:每个patch的tokens数量从729降低到196。对于2:4分辨率的9个patch,总image tokens数量从6561减少到9 × 196 = 1764。虽然下采样有效降低了tokens数量,但约1764的tokens长度(加上用户指令的文本tokens)仍然是移动设备NPU的计算瓶颈。分块计算为了进一步优化推理效率,BlueLM-V-3B设计了一种适合移动设备的分块计算(Chunked Computing)策略:问题:传统并行处理与移动设备限制不匹配:在GPU等高性能硬件上,通常对所有输入tokens进行全局并行处理,一次性完成计算。然而在移动设备(如NPU)上,由于计算资源有限,全局并行处理会导致效率低下。解决方案:分块计算:将输入tokens划分为较小的块(例如每块128个tokens),按块进行并行计算。每次只计算一块tokens,计算完成后再处理下一块,最终将所有块的结果合并。优点:平衡并行与资源限制:分块大小(如128个tokens)既能充分利用NPU的计算能力,又避免了全局并行的资源浪费。适用于长序列:通过分块方式,可以支持更长的输入序列,而不直接受限于NPU的最大上下文长度。小结:动态分辨率与Token下采样的结合BlueLM-V-3B通过动态分辨率和Token下采样的联合设计,实现了在高分辨率图像处理中的高效性和灵活性,特别是在移动设备上的部署中。其优化流程总结如下:动态分辨率处理:使用放松的长宽比匹配方法,避免图像分辨率的过度放大。结合批量处理和流水线并行技术,提高训练和推理效率。Token下采样:使用2×2 tokens合并的方法,将图像tokens数量从6561减少到1764。通过分块计算,进一步优化了超过NPU计算能力的长序列处理。实际效果:显著减少了图像tokens的生成和处理成本。减轻了训练和部署的硬件压力,尤其是在资源有限的移动设备上。通过这些技术,BlueLM-V-3B在视觉语言模型的高效性、可部署性和灵活性上实现了显著提升。模型量化在前述设计和优化的基础上,BlueLM-V-3B模型被成功部署在联发科天玑9300处理器上,充分利用设备性能,提供了一种既强大又高效的解决方案,适用于移动环境下的模型运行。混合精度量化:通过混合精度量化的应用,进一步减少了内存占用并提升了推理速度。ViT和MLP投影层的权重采用了INT8精度,而大语言模型(LLM)的权重则采用INT4精度。这种组合在计算效率和模型精度之间取得了良好平衡。然而,激活值对量化的敏感度较高,因此推理过程中,LLM的激活值保持在INT16精度,ViT和MLP投影层的激活值则使用FP16精度,以确保模型性能的稳健性。同时,推理时KV缓存以INT8精度存储。图像编码与指令处理的解耦:为了提升部署效率,模型初始化时,ViT和大语言模型同时加载。用户首先上传图片,由于多模态语言模型(MLLM)本地部署,上传过程几乎无需耗时。图片上传完成后,ViT立即开始处理图片。与此同时,用户可以输入指令,音频格式的指令会先被转换为文本。图片处理完成后,用户的指令将提交给大语言模型生成响应,此时ViT可以从内存中释放。这个并行处理过程(如图6所示)减少了首次生成词语的等待时间,提升了整体响应速度,并将BlueLM-V-3B的最大内存占用限制在2.2GB。04训练训练过程BlueLM-3B语言模型的训练分为两个阶段进行。第一阶段对MLP投影层进行预训练,同时保持ViT和大语言模型固定不变。第二阶段则利用大量图像-文本配对数据对整个模型进行完全微调。训练数据预训练阶段:预训练阶段旨在建立模型的基础跨模态能力。该阶段整合了LLaVA 55.8万、ShareGPT4V 120万和ALLaVA 70.8万等开源数据集,构建了一个包含250万张图像字幕对的综合预训练数据集。微调阶段:微调过程中构建了一个包含6.45亿张图像-文本对的数据集,融合了开源和内部数据集。该数据集涵盖字幕生成、视觉问答、光学字符识别和纯文本等多种下游任务和数据类型。表1详细展示了数据类型的分布以及公开和内部数据的比例。除开源数据外,还通过多个网站抓取了大量纯文本数据和图像-文本配对,并通过人工创建补充了各类数据类别的图像-文本配对,以提升训练数据的多样性。在数据处理方面,采用PyMuPDF库将PDF文档转换为图像-文本对;使用Matplotlib将公式数据渲染为必要的表示形式;通过IMGKit库将表格内容和解决问题的数据从Markdown格式转换为图像。此外,通过手动渲染大量多语言文字生成图像-文本对,增强了模型的多语言理解能力。在数据优化方面,借助GPT4和Gemini Pro创建并修订图像说明和问答对。开源与自有数据的结合显著提升了模型在各类任务和模态上的表现,使其能够从丰富多样的样本中进行学习。05实验结果论文通过一系列实验验证了 BlueLM-V-3B 的性能和部署效率,以下为关键实验结果的总结:宽松的宽高比匹配与传统动态分辨率方法(如 LLaVA-NeXT 和 InternVL 1.5)相比,宽松宽高比匹配减少了 29k 个案例中的图像 token 数量,显著提升了部署效率。在多个基准测试中,改进后的方法不仅减少了训练复杂度,还提升了任务准确性,如在 OCR 任务中的表现优于传统动态分辨率方法。多模态基准测试在 OpenCompass 的 8 项任务中,BlueLM-V-3B 在 4 项上取得了最优性能,平均分数(66.1)超过了参数规模更大的 MiniCPM-V(8B)和 InternVL2(8B)。在 OCRBench 和 TextVQA 基准测试中,BlueLM-V-3B 达到了与 SOTA 模型相当的水平,同时显著增强了多语言理解能力。部署效率图像编码:在天玑 9300 NPU 上,批量图像块编码和流水线并行显著降低了推理延迟。例如,2:4 分辨率下,使用 4 个并行图像块的推理速度最快,仅需约 2.06 秒完成图像编码。输入 token 处理:分块处理策略(每次 128 token)实现了推理效率和资源利用的平衡,达到了最低延迟和最高吞吐量。与 MiniCPM-V 的比较:与 MiniCPM-V(8B 模型)相比,BlueLM-V-3B 的推理延迟更短,token 吞吐量更高,充分证明了算法优化的有效性。06总结Vivo提出了 BlueLM-V-3B,通过算法和系统的协同设计,成功克服了多模态大型语言模型在移动设备端部署的主要难题。BlueLM-V-3B 在 3B 参数规模下取得了优异的性能表现,同时在内存占用和推理速度方面表现出色。具体贡献包括:算法创新:改进动态分辨率方法,提出宽松的宽高比匹配策略和 token 下采样模块,优化了图像处理和推理效率。系统优化:结合硬件特性,设计了批量图像块编码、流水线并行和分块计算策略,显著提升了部署效率。模型小型化:通过混合精度量化和模块解耦,成功将模型部署到手机上,仅需 2.2GB 内存即可运行。在联发科天玑 9300 处理器上,推理速度达 24.4 token/s。BlueLM-V-3B 的提出为多模态大型语言模型在移动设备上的高效部署提供了重要的解决方案。通过算法和系统的协同设计,模型在资源受限的硬件平台上实现了高效推理和强大性能,突破了手机端 MLLM 部署的多个瓶颈。这不仅为移动环境中的人工智能应用奠定了技术基础,还为未来的设备端多模态模型优化提供了重要的借鉴意义,有望进一步推动多模态人工智能技术在日常生活中的普及,助力智能手机成为更强大、更便捷的多模态 AI 工具。END点击下方名片即刻关注我们

暂无评论

暂无评论...