【论文笔记】BlueLM-V-3B: Algorithm and System Co-Design for Multimodal Large Language Models on Mobile Devices
【论文笔记】BlueLM-V-3B: Algorithm and System Co-Design for Multimodal Large Language Models on Mobile Devices
小嗷犬基本信息
标题: BlueLM-V-3B: Algorithm and System Co-Design for Multimodal Large Language Models on Mobile Devices
作者: Xudong Lu, Yinghao Chen, Cheng Chen, Hui Tan, Boheng Chen, Yina Xie, Rui Hu, Guanxin Tan, Renshou Wu, Yan Hu, Yi Zeng, Lei Wu, Liuyang Bian, Zhaoxiong Wang, Long Liu, Yanzhou Yang, Han Xiao, Aojun Zhou, Yafei Wen, Xiaoxin Chen, Shuai Ren, Hongsheng Li
arXiv: https://arxiv.org/abs/2411.10640
摘要
多模态大型语言模型(MLLMs)的兴起和日益普及,在提升日常生活的各个方面具有巨大潜力,从改善沟通到促进学习和问题解决。
作为日常生活中的重要伴侣,手机是MLLMs最有效和易于部署的平台,使其能够无缝集成到日常任务中。
然而,由于内存大小和计算能力的限制,在手机上部署MLLMs面临着挑战,这使得在没有大量优化的情况下实现平滑和实时处理变得困难。
在本文中,我们提出了BlueLM-V-3B,这是一种专门针对在移动平台上高效部署MLLMs的算法和系统协同设计方法。
具体来说,我们重新设计了主流MLLMs采用的动态分辨率方案,并针对硬件感知部署进行了系统优化,以优化手机上的模型推理。
BlueLM-V-3B具有以下关键亮点:
- 小型:BlueLM-V-3B具有27亿参数的语言模型和4亿参数的视觉编码器。
- 快速:BlueLMV-3B在MediaTek Dimensity 9300处理器上,使用4位LLM权重量化实现了24.4个token/s的生成速度。
- 强大性能:BlueLM-V-3B在OpenCompass基准测试中,在≤4B参数的模型中取得了66.1的最高平均分数,并超越了参数规模更大的多个模型(例如MiniCPM-V-2.6,InternVL2-8B)。
主要贡献
- 算法和系统改进:我们识别并解决了经典MLLMs使用的动态分辨率方案中存在的图像过度放大问题。此外,我们实施了一系列系统设计和优化,以实现硬件感知部署,从而在移动设备上更高效地推理MLLMs。
- 最先进的MLLM性能:BlueLM-V3B在具有相似参数规模的模型中实现了最先进的性能(例如,在OpenCompass基准测试中达到66.1),甚至超过了参数量更多的多个MLLM(例如,MiniCPM-V-2.6,InternVL2-8B)。
- 高部署效率:BlueLM-V-3B在手机部署时效率极高。以MediaTek Dimensity 9300处理器为例,仅需2.2GB内存,即可在约2.1秒内对768×1536分辨率的图像进行编码,并实现24.4 token/s的token吞吐速度。
BlueLM-V-3B
基本组件
- Model Architecture: 经典LLaVA架构
- Image Encoder: SigLIP-400M ViT
- MLP Projector: A 2-layer MLP
- LLM: an in-house 2.7B BlueLM model
- Other: Dynamic Resolution Processor、Token Downsampler
Dynamic Image Resolution
LLaVA 的原始 ViT 直接将输入图像调整到固定分辨率(例如,336×336 或 384×384),这并不适合高分辨率图像。
为了解决这个问题,BlueLM-V-3B 采用动态图像分辨率设计,该设计已在 InternVL 1.5 和 LLaVA-NeXT 中得到验证。
我们观察到这两种方法存在Exaggerated Image Enlargement的问题,并对其进行了改进,以实现更好的训练和更便捷的部署。
此外,我们还设计了一种Batched Image Patch Encoding,并采用管道并行性,以进一步提高训练和推理的效率。
Exaggerated Image Enlargement
LLaVA-NeXT 和 InternVL 1.5 都提出了动态图像分辨率方法来处理高分辨率图像。
对于 SigLIP 编码器,两种方法都使用 384×384 作为基本分辨率(1:1),然后选择合适的分辨率宽高比(m:n)来调整(并填充)原始图像至 384m×384n 的大小。随后,图像被分割成 384×384 的小块。
LLaVA-NeXT 倾向于选择产生比原始图像更大的图像但总面积更小的宽高比,而 InternVL 1.5 则选择与原始图像宽高比相匹配的宽高比。
我们使用图3中的某些示例来展示两种方法Exaggerated Image Enlargement的效果。
对于图3A中的LLaVA-NeXT,给定一个394×390分辨率的图像,它将选择2:2的比例,然后将原始图像调整并填充到768×768(面积扩大4倍)。
对于图3B中的InternVL 1.5,给定一个380×76分辨率的图像(设置最大数量为6,即m×n≤6),它将选择5:1的比例,然后直接将原始图像调整到1920×384(面积扩大25倍)。
放大并不一定改变图像信息,但会增加在移动设备上的部署难度,因为更高的分辨率会导致更多的图像patch和更长的图像token。因此,我们重新设计了动态分辨率方法。
Relaxed Aspect Ratio Matching
我们提出了一种基于LLaVA-NeXT的Relaxed Aspect Ratio Matching方法,以减轻Exaggerated Image Enlargement效果。
LLaVA-NeXT定义了有效分辨率 和浪费分辨率。
对于导致图像分辨率384m×384n小于原始图像任一维度的宽高比(m:n), 定义为将图像按比例缩放以适应384m×384n尺寸的最大面积。否则, 设置为原始图像的面积。在得到 后,通过 384m×384n− 计算。
LLaVA-NeXT探索可行的宽高比,并寻找最大的 同时最小化。
通常,由于m和n总是设置为更大的值以适应高分辨率图像(例如,从1:1到6:6在LLaVA-OneVision中),因此可用的宽高比选项更多。
在这种情况下,LLaVA-NeXT通常通过选择一个比原始图像分辨率更高的宽高比来导致图像放大,如图3A所示。
考虑到更大的分辨率(4倍)并不一定提供更多信息,反而会增加训练和部署的复杂性,因此降采样图像是一个更合适的选择。
我们提出了一种通过利用阈值来防止总是选择更高分辨率趋势的Relaxed Aspect Ratio Matching方法。
具体来说,我们添加了一个参数 ,使得当:
或
我们就更新:
并记录相应的宽高比。
在我们的设计中,较小的 和较小的 有被选中的机会。
为了进一步提高选择较小 的可能性,我们按降序排列候选宽高比,例如从3:3到1:1(假设较小的宽高比会导致较小的总面积,从而较小的)。
我们的Relaxed Aspect Ratio Matching方法允许更灵活地处理动态分辨率。
如图3所示,面对这两种极端情况,我们的解决方案仍然可以选出适当的宽高比(1:1)。Relaxed Aspect Ratio Matching方法的伪代码如 Algorithm 1 所示。
Batched Image Patch Encoding
我们还进行了系统优化,以实现更高效的硬件感知训练和部署。
在动态分辨率处理之后,图像被分割成几个局部块,以及一个缩略图图像(全局块)。
在训练过程中,我们在将图像块输入ViT之前进行批处理,利用GPU并行性来加速过程,实现了10%的速度提升。
对于推理,我们采用类似的并行策略来利用NPU的计算能力。
与高级语言(例如Python)不同,硬件加速设计需要对计算资源进行低级控制,例如内存布局和基于寄存器大小的计算优化。
由于NPU的计算能力有限,不能同时有效地处理所有块;相反,我们一次处理一个固定批次的块。
图4展示了按照4 + 4 + 1的方法对2:4宽高比(我们用于处理手机屏幕的宽高比)的4个块进行并发处理。这种并发块处理显著减少了整体处理时间。
Pipeline Parallelism in Image Patch Encoding
在模型推理过程中,我们实施了一种管道并行方案以优化图像块编码。
具体来说,对于从单个图像中提取的不同图像块,我们为SigLIP视觉嵌入模块中的Conv2D层(在CPU上)和视觉Transformer块(在NPU上)设计了一个并行管道。
图5展示了MediaTek Dimensity 9300处理器上以2:4宽高比的编码管道。这种方法有助于隐藏Conv2D操作的执行延迟。
Token Downsampler
尽管我们设计了一种Relaxed Aspect Ratio Matching方法来减轻Exaggerated Image Enlargement程度,但动态图像分辨率策略仍然导致大量的图像token,对移动手机处理器的部署构成挑战,并可能超过语言模型的最大上下文长度。
例如,对于选择2:4宽高比(我们用于处理手机屏幕的分辨率)的图像,我们总共获得9个图像块(计算为2×4+1)。这导致动态分辨率处理器后的SigLIP图像token总数为729×9=6561,使得它太长而无法部署在NPU上。
Basic Practice
为了减少过多的图像token数量,我们采用了VILA中提出的下采样块。
具体来说,它将每2×2个token连接成一个token,然后使用线性层融合信息。
这有效地将SigLIP生成的图像token数量从729减少到196,对于2:4的宽高比设置,总共生成196×9=1764个图像token。
然而,当图像token的长度约为2k并与用户指令结合时,仍然对在NPU上的部署构成挑战。
Chunked Computing of Input Tokens
在LLM的推理过程中,为了加速输入token的计算,传统的GPU经常采用并行计算技术同时处理所有输入token。
然而,这些token的过长(由于图像token的扩展长度或涉及到的上下文信息),加上NPUs有限的计算能力,使得对所有输入token的并行处理效率低下。
相反,对单个token(t1)的顺序处理也并非最优。因此,我们在移动设备上实施了一种分块策略,每迭代处理128个输入token(t128),然后合并结果。
这种方法在并行处理和NPU上的计算资源之间取得了平衡。
Model Quantization and Overall Framework
在上述设计和优化基础上,我们在MediaTek Dimensity 9300处理器上部署了BlueLM-V-3B模型。
我们希望充分利用设备的功能,为在移动环境中运行模型提供强大而高效的解决方案。
Mixed Parameter Precision
我们将混合精度量化应用于进一步降低内存使用并提高推理速度。
我们使用INT8精度对ViT和MLP projector权重进行量化,对LLM权重使用INT4精度。
这种组合在计算效率和模型精度之间取得了平衡。
然而,我们发现激活值对量化的敏感度更高;因此,我们保持LLM激活的INT16精度,以及ViT和projector激活的FP16精度,以确保模型性能的稳健性。
在推理过程中,我们以INT8精度存储KV cache。
Decoupling Image Encoding and Instruction Processing
为了提高部署过程中的整体效率,我们将图像处理与用户输入处理解耦。
在模型初始化时,我们同时加载ViT和LLM模型。
用户首先上传一张图片,由于MLLM本地部署,上传几乎不需要时间。
ViT在上传完成后立即开始处理图像。
同时,用户可以同时输入指令;对于音频格式的指令,我们首先将其转换为文本。
一旦图像处理完成,用户的指令提交给LLM生成响应,ViT可以从内存中释放。
如图6所示,这种并行过程减少了第一个token生成的等待时间,提高了整体响应速度,并将BlueLM-V-3B的峰值内存使用限制在2.2GB。
训练
两阶段训练。
Pre-training Stage
预训练阶段旨在使模型具备基本的多模态能力。
在此阶段,我们利用开源数据集,创建了一个包含从LLaVA 558k、ShareGPT4V 1200k和ALLaVA 708k中抽取的250万图像-文本对的综合预训练数据集。
🔥 MLP Projector
❄️ Image Encoder、LLM
Fine-tuning Stage
🔥 MLP Projector、Image Encoder、LLM
实验
总结
本文介绍了BlueLM-V-3B,这是一种针对移动平台上的多语言语言模型(MLLMs)的算法和系统协同设计方法。
我们的目标是最大化可用性和性能,同时确保良好的用户体验。
我们强调算法-系统协同设计和针对训练MLLMs以及在手机上部署的硬件感知优化。
大量的实验和统计分析证明了BlueLM-V-3B在移动设备上的强大能力和高效性。
未来的工作将集中在优化BlueLM-V-3B的可扩展性,以适应更广泛的移动设备,并探索先进的算法来提升性能和可用性。
我们希望我们的工作能够为这一研究领域的发展做出贡献。