温馨提示:
本篇文章已同步至"AI专题精讲" Idefics2:构建视觉-语言模型时,什么是重要的
摘要
随着large language models和vision transformers的进步,视觉-语言模型(VLMs)受到了越来越多的关注。尽管关于该主题的文献非常丰富,我们观察到在VLMs设计中的关键决策往往缺乏充分的论证。我们认为,这些未经支持的决策阻碍了该领域的进展,因为它们使得很难判断哪些选择能够真正提升模型性能。为了解决这个问题,我们围绕预训练模型、架构选择、数据和训练方法进行了大量实验。我们对研究结果的整合促成了Idefics2的开发——一个高效的、拥有80亿参数的基础VLM。Idefics2在多个多模态基准测试中,在同尺寸模型中达到了state-of-the-art的性能,并且常常能与体量大四倍的模型相媲美。我们发布了该模型(base、instructed和chat版本),以及为其训练所创建的数据集。
1 引言
视觉-语言模型(VLMs)以图像和文本作为输入并输出文本,可应用于许多任务,例如检索扫描PDF中的信息(Hu et al., 2024)、解释图表或示意图(Carbune et al., 2024)、识别图像中的文字(Blecher et al., 2023)、统计图片中的物体数量(Goyal et al., 2017),或将网页截图转换为代码(Laurençon et al., 2024)。强大的开放large language models(Touvron et al., 2023;Jiang et al., 2023;Google, 2024b)与image encoders(Zhai et al., 2023;Sun et al., 2023;Radford et al., 2021)的发展,使研究者能够基于这些单模态预训练模型构建先进的VLMs,从而以更高精度解决上述问题(Dai et al., 2023;Liu et al., 2023;Bai et al., 2023;Lin et al., 2024, 2023;Li et al., 2024;Wang et al., 2024)。尽管该领域取得了显著进展,但已有文献中存在大量不同的设计选择,这些选择通常未经过充分实验证明,或仅有非常简略的描述。
这种情况使得我们很难判断哪些决策真正决定了模型性能,从而也阻碍了整个社区在该方向上取得有依据的实质性进步。例如,(Alayrac et al., 2022;Laurençon et al., 2023)使用交错的基于Transformer的cross-attention模块将图像信息融合到language model中,而(Li et al., 2023;Liu et al., 2023)则将图像hidden states的序列与文本embedding的序列拼接,并将拼接后的序列输入language model。据我们所知,这种选择尚未经过充分的消融实验,其在计算效率、数据效率以及性能方面的权衡也尚不明确。本文旨在对这些核心设计选择进行实证澄清,并提出一个关键问题:构建视觉-语言模型时,哪些因素很重要?
我们识别出两个方面,不同工作通常会做出不同设计选择:(a)模型架构,尤其是融合vision和text模态的connector模块,以及它们对推理效率的影响;(b)多模态训练过程及其对训练稳定性的影响。针对这两个方面,我们在受控环境中严格比较了不同的设计选择,并提取了实证结论。我们特别发现:(a)VLMs的进展在很大程度上受益于单模态预训练backbone的进步;(b)较新的全自回归架构相较于cross-attention架构性能更优,但需要对优化过程进行调整以确保训练稳定;(c)对预训练vision backbone及连接text和vision模态的模块进行调整,能在保证下游性能的前提下,一方面提高推理时的效率,另一方面支持图像以原始比例和尺寸输入;(d)图像处理方式的修改可用于在推理成本与下游性能之间进行权衡。
我们的研究结果与(Karamcheti et al., 2024;McKinzie et al., 2024;Lin et al., 2024)中的发现互为补充,这些工作探讨了多阶段训练、预训练backbone的选择性解冻、数据重复使用、训练混合比对zero-shot和few-shot性能的影响。我们特别深入探讨了此前尚未充分研究的方面,如模型架构、训练方法、稳定性及推理效率的提升。
基于上述洞见,我们训练了Idefics2——一个具有80亿参数的基础VLM。Idefics2在多个基准测试中,在其参数规模范围内达到了state-of-the-art的性能,同时在推理效率方面表现更优,无论是base版本还是经过微调的版本。在某些视觉-语言基准上,其性能可与参数量大四倍的state-of-the-art模型媲美,并在部分挑战性基准上达到了与Gemini 1.5 Pro相当的表现。我们公开了Idefics2的base、instructed和chat版本,以及用于训练该模型的数据集,供VLM社区使用。
2 术语
我们首先确立用于讨论不同设计选择的统一术语。训练VLMs通常需要将一个预训练vision backbone与一个预训练language backbone连接起来,方法是初始化新的参数以连接这两个模态。这些新参数的训练发生在预训练阶段。该阶段通常使用大型多模态数据集(如图文对)进行训练。我们注意到,尽管从两个单独的单模态预训练backbone出发是最常见的做法,但这两个backbone的参数也可以共享并从头开始初始化,如(Bavishi et al., 2023)所做的那样。与large language models的文献类似,预训练阶段之后通常还会进行instruction fine-tuning阶段,在此阶段中模型通过面向任务的样本进行学习。
近期工作主要探索两种将视觉输入与文本输入结合的方式。在cross-attention架构中(Alayrac et al., 2022;Laurençon et al., 2023;Awadalla et al., 2023),通过vision backbone编码的图像信息被注入language model的不同层中,方式是交错插入cross-attention模块,其中文本对图像的hidden states进行cross-attend。相比之下,在全自回归架构中(Koh et al., 2023;Driess et al., 2023;Liu et al., 2023),vision encoder的输出会被直接拼接到文本embedding的序列上,并将整个序列作为language model的输入。因此,language model的输入序列是视觉token和文本token的拼接。视觉token的序列可以选择性地进行pooling,生成一个更短的序列以提升计算效率。我们将把vision hidden space映射到text hidden space的层称为modality projection layers。图2展示了我们最终在Idefics2中使用的全自回归架构。
3 探索视觉语言模型的设计空间
在本节中,我们比较了视觉-语言模型文献中常见的设计选择,并指出相应的发现。除非另有说明,我们对每项消融实验运行 6,000 步,并报告在 4 个下游基准任务上的 4-shot 平均性能,这些基准任务用于衡量不同的能力:VQAv2(Goyal et al., 2017)用于通用视觉问答,TextVQA(Singh et al., 2019)用于 OCR 能力,OKVQA(Marino et al., 2019)用于外部知识,COCO(Lin et al., 2014)用于图像描述。
3.1 所有预训练骨干网络对于视觉语言模型(VLM)是否是等效的?
大多数近期的视觉-语言模型都基于预训练的单模态 backbone。那么,backbone(视觉和文本)的选择如何影响最终 VLM 的性能?
我们固定了预训练 backbone 的大小、用于多模态预训练的数据和训练更新的次数。在交叉注意力架构下,我们观察到在视觉-语言基准测试中的最大性能提升来自于更换语言模型。具体来说,替换 LLaMA-1-7B(Touvron et al., 2023)(在 MMLU(Hendrycks et al., 2021)上的得分为 35.1%)为 Mistral-7B(Jiang et al., 2023)(在 MMLU 上的得分为 60.1%)带来了 5.1 的提升(见表 1)。此外,将视觉编码器从 CLIP-ViT-H(Radford et al., 2021)(在 ImageNet(Deng et al., 2009)上的得分为 78.0%)更换为 SigLIP-SO400M(Zhai et al., 2023)(在 ImageNet 上的得分为 83.2%)带来了基准测试性能的 3.3 提升(见表 2)。关于更好的视觉 backbone 的结果与(Karamcheti et al., 2024)中的观察一致。我们注意到,Chen 和 Wang(2022)报告了通过扩展视觉编码器的规模比扩展语言模型规模所带来的性能提升更强,尽管扩展视觉编码器会导致参数量的增加较小。尽管 EVA-CLIP-5B(Sun et al., 2023)在参数量上是 SigLIP-SO400M(Zhai et al., 2023)的十倍,但我们在四个基准上的表现相似,这表明 EVA-CLIP-5B 可能没有得到充分训练,我们也承认开放的 VLM 社区缺少一个经过良好训练的大型视觉编码器。
发现 1. 在固定参数数量的情况下,语言模型 backbone 的质量对最终 VLM 性能的影响大于视觉模型 backbone 的质量。
3.2 完全自回归架构与交叉注意力架构如何比较?
据我们所知,目前没有对完全自回归架构和交叉注意力架构进行充分的比较。我们旨在填补这一空白,通过考虑它们的权衡,具体包括性能、参数量和推理成本。
根据 (Alayrac et al., 2022) 的研究,我们首先通过冻结单模态 backbone 并仅训练新初始化的参数(交叉注意力架构一侧,模态投影及学习的池化架构另一侧)来比较这两种架构,同时固定训练数据的数量。Alayrac et al.(2022)表明,交叉注意力模块与语言模型层交错的频率越高,视觉-语言性能就越好。因此,我们注意到,在这种设置下,交叉注意力架构的可训练参数比完全自回归架构多 13 亿(总共 20 亿可训练参数)。此外,在推理时,前者比后者多使用 10% 的浮点运算量。在这些条件下,我们观察到,交叉注意力架构在表 3 中的性能比完全自回归架构高 7 个点。
在总参数数量中,完全自回归架构大约有 15% 的参数被训练,而交叉注意力架构有 25% 的参数被训练。我们假设这个低比例限制了训练的表达能力,从而影响了性能。为了验证这一假设,我们通过解冻所有参数(包括新初始化的参数和预训练的单模态 backbone 参数)来比较这两种架构。在这些条件下,训练完全自回归架构会导致损失发散,即使通过大幅降低学习率或逐步解冻不同组件,我们也未能成功稳定训练。为了克服这一稳定性挑战,我们利用了低秩适配(Low-Rank Adaptation,Hu et al., 2022)来适配预训练的参数,同时对新初始化的参数使用标准的完全微调。
这种设置大大提高了训练的稳定性,更重要的是,我们观察到在完全自回归架构下性能提高了 12.9 个点,而在交叉注意力架构下提高了 0.6 个点。虽然交叉注意力架构在冻结的 backbone 上表现优于完全自回归架构,但当我们为预训练的 backbone 提供更多自由度时,交叉注意力架构的表现变差。此外,使用 LoRA 使得训练单模态 backbone 的 GPU 内存成本仅为完全微调的极小一部分,并且 LoRA 层可以合并回原始的线性层,在推理时不增加额外的成本。因此,我们在本研究的其余部分选择了完全自回归架构。
有趣的是,这一发现与 (Karamcheti et al., 2024) 中的结果相矛盾,该研究中作者观察到解冻预训练的视觉 backbone 会显著降低性能。我们假设,使用参数高效的微调方法是关键区别。
发现 2:当单模态预训练 backbone 保持冻结时,交叉注意力架构的表现优于完全自回归架构。然而,当训练单模态 backbone 时,完全自回归架构超越了交叉注意力架构,尽管后者具有更多参数。
发现 3:在完全自回归架构下解冻预训练的 backbone 可能导致训练发散。利用 LoRA 方法仍然能为训练增加表达能力并稳定训练过程。
3.3 效率提升在哪里?
视觉标记的数量
最近的视觉语言模型(VLMs)通常将视觉编码器的整个隐藏状态序列直接传递到模态投影层,然后输入到语言模型中,而不进行池化。这一做法的动机来自于先前的研究,其中发现添加池化策略(例如平均池化)会导致性能下降(Vallaeys et al., 2024)。这种做法的结果是每个图像的视觉标记数量较高,从 DeepSeek-VL(Lu et al., 2024)的 576 到 SPHINX-2k(Lin et al., 2023)的 2890 不等。由于生成的序列长度较大,训练计算开销较大,并且交替的图像和文本的上下文学习也变得具有挑战性,因为它需要对语言模型进行修改以处理非常大的上下文窗口。
我们通过使用感知器重采样器(Jaegle et al., 2021;Alayrac et al., 2022;Bai et al., 2023)作为一种可训练的 Transformer 形式池化,减少了每个图像隐藏状态的序列长度。查询数量(也称为潜在变量)对应于池化后每个图像的视觉标记数量。我们观察到学习池化在两方面都很有效:它平均提高了 8.5 个点的性能,并且将每个图像所需的视觉标记数量从 729 降至 64(见表 3)。
与(Vallaeys et al., 2024;McKinzie et al., 2024)发现的更多视觉标记提高性能的结果不同,我们观察到当使用超过 64 个视觉标记时,性能没有提高。我们假设在无限训练和无限数据的假设情境下,性能可能最终会提高,但这会导致训练时间延长。对 Perceiver 架构的其他变体(Mañas et al., 2023;Darcet et al., 2024;Vallaeys et al., 2024)则导致了性能下降。
Finding 4. 使用学习池化减少视觉标记数量显著提高了训练和推理的计算效率,同时提升了下游任务的性能。
保持原始纵横比和图像分辨率
视觉编码器,如 SigLIP,通常在固定大小的正方形图像上进行训练。调整图像大小会改变其原始纵横比,这在需要读取长文本的任务中尤为问题明显。此外,训练仅基于单一分辨率大小会固有地带来局限性:低分辨率会遗漏重要的视觉细节,而高分辨率则会导致训练和推理效率的低下。允许模型在不同分辨率下对图像进行编码,使用户能够根据需要决定每张图像所花费的计算量。
根据 Lee et al. (2023) 和 Dehghani et al. (2023) 的方法,我们将图像补丁传递给视觉编码器,而不调整图像大小或修改其纵横比。鉴于 SigLIP 是在固定大小的低分辨率正方形图像上进行训练的,我们对预训练的位置信息进行插值,以允许使用更高的分辨率,并使用 LoRA 参数训练视觉编码器以适应这些修改。我们的研究结果表明,保持纵横比的策略在下游任务上保持了性能水平,同时在训练和推理过程中解锁了计算灵活性(见表 5)。特别是,无需将图像调整为相同的高分辨率,可以节省 GPU 内存,并处理图像所需的分辨率。
Finding 5. 将预训练于固定大小正方形图像的视觉编码器调整为保持图像原始纵横比和分辨率,不仅不会降低性能,还能加速训练和推理,并减少内存使用。
3.4 如何在性能和计算之间进行权衡?
(Lin et al., 2023; Li et al., 2024; Liu et al., 2024; McKinzie et al., 2024) 提出,通过将图像分割为子图像,可以在不改变模型结构的情况下提升下游性能。图像被分解为子图像(例如,4个相等的子图像),然后与原始图像拼接,形成一个由5个图像组成的序列。此外,子图像会被调整为与原始图像相同的大小。然而,这一策略的代价是显著增加了需要编码的视觉标记数量。
我们在指令微调阶段采用了这一策略。每个图像变成5个图像的列表:4个裁剪图像和原始图像。这样,在推理时,模型既能处理独立的图像(每个图像64个视觉标记),也能处理经过人工增强的图像(每个图像总共320个视觉标记)。我们注意到,这一策略对像TextVQA和DocVQA这样的基准任务特别有用,这些任务需要足够高的分辨率来提取图像中的文本(见表9)。
此外,当我们仅对50%的训练样本应用图像分割(而不是对100%的样本进行分割)时,我们发现这并不会影响图像分割所带来的性能提升。令人惊讶的是,我们在评估时发现,增加子图像(以及独立图像)的分辨率相比于单独的图像分割,带来的性能提升仅为微小:将子图像的分辨率提高到最大值时,TextVQA验证集上的准确率为73.6%,而仅通过图像分割时为73.0%;而在DocVQA验证集上,分别为72.7和72.9的ANLS(见表9)。
Finding 6. 在训练过程中将图像分割为子图像可以在推理时通过计算效率换取更多的性能。性能的提升在涉及图像中文本读取的任务中尤为明显。
温馨提示:
阅读全文请访问"AI深语解构" Idefics2:构建视觉-语言模型时,什么是重要的