MM1:多模态大模型预训练的方法、分析与见解
一、结论写在前面
论文研究了如何构建高性能 MLLMs。通过仔细消融建模和数据选择,论文确定了一些重要经验,从而得到了一个在一系列 few-shot 评估中取得 SOTA 的预训练模型。经过 SFT 后,这个模型家族在广泛的基准测试上表现出色,同时支持多图像推理和 few-shot 提示。
二、论文的简单介绍
2.1 论文背景
构建高性能 MLLMs 是一个高度经验性的工作。尽管高层次的架构设计和训练过程是明确的,但它们的具体形式和执行却未可知。在这项工作中,论文展示了为获得高性能模型而进行的消融研究的细节。论文探索了三个主要的设计决策维度:
- 架构:研究了不同的预训练图像编码器,并探索了将 LLM 与这些编码器连接的不同方式。
- 数据:考虑了不同类型的数据及其相对混合权重。
- 训练程序:探讨了如何训练 MLLM,包括超参数以及在何时训练模型的哪些部分。
2.1.1 消融设置
为了确定在上述每个轴线上的良好选择,需要一种有效的方式来评估模型性能。由于训练大型 MLLM 可能需要大量资源,因此利用了一个简化的消融设置。
更具体地说,使用模型的较小基础配置进行消融。每次修改一个组件,无论是架构模块还是数据源,并评估每个组件设计选择的影响。这能够得到最终的模型 - 数据配置,可以在模型参数和训练时间方面对其进行扩展。消融的基础配置如下:
- 图像编码器:在 DFN-5B 和 VeCap-300M 上使用 CLIP 损失训练的 ViT-L/14 模型;图像尺寸 336×336。
- 视觉语言连接器:具有 144 个图像 token 的 C-Abstractor。
- 预训练数据:图像描述 (45%)、交错图像文本文档 (45%) 和纯文本 (10%) 数据的混合。
- 语言模型:1.2B 变压器仅解码器语言模型。
为了评估不同的设计决策,使用各种 VQA 和字幕任务的 zero-shot 和 few-shot(4-shot 和 8-shot) 性能:COCO 字幕、NoCaps、TextCaps、VQAv2、TextVQA、VizWiz、GQA 和 OK-VQA。
2.1.2 模型架构消融
分析使 LLM 能够处理视觉数据的组件。具体来说,研究 (1) 如何最好地预训练视觉编码器,以及 (2) 如何将视觉特征与 LLM 的空间连接。
图像编码器预训练:发现预训练图像编码器的选择可以显著影响多模态预训练后和指令调优后的下游结果。在这里,主要消融了图像分辨率和图像编码器预训练目标的重要性。请注意,与其他的消融不同,在这里使用 2.9B LLM(而不是 1.2B),以确保有足够的容量来利用一些较大的图像编码器。
对比损失:当在大规模图像 - 文本数据集上训练时,得到的模型对图像数据具有强大的语义理解能力,这一点可从各种形式的图像分类和检索任务的性能中得到证明。这些结果是由于大规模图像 - 文本数据的可用性,这可以使视觉编码器获得语义知识。最近,自动策划的大规模数据集和合成字幕导致了更强大的编码器。
重建损失:当涉及密集预测时,CLIP 风格的模型难以获得同样出色的性能。这一特性对于 MLLMs 可能是个问题,因为像 VQA 和字幕这样的许多任务都需要对图像进行详细的理解。因此,还考虑使用重建损失学习的图像编码器,因为这种损失可以明确捕获图像的所有部分。特别是,利用了 AIM,它已经表明,在仅图像数据上仔细设计的自回归重建损失可以很好地扩展。
编码器经验教训:图像分辨率的影响最大,其次是模型大小和训练数据组成。正如在表 1 中看到的,将图像分辨率从 224 提高到 336,可以使所有度量在所有架构中提高约 3%。将模型从 ViT-L 增大到 ViT-H(参数增加一倍),性能通常只有不到 1% 的适度提升。最后,添加 VeCap-300M,可在 few-shot 场景下提高超过 1%。
当谈到模型类型时,结果就不那么确凿了。对比方法往往比重建方法的性能更高。特别是,基于具有 3 亿参数的 ViT-L 的编码器与相当大小的 AIM600M(在推理时仅使用了 24 层 AIM 模型中的 20 层) 相比,性能提高了 0.3% 到 1.5%。然而,这一教训对于 AIM 的潜力来说是不确定的,因为它的训练数据只有不到一半。同样,广泛使用的开源 OpenAI 模型的性能与使用 DFN+VeCap 数据混合训练的同等容量模型相当。
视觉语言连接器和图像分辨率:该组件的目标是将视觉表示转换到 LLM 的空间。一方面,希望尽可能多地捕获来自图像的细节,可以通过增加图像 token 嵌入的数量来实现。另一方面,尤其是在多图像输入的情况下,每幅图像的输入 token 数量过多在计算上是一个挑战。考虑使用 64 或 144 个 token 来表示图像,以及两种不同的图像分辨率,224 和 336。此外,考虑了以下架构选择:


