【MLLM系列】MM1

1. 摘要

本文主要通过分析模型结构和数据选择讨论如何构建一个好的多模态大模型(MLLM),并同时提出了MM1模型,包括30B dense版本和64B的MoE版本。
具体贡献:

  • 模型层面:影响效果的重要性排序为:image resolution,visual encoder loss和capacity和visual encoder预训练数据。multimodal预训练数据类型:image caption,interleaved image-text和text-only。
    • 在few-shot和text-only上的表现:interleaved image-text和text-only两种数据最为重要。
    • 在zero-shot上的表现:image caption数据最为重要。

以上两种特性,在SFT阶段也有体现。

  • 通过扩大LLM大小的方式进行scale up。模型大小分别有3B,7B,30B等。

2. 方法和实验

2.1 简介

在这里插入图片描述
这部分主要探索三个(结构,数据和训练步骤)对多模态大模型效果的影响,

  • 模型基础配置:
    • Image Encoder:ViT-L/14模型,训练loss为clip loss,训练数据DFN-5B和VeCap-300M,image size为336*336
    • Vision-Language Connector:C-Abstractor,最大输出144 image token。
    • Pre-training Data:45% image caption数据,45% interleaved image-text数据和10% text-only数据。
    • Language Model: 1.2B transformer decoder-only模型。

2.2 模型结构影响

2.2.1 Image Encoder Pre-training

Image Encoder的选择对多模态大模型的预训练和微调都有很大的影响。
在这里插入图片描述

  • contrastive loss:能让image encoder学习到语义知识。示例模型:CLIP
  • Reconstructive loss:在一些dense prediction上,clip类模型很难达到很好的效果,比如说VQA和caption,这类任务需要对image有很好的理解。示例模型:AIM
  • 小结:
    • Image resoluton最为重要,其次是model size和训练数据组成。从上图中可以看出,增加image resolution效果最为明显,而增加model size和数据效果提升在1%左右。
    • 模型类型:对比学习loss训练的模型比reconstructive loss训练的模型效果要好。但这个结论并不确定,因为AIM模型训练数据较少。

2.2.2 Vision-Language Connector and Image Resolution

  • 配置

    • 使用64或144个token代表每个image,
    • 有两个不同的resolution:224和336.
    • 结构选择:
      • average pooling:对ViT输出结果使用n*n average pooling,然后接上linear projection。(n=[8, 12])
      • attention pooling:使用k learnable queries,通过改变k来改变输出到LLM的image token数。k=[64, 144]
      • Convolutional mapping:C-Abstractor module:ResNet block,through adaptive pooling can change the number of image tokens。
  • 小结:visual token数和image resolution最为重要,VL connector有少量影响。在instruction tuning阶段,这三种结构在不同的分辨率和image token时有着相似的结果。
    在这里插入图片描述

2.3 预训练数据影响

在这里插入图片描述

  • 小结:
    在这里插入图片描述

    • Interleaved data对few-shot和text-only的表现最为重要,captioning data对zero-shot表现比较重要。
    • Text-only数据对few-shot和text-only表现有帮助。
    • 细致的混合image和text数据能够得到最优的多模态性能和好的文本性能。最好的比例为caption:interleaved:text=5:5:1。
    • 合成数据对few-shot有帮助。

2.4 训练步骤

  • 模型参数和学习率关系:
    在这里插入图片描述
    具体关系如下:
    在这里插入图片描述

3. 结论

  • MM1模型预训练参数:
    • Image Encoder:ViT-H,分辨率378*378,训练数据DFN-5B,CLIP objective
    • Vision-Language Connector:VL connection with 144 tokens,选择用C-Abstractor
    • Data:45% interleaved image-text documents, 45% image-text pair documents, and 10% text-only documents.
    • 超参:batch size=512,max sequence lenght=4096,
    • LR schedule:在初始的2000步,linear warmup,然后在2e5训练步数中降到10%。
    • 使用AdamW优化器,在30B模型训练中,加上z-loss。
  • pretrain 效果如下:
    在这里插入图片描述
  • SFT数据配比:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

参考文献

MM1: Methods, Analysis & Insights from Multimodal LLM Pre-training

03-25
<think>好的,我现在需要回答用户关于MLLM的问题。首先,用户询问的是MLLM的全称和应用。根据用户提供的引用资料,尤其是引用[5],里面提到mllm的全称是多模态LLM推理引擎,并且详细说明了它的应用场景和技术特点。我需要先确认这些信息是否准确,并确保引用正确。 接下来,我要整理MLLM的定义。全称是“多模态LLM推理引擎”,这里的LLM可能指的是“Large Language Model”(大语言模型)。多模态意味着它能够处理多种类型的数据输入,比如文本、图像等。根据引用[5],MLLM使用纯C/C++实现,没有依赖项,适合手机和边缘设备,这说明它的高效和轻量化。同时,它支持硬件加速指令,如ARM NEON和x86 AVX2,这对性能优化很重要。另外,它还支持4位和6位的整数量化技术,这有助于减少模型体积同时保持性能。 然后,关于应用场景,引用[5]提到MLLM是处理复杂AI任务的得力助手,特别是在手机和边缘设备上。这意味着它可以用于需要实时处理和多模态输入的场合,比如智能助手、图像识别、自动驾驶中的边缘计算等。可能还需要结合其他引用,比如引用[4]提到的LLaVA-UHD框架处理高分辨率图像,但用户的问题集中在MLLM上,所以重点应放在引用[5]。 需要确保回答结构清晰,分点说明全称、技术特点和应用场景。同时,要检查是否符合用户提供的格式要求:行内数学公式用$...$,独立公式单独成段,但这里可能不需要数学公式。引用标识要正确添加,比如引用[5]在相关段落末尾。 最后,生成相关问题时要围绕MLLM的技术、优化、应用场景等方面提问,确保问题相关且有助于用户进一步了解。例如,询问MLLM的技术优势、在边缘计算中的作用,或者与其他多模态模型的区别。 现在需要将这些整理成自然的中文回答,符合格式要求,正确引用,并生成相关问题。</think>### MLLM 的定义及应用 **MLLM** 全称为 **多模态LLM推理引擎**(Multimodal LLM Inference Engine),是一种专为多模态模型设计的轻量化推理框架。其核心目标是高效运行多模态任务(如结合文本、图像等输入),尤其在资源受限的设备(如手机、边缘设备)上实现低延迟、高性能的推理[^5]。 #### 技术特点 1. **高效轻量化** MLLM 使用纯 **C/C++** 实现,无需依赖第三方库,显著减少资源占用。通过 **4位/6位整数量化技术**,进一步压缩模型体积,同时保持推理精度。 2. **硬件加速优化** 支持 **ARM NEON** 和 **x86 AVX2** 等指令集,充分利用现代计算硬件的并行能力,提升运算效率。 3. **多模态支持** 可适配如 **Fuyu-8B** 等多模态模型,处理图像、文本等混合输入的任务,例如图像描述生成、视觉问答等。 #### 应用场景 - **移动端AI助手**:在手机端实时运行复杂的多模态模型(如结合摄像头输入与自然语言交互)。 - **边缘计算**:在物联网设备或自动驾驶系统中,快速处理传感器数据(如图像、语音)并生成决策。 - **工业检测**:通过轻量化部署,在工厂设备上实现高精度视觉缺陷检测与文本报告生成。 ```cpp // 示例:MLLM 的量化处理逻辑(简化) void quantize_tensor(float* input, int8_t* output, int size, float scale) { for (int i = 0; i < size; i++) { output[i] = static_cast<int8_t>(input[i] * scale); } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一夜了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值