摘要
近年来,视觉语言模型(VLMs)取得了重大进展,但开源指令数据的规模和质量有限,阻碍了它们与闭源模型相比的性能。
在这项工作中,我们通过引入
Infinity-MM
来解决这一限制,这是一个包含 4000 万个样本的大规模多模态指令数据集,通过严格的质量过滤和去重进行增强。
我们还提出了一种基于开源 VLMs 的合成指令生成方法,使用详细的图像标注和多样化的问句生成。
利用这些数据,我们训练了一个 20 亿参数的 VLM,
Aquila-VL-2B
,在同等规模的模型中实现了最先进的(SOTA)性能。
这表明扩展指令数据和生成合成数据可以显著提高开源模型的性能。
1
引言
最近,视觉语言模型(VLMs)
Li 等人(2023);Liu 等人(2024b);Dai 等人(2023);Zhu 等人(2024);Bai 等人(2023b);Wang 等人(2023b);Xiao 等人(2024);OpenAI(2024);Yao 等人(2024);Wang 等人(2024a);Chen 等人(2024b);Li 等人(2024a)
取得了重大进展,引起了越来越多的关注。
随着基础语言模型、多模态架构、多模态训练数据和评估基准的不断发展,多模态模型的能力得到了极大提高。
在这些发展中,训练数据规模的扩展、数据质量的提升和训练策略的优化成为提升模型性能的关键因素
Liu 等人(2024b, 2023a);Tong 等人(2024);Li 等人(2024a, b)
。
目前,数据获取的两种主要方法是手动数据收集和标注,以及使用模型合成指令。
许多工作都集中在探索更有效的方式来生成和利用训练数据。
例如,
Liu 等人(2023a)
利用 GPT-4 基于图像的文本描述来生成各种类型的指令,包括对话、详细描述和复杂推理。
在此基础上,
Li 等人(2024b)
进一步扩展了数据规模,从而提高了性能。
Tong 等人 (2024)
通过增加数据集规模和调整数据类型比例来提高模型性能,而
Li 等人 (2024a)
则引入了“高质量知识学习”阶段,以进一步丰富模型的知识库。
此外,一些研究探索了使用封闭源代码商业模型来生成合成指令数据,例如使用 GPT-4o 或 GPT-4v 模型生成标题
Chen 等人 (2023, 2024a)
或 OCR 数据
Carter (2024)
,以及对话数据
Wang 等人 (2023a)
。
尽管取得了这些进展,但现有的开源数据和指令数据集仍然不足以支持模型实现最佳性能。
仅在开源数据上训练的模型在性能上仍远远落后于 SOTA 封闭源代码模型或在专有数据上训练的开源模型。
开源数据的数量和质量不足是限制模型性能的关键因素。
为了进一步提高开源模型的性能,本研究探索了通过扩大指令数据规模和增加指令类型多样性来提高模型效率。
我们广泛收集了现有的开源多模态指令数据,构建了一个包含约 4000 万个样本的数据集,并应用了严格的质量过滤和去重流程。
在该数据集上训练的模型表现出优异的性能,达到了非常高的准确率。
在此基础上,我们提出了一种基于开源 VLM 模型的多模态指令合成方法。
通过为图像提供高度详细的标注,并为每张图像生成各种问题以确保信息全面覆盖,我们可以生成更高质量的指令数据,进一步提高模型理解和遵循指令的能力。
最终,我们成功地训练了一个基于开源数据和开源模型生成的合成数据的 20 亿参数 VLM 模型,其性能达到了与同等规模的 SOTA 开源模型相当的 SOTA 水平。
本研究的主要贡献包括:
-
•
我们收集、整理并开源了一个大规模多模态指令数据集,
Infinity-MM
,包含数千万个样本。
通过质量过滤和去重,我们确保了数据集的高质量和多样性。
-
•
我们提出了一种基于开源模型和标签系统的合成数据生成方法,能够生成高质量的指令数据,并有效地扩展指令数据集的规模。
-
•
基于 Infinity-MM,我们成功训练了一个 20 亿参数 VLM 模型,
Aquila-VL-2B
,在同等规模的模型中实现了最先进的性能。
2
相关工作
视觉-语言模型
VLM 可以根据其功能分为三种类型。
第一种类型侧重于理解多模态信息,例如视频和图像
Radford 等人 (2021);Alayrac 等人 (2022);Liu 等人 (2024b);Li 等人 (2023);Diao 等人 (2024)
。
这些模型通常将多模态数据作为输入并生成自然语言输出,其特点是能够以统一的方式整合和处理来自不同模态的信息。
第二种类型强调视觉生成,主要旨在生成高分辨率图像和视频
Shi 等人 (2020);Peebles 和 Xie (2023);Ramesh 等人 (2021);Ding 等人 (2021)
。
第三种类型结合了视觉理解和生成能力
Sun 等人 (2024b, a);Wang 等人 (2024b);Zhou 等人 (2024);Xie 等人 (2024)
。
在这项工作中,我们专注于增强模型理解多模态信息的能力。
多模态指令数据
目前,大量研究探索利用闭源商业模型(主要是 GPT-4 系列)来生成合成指令数据。
第一种工作类别主要利用 GPT-4o 或 GPT-4v 生成特定类型的数据,例如标题
Chen 等人 (2023, 2024a)
、OCR
Carter (2024)
和对话
Wang 等人 (2023a)
。
另一类工作试图生成更复杂的对话或其他类型的指令。
例如,
Liu 等人 (2023a)
使用 GPT-4 根据图像的文本描述生成各种类型的指令。
Wang 等人 (2023a)
直接使用 GPT-4V 从图像生成指令,但它除图像的文本描述外,每个图像只生成一条指令。
在这项工作中,我们专注于如何利用开源模型来生成高质量的多模态指令数据。
3
数据
Data Category
|
Size
|
Data Composition
|
Image-Cpation Data
|
10M
|
Caption Data 10M
|
General Visual Instruction Data
|
24.4M
|
General Data 7.1M
|
General OCR Data 2.6M
|
Doc/Chart/Screen Data 5.8M
|
Math/Reasoning Data 1.3M
|
Text Instruct Data 7.6M
|
|
Selective Visual Instruction Data
|
6M
|
LLaVA-onevision Data 3.5M
|
Infinity-Instruct(subjective part) 1.3M
|
Docmatix Data 1.2M
|
|
GPT4 & Synthetic Data
|
3M
|
Data Generated by GPT4 1.7M
|
Synthetic Data 0.8M
|
Specific Task Data 0.4M
|
Infinity-Preference Data 0.1M
|
|
表 1:
训练数据的数量和组成。
首先,我们广泛收集了现有的开源多模态数据集,并根据任务和质量对它们进行分类。
随后,我们将介绍数据合成过程。
最后,我们对所有收集的数据进行了统一的去重和过滤。
接下来的三个小节将分别详细介绍具体方面。
3.1
多模态数据集的类别
我们系统地收集了可用的开源多模态数据集并对其进行了分类。
这些数据集被分为四类,如表
1
所示。
-
•
图像-字幕数据
我们收集了由 Emu2
(Sun 等人,2024a)
生成的图像-字幕数据集。
字幕生成是一个相对基础的任务,使其非常适合大型多模态模型的初始训练。
-
•
通用视觉指令数据
我们收集了涵盖 OCR、数学推理、图表理解和其他任务的各种通用任务数据。
使用此数据训练大型多模态模型使它们具备有效解决多模态任务的基本能力。
-
•
选择性视觉指令数据
该数据的来源是 Llava-OneVision
Li 等人 (2024a)
、Docmatix
Laurençon 等人 (2024)
和 Infinity-Instruct
BAAI (2024b)
的主观部分。
对这些数据的验证表明,该数据的质量优于通用任务指令数据。
-
•
GPT4 & 合成数据
这部分主要包括 GPT-4 生成的的数据和第
3.2
节中介绍的合成指令数据,以及少量专门针对目标任务的数据。
实验结果表明,使用包含合成数据的训练集可以进一步提高模型性能。
3.2
合成数据生成
本研究提出了一种基于开源视觉语言模型 (VLM) 的多模态指令数据合成方法。
我们的目标是确保生成的指令与图像内容密切相关,同时保持指令类型的多样性,并确保指令响应的准确性。
该方法的整体流程如图
1
所示。
合成数据的图像提取自使用 GPT-4 系列模型合成的指令数据集,该数据集质量很高。
然而,由于预算限制,合成数据的范围和数量有限。
因此,我们旨在利用开源模型合成更多高质量数据,将其与原始数据相结合,以进一步提高模型性能。
3.2.1
图像和指令标签系统
我们首先利用 RAM++ 模型
Huang et al. (2023)
通过提取对象、动作和场景等关键信息来自动标注图像。
这些标签构成了图像的语义基础,为后续指令生成提供了重要依据。
RAM++ 模型在处理大规模图像数据集时表现出色,能够准确捕捉多模态场景中的重要细节。
这为生成精确且与上下文相关的多模态指令奠定了坚实的基础。
为了系统化指令生成过程,我们设计了一个三级指令标签系统,涵盖不同类型的指令。
遵循
Liu et al. (2023b)
,指令标签系统的第一级标签分为六类,分别是:
-
•
粗略感知
-
•
细粒度感知(单实例)
-
•
细粒度感知(跨实例)
-
•
关系推理
-
•
属性推理
-
•
逻辑推理
中层进一步细化了任务特征,而底层根据具体的任务需求提供了详细的分类。
我们采用了一个商业闭源模型来扩展和增强这个系统,确保其全面性和合理性。
完整的标记系统可以在附录
D
中找到。
图 1:
合成数据生成方法的示意图。
3.2.2
问题生成
我们随机选择了一部分我们收集的开源数据作为种子数据,并使用上一节中描述的方法对图像和指令进行标注。
然后,我们通过分析图像标签和指令标签之间的相关性,建立了一组映射规则。
具体来说,我们计算了对应于每种指令类型的图像标签的 TF-IDF 值,并对结果进行了排序。
更高的 TF-IDF 值表明具有这些标签的图像更适合于生成这种特定类型的指令。
使用这些规则,我们可以在处理新图像时自动确定要生成的适当指令类型。
这种方法显着提高了生成的指令与图像内容之间的一致性。
在问题生成期间,我们将图像和目标指令类型都输入到 VLM 模型中,提示模型根据图像生成问题。
此外,我们从种子数据中随机选择两个示例,与图像一起输入模型作为参考,从而实现少样本生成。
对于由 VLM 生成的的问题,我们进一步将图像和问题都输入回问题 VLM 中,以评估问题与图像的相关性,过滤掉质量较低的问题。
3.2.3
答案生成
图 2:
合成数据的指令类型分布。
在生成问题后,我们继续生成相应的指令答案。
此阶段的目标不仅是确保生成答案的准确性,还要考虑不同指令类型的多样性。
为此,我们引入了各种提示以提高答案的多样性。
具体来说,我们采用了三种不同的提示类型:一种指令模型使用单个单词或短语提供简短答案;另一种提示模型先生成一个简单的解释,然后再给出答案;第三种提示模型提供详细的解释,然后给出答案。
然后,我们将图像、问题和生成的答案输入到 VLM 模型中,以过滤掉与图像内容或任务不一致的指令和答案。
最后,我们获得了大约 1000 万个问答对。
为了进一步确保生成数据的质量,我们将图像、问题和答案输入到 Qwen2-VL-2B 模型中以计算数据损失,并过滤掉了大约 300 万个样本。
我们将对应于同一图像的多个 QA 对组合成多轮指令数据,最终得到大约 80 万个训练指令。
最终合成数据中指令类型的分布如图
2
所示。
|
Stage-1
|
Stage-2
|
Stage-3
|
Stage-4
|
a
|
b
|
c
|
视觉
|
Resolution
|
384
|
384
×
{(1
×
1),…,(2
×
2)}
|
384
×
{(1
×
1),…,(3
×
3)}
|
384
×
{(1
×
1),…,(4
×
4)}
|
384
×
{(1
×
1),…,(6
×
6)}
|
384
×
{(1
×
1),…,(6
×
6)}
|
#tokens
|
729
|
Max 5
×
729
|
Max 6
×
729
|
Max 7
×
729
|
Max 10
×
729
|
Max 10
×
729
|
Data
|
Samples
|
10M
|
8.2M
|
8.2M
|
8.2M
|
6M
|
3M
|
模型
|
Trainable
|
Projector
|
Full Model
|
Full Model
|
Full Model
|
Full Model
|
Full Model
|
1.5B LLM
|
4.13M
|
1.9B
|
1.9B
|
1.9B
|
1.9B
|
1.9B
|
训练
|
Batch Size
|
512
|
512
|
512
|
512
|
512
|
512
|
LR
|
1.00E-03
|
1.00E-05
|
1.00E-05
|
1.00E-05
|
1.00E-05
|
1.00E-05
|
Epoch
|
1
|
1
|
1
|
1
|
1
|
1
|
|
|
|
|
|
|
|
表格 2:
Aquila-VL-2B 在各个阶段的配置。
3.3
数据处理
在收集完所有数据后,我们继续进行数据处理。
首先,为了便于大规模训练,我们对来自不同来源的数据格式进行了标准化。
然后,为了提高训练效率和增强模型性能,我们进行了一系列数据清洗步骤。
具体来说,我们删除了重复的图像-文本对,并根据其 pHash 值过滤掉了相似度高的图像。
此外,我们使用 Qwen2-VL-2B 计算每个样本的损失,并排除了损失最高的 5%,因为在训练良好的多模态模型中,高损失通常表明存在噪声数据或异常值。
为了防止数据污染,我们还对训练集进行了去重,以消除测试集中发现的图像。
我们在附录
C
中包含了更详细的数据信息。
4
架构和训练
4.1
模型架构
Aquila-VL 建立在 LLaVA-OneVision 架构
(Li 等人,2024a)
之上,包含一个语言塔、一个视觉塔和一个投影仪。
-
•
语言塔
我们选择了 Qwen-2.5
(Bai 等人,2023a)
作为语言塔,因为它在开源模型中表现出色,并且有多种尺寸可供选择。
-
•
视觉塔
我们使用 SigLIP
(Zhai 等人,2023)
,它大约有 4 亿个参数,作为视觉塔来从输入图像和视频中提取视觉特征。
-
•
投影器
我们使用了一个带有 GELU
(Hendrycks and Gimpel, 2023)
激活函数的双层 MLP
(Liu et al., 2024b)
将视觉特征投影到词嵌入空间。
Models
|
Params (B)
|
Average
|
MMBenchV1.1
test
|
MMStar
|
MMMU
val
|
MathVista
testmini
|
HallusionBench
|
AI2D
test
|
OCRBench
|
MMVet
|
DeepSeek-VL-1.3B
Lu et al. (2024)
|
2.0
|
39.6
|
63.8
|
39.9
|
33.8
|
29.8
|
27.6
|
51.5
|
413
|
29.2
|
MiniMonkey
Huang et al. (2024)
|
2.2
|
52.7
|
68.9
|
48.1
|
35.7
|
45.3
|
30.9
|
73.7
|
794
|
39.8
|
MiniCPM-V-2
Yao et al. (2024)
|
2.8
|
47.9
|
65.8
|
39.1
|
38.2
|
39.8
|
36.1
|
62.9
|
605
|
41.0
|
PaliGemma-3B-mix-448
Beyer* et al. (2024)
|
2.9
|
46.5
|
65.6
|
48.3
|
34.9
|
28.7
|
32.2
|
68.3
|
614
|
33.1
|
Phi-3-Vision
Abdin et al. (2024)
|
4.2
|
53.6
|
65.2
|
47.7
|
46.1
|
44.6
|
39.0
|
78.4
|
637
|
44.1
|
InternVL2-2B
Chen et al. (2024b)
|
2.1
|
53.9
|
69.6
|
49.8
|
36.3
|
46.0
|
38.0
|
74.1
|
781
|
39.7
|
H20VL-Mississippi-2B
Galib et al. (2024)
|
2.1
|
54.4
|
64.8
|
49.6
|
35.2
|
56.8
|
36.4
|
69.9
|
782
|
44.7
|
XinYuan-VL-2B
Cylingo (2024)
|
2.1
|
56.1
|
75.4
|
51.9
|
43.6
|
47.1
|
36.0
|
74.2
|
782
|
42.7
|
Qwen2-VL-2B
Wang et al. (2024a)
|
2.1
|
57.2
|
72.7
|
47.8
|
41.7
|
47.9
|
41.5
|
74.6
|
810
|
50.7
|
Aquila-VL-2B
|
2.1
|
59.5
|
75.2
|
54.9
|
47.4
|
59.0
|