温馨提示:
本篇文章已同步至"AI专题精讲" Idefics3:构建和更好地理解视觉-语言模型:洞察与未来方向
摘要
视觉-语言模型(VLMs)领域,接收图像和文本作为输入并输出文本的模型,正在快速发展,然而在多个关键方面(如数据、架构和训练方法)仍未达成共识。本文可以视为构建VLM的教程。我们首先提供当前最先进方法的全面概述,突出每种方法的优缺点,解决该领域面临的主要挑战,并提出未被充分探讨的研究方向。接着,我们详细介绍了构建Idefics3-8B的实际步骤,这是一种强大的VLM,相比其前身Idefics2-8B在性能上有显著提升,同时仅在开放数据集上进行训练,并采用简单的管道。这些步骤包括创建Docmatix,一个旨在提高文档理解能力的数据集,其规模是以往数据集的240倍。我们发布了该模型以及为其训练创建的数据集。
1 引言
视觉-语言模型(VLMs)接收图像和文本作为输入,并输出文本,在文档和图形理解(Hu et al., 2024)、解决视觉数学问题(Gao et al., 2023)或将网页截图转化为代码(Laurençon et al., 2024)等多个应用中非常有效。强大的开放大型语言模型(Touvron et al., 2023;Jiang et al., 2023;Team et al., 2024)和视觉编码器(Zhai et al., 2023;Sun et al., 2023;Radford et al., 2021)的进步,使得研究人员可以在这些单模态预训练模型的基础上,创建能够以更高精度解决这些任务的先进VLM(Dai et al., 2023;Liu et al., 2023;Bai et al., 2023;Lin et al., 2023;Li et al., 2023;Wang et al., 2023)。
尽管该领域取得了进展,文献中仍突出显示了在开发管道的关键方面(如数据、架构和训练方法)的设计选择存在多种分歧,表明该领域尚未达成共识。例如,许多最近的模型(Koh et al., 2023;Li et al., 2023;Liu et al., 2023)选择在将图像隐藏状态序列与文本嵌入序列连接后,将其作为输入送入语言模型,而Llama 3-V模型(Dubey et al., 2024)则使用交替的基于Transformer的跨注意力机制,将视觉信息融合进LLM,类似于Flamingo(Alayrac et al., 2022)。这些在VLM开发中的不同核心选择,往往在研究论文中没有进行消融或解释,使得很难区分哪些决策对模型性能的影响,并评估每种方法在计算和数据效率上的权衡。
在本文中,我们首先引导读者了解该领域中的主要研究问题,提供一个详细的概述,讨论当前的VLM方法,分析每种方法的优缺点,具体涉及:(a)用于连接预训练语言模型与视觉编码器的不同架构,(b)VLM训练中采用的各种数据类型,它们的实用性以及通常引入的阶段,(c)VLM的训练方法,通常为提高效率和稳定性,分为多个阶段,(d)在模型评估中遇到的挑战。我们提出了未来的研究方向,特别是在数据方面,以提高模型性能。
在此概述的基础上,我们详细介绍了构建Idefics3-8B2这一强大VLM的实际步骤。Idefics3-8B在文档理解任务上明显超过其前身Idefics2-8B,在DocVQA(Mathew et al., 2021)上取得了13.7分的提升。为了特别提升在此任务上的能力,我们创建了Docmatix3数据集,包含240万张图像和950万个问答对,来源于130万个PDF文档,规模是以往开放数据集的240倍。我们发布了我们的模型以及用于其训练的数据集。
2 分析VLM架构选择
2.1 连接单模态预训练模型
自Frozen(Tsimpoukelli et al., 2021)和Flamingo(Alayrac et al., 2022)引入以来,大多数VLM都是基于单模态预训练骨干模型(语言模型和/或视觉编码器)构建的,而不是从头开始训练全新的模型(Koh et al., 2023;Li et al., 2023;Liu et al., 2023)。强大的开源LLM(Dubey et al., 2024;Jiang et al., 2023;Team et al., 2024)和图像编码器(Zhai et al., 2023;Sun et al., 2023;Radford et al., 2021)的可用性,减少了训练这些模型的成本,使研究人员能够在这些模型的基础上,创建高性能的VLM(Dai et al., 2023;Koh et al., 2023;Liu et al., 2023;Vallaeys et al., 2024)。这两个预训练模型通常通过交叉注意力或自注意力架构连接。
2.1.1 交叉注意力架构
交叉注意力架构在Flamingo(Alayrac et al., 2022)中被引入。由视觉骨干编码的图像隐藏状态用于通过新初始化的交叉注意力层调节冻结的语言模型,这些层交替插入在预训练语言模型层之间。在这些层中,键和值来自视觉特征,而查询来自语言输入。实际上,交叉注意力模块通常插入到LLM的每四个Transformer块后,并增加大约1/4个LLM大小的新初始化参数。这一显著的参数增加提升了模型的表达能力,使得模型能够在不解冻LLM进行训练的情况下,仍能在文本任务上表现良好。
Idefics1(Laurençon et al., 2023)和OpenFlamingo(Awadalla et al., 2023)是Flamingo的开源复现版本。最近,Llama 3-V(Dubey et al., 2024)也采用了这种方法,将Llama 3适配为多模态。
2.1.2 自注意力架构
自注意力架构(或完全自回归架构)在FROMAGe(Koh et al., 2023)和BLIP2(Li et al., 2023)中被引入,在这种架构中,视觉编码器的输出被视为令牌,并与文本令牌序列连接。整个序列然后作为输入送入语言模型。视觉令牌序列可以选择性地进行池化,以缩短序列,使模型在训练和推理时都更加高效。我们将映射视觉隐藏空间到文本隐藏空间的层称为模态投影层。图1突出显示了自注意力架构的不同组件。
大多数最近的VLM现在采用了这种设计,包括Llava(Liu et al., 2023)、Qwen-VL(Bai et al., 2023)、DeepSeek-VL(Lu et al., 2024)、SPHINX(Lin et al., 2023)、VILA(Lin et al., 2023)、MiniGemini(Li et al., 2024)、Monkey(Li et al., 2023)、MM1(McKinzie et al., 2024)、Idefics2(Laurençon et al., 2024)、MiniCPM-V(Yao et al., 2024)、InternLM(Dong et al., 2024)或InternVL(Chen et al., 2024)。
2.1.3 哪种架构表现最佳?
Lau et al. (2024) 探讨了这两种主要架构类型的性能比较。预训练的单模态模型包括用于大语言模型(LLM)的 Mistral-7B (Jiang et al., 2023) 和用于视觉编码器的 SigLIP-SO400M (Zhai et al., 2023)。使用自注意力架构的模型共有 83 亿个参数,其中包括 7.4 亿个新初始化的参数,而使用交叉注意力架构的模型共有 100 亿个参数,其中包括 25 亿个新初始化的参数。
作者证明,当在训练过程中保持骨干网络冻结时,交叉注意力架构的表现显著优于自注意力架构。然而,当使用 LoRA (Hu et al., 2022) 训练部分视觉编码器和语言模型,并增加额外的 2 亿可训练参数时,尽管交叉注意力架构的参数更多,但其表现却不如自注意力架构。
尽管如此,这项研究并未评估视觉语言模型(VLM)在仅文本基准上的表现。直观来看,当在训练过程中解冻部分语言模型时,我们需要将 LLM 训练数据混合中的数据纳入 VLM 训练数据中,以保持在仅文本基准上的表现。
2.1.4 预训练骨干网络对性能的影响
多项研究发现,每个独立的单模态预训练骨干网络的性能与最终 VLM 的表现相关。例如,在 Laurençon et al. (2024) 中,作者展示了用 Mistral-7B (Jiang et al., 2023)(MMLU(Hendrycks et al., 2021)上得分 60.1%)替代 LLaMA-1-7B (Touvron et al., 2023)(MMLU 上得分 35.1%)后,所有基准测试上的性能都有了显著提升。类似地,用 SigLIP-SO400M (Zhai et al., 2023)(在 ImageNet 上得分 83.2%)替代 CLIP-ViT-H (Radford et al., 2021)(在 ImageNet 上得分 78.0%),也在所有基准测试上带来了显著的性能提升,且没有改变 VLM 的总参数数量。
由于视觉编码器通常是在不同的数据集上训练并针对不同任务进行优化,一些模型,如 SPHINX (Lin et al., 2023),结合了多个编码器的表示,例如 DINOv2 (Oquab et al., 2023) 和 CLIP (Radford et al., 2021),从而创造出更丰富的视觉嵌入序列,尽管这样做会牺牲计算效率。
近年来的研究主要集中在提高开放语言模型(Touvron et al., 2023;Dubey et al., 2024;Team et al., 2024;Jiang et al., 2023;Zheng et al., 2024;Conover et al., 2023;Mehta et al., 2024;Abdin et al., 2024;Hu et al., 2024;DeepSeek-AI et al., 2024;Bai et al., 2023)。相比之下,发布的开放视觉编码器很少,其中 SigLIP-SO400M 因其仅 4 亿个参数却具有良好的性能-参数比而脱颖而出。这表明,仍然需要大规模训练的开源视觉编码器。
2.2 考察其他架构选择
2.2.1 视觉编码器真的是必需的吗?
Fuyu (Bavishi et al., 2023) 直接将图像块输入语言模型,在进行简单的线性投影以调整维度后,不使用视觉编码器。这种架构有两个主要优势:它独立于其他预训练模型,并且保留了原始图像的所有信息。后者非常重要,因为原始图像的细节可能是准确回答提示所必需的。另一方面,预训练的视觉编码器将图像转换为与用户提示无关的表示。因此,视觉编码器旨在尽可能多地捕捉信息,但仍可能遗漏与提示相关的细节。VisFocus (Abramovich et al., 2024) 尝试通过将用户的提示整合到视觉编码器中来解决这个问题。然而,这种方法在交织的图像-文本对话中不太自然,因为提示可能会引用之前的问题。
尽管有这些优势,这种架构尚未表现出优于其他方法的性能。Fuyu 在基准测试中的得分显著低于同一时期发布的类似规模的最佳模型。PaliGemma (Beyer et al., 2024) 也尝试了这种方法,并报告了与使用预训练视觉编码器相比的性能显著下降。作者建议,绕过一个在数十亿图像上预训练的视觉编码器可能导致训练时间更长,才能达到类似的性能。
此外,在语言模型内处理图像表示可能会降低其在仅文本基准上的表现。即使这种方法在多模态基准上优于其他方法,大多数 VLM 仍未在仅文本基准上进行评估,因此目前尚不清楚省略视觉编码器是否会影响文本基准表现。
最后,这种方法尚未使用高效的池化策略来避免通过直接操作原始像素而显著减少信息。展望未来,对于视频理解等任务或扩展到其他模态,开发一种可以高效减少传递给语言模型的视觉 token 数量的架构,将有助于保持合理的序列长度。
2.2.2 应该如何将视觉编码器连接到语言模型?
许多模型,如 FROMAGe (Koh et al., 2023) 和 LLaVA (Liu et al., 2023),在视觉编码器和 LLM 之间使用一个简单的线性层,确保所有编码的视觉信息被保留,因为没有应用池化策略。然而,这种方法会导致一个很长的视觉 token 序列,使得训练和推理效率较低。为了解决这个问题,Qwen-VL (Bai et al., 2023) 通过在一组嵌入和图像隐藏状态之间使用单层交叉注意力模块来减少视觉 token 的数量。类似地,Idefics2 (Laurençon et al., 2024) 在感知器重采样器 (Jaegle et al., 2021; Alayrac et al., 2022) 内部使用交叉注意力模块,展示了视觉 token 数量可以压缩到 64 个(除以 77),同时保持大多数任务的性能,除了那些需要大量 OCR 功能的任务。
InternLM-XComposer2-4KHD (Dong et al., 2024) 也显示,对于 OCR 任务相关的基准(如 InfoVQA (Mathew et al., 2022) 和 DocVQA (Mathew et al., 2021)),每幅图像的视觉 token 数量增加是必需的。
尽管感知器重采样器的效率较高,但它的使用在几篇论文中受到质疑,这些论文建议更有效地利用图像的二维结构。例如,HoneyBee (Cha et al., 2024) 引入了 C-Abstractor,通过将 2D 位置嵌入重新引入到视觉特征中,之后使用 ResNet 块 (Xie et al., 2017)。在 mPLUG-DocOwl-1.5 (Hu et al., 2024) 中,引入了 H-Reducer,使用卷积将图像隐藏状态的数量减少了 4 倍。InternVL (Chen et al., 2024) 也使用简单的像素洗牌策略实现了 4 倍的压缩。最近,MiniCPM-V 2.6 (Yao et al., 2024) 和 Idefics2 一样,选择了感知器重采样器,使用 64 个可学习的嵌入,但通过添加 2D 位置嵌入进行了增强。
2.2.3 图像切分策略:增加视觉token数量的技巧
图像切分策略在UReader (Ye et al., 2023)和SPHINX (Lin et al., 2023)中有所介绍,它通过将原始图像分割成多个子图像,每个子图像都由视觉编码器单独编码。切片的数量可以是固定的,例如每张图像始终使用四个切块,或者根据图像的原始分辨率变化,例如每隔N个像素进行切分。
当切片数量基于原始分辨率时,模型会使用不同数量的视觉token进行训练。这种方法在推理时尤其具有优势:对于较简单的任务,所需的视觉token较少,从而节省计算资源;而对于需要进行大量OCR计算的任务,可以通过提高图像分辨率来分配更多的计算资源。这种灵活性对于那些既需要在高计算资源下对单张图像进行推理,又需要处理包含大量帧的视频,同时通过降低每帧的分辨率来保持合理序列长度的模型非常有益。
大多数视觉编码器的设计是基于相对较低的固定图像分辨率,因此不太适合处理大图像。图像切分策略通过将多个较小的子图像传递给视觉编码器,而不是直接传递原始的大图像,解决了这一问题。由于视觉编码器的权重在每个子图像中共享,这种方法也提高了训练效率。
然而,由于图像的切片并非独立的,单独编码每个切片可能并非最优,可能会导致丧失全局上下文。为了解决这一问题,当前的策略是在切片列表中加入下采样后的原始图像,并将其调整为视觉编码器支持的分辨率。尽管这样有助于保留一些全局上下文,但并不是完美的解决方案,因为原始图像的分辨率较低,难以捕捉更精细的细节,并且其分辨率依赖于原始图像的分辨率。
我们能做得比图像切分策略更好吗?图像切分策略的替代方案以及未来研究的一个有前景的方向是开发一种能够原生处理不同分辨率图像的视觉编码器,包括非常大的图像,而不改变原始宽高比,可能还需要引入一种有效处理长上下文的机制。该模型可以通过使用 Patch’n’Pack (Dehghani et al., 2023) 策略高效地训练,基于原始分辨率为每个图像生成不同数量的视觉token,从而能够直接对整个图像进行编码,无需将其切分成多个子图像。
3 VLM的训练方法和数据集
VLM的训练通常分为多个阶段,主要是由于以下原因:(a)大规模高质量数据的有限可用性,(b)高效训练的内存约束,以及(c)稳定性问题。在这些阶段中,逐步引入更高质量的数据,逐渐增加图像的最大分辨率,并且逐步解冻更多的模型部分。图2展示了训练的关键阶段以及每个阶段使用的数据集类型。如前所述,训练过程从两个单模态预训练骨干模型开始:一个语言模型和一个视觉编码器。
温馨提示:
阅读全文请访问"AI深语解构" Idefics3:构建和更好地理解视觉-语言模型:洞察与未来方向