【LLM-多模态】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的空间连接(见图3,左侧)。
图像编码器预训练:论文发现预训练图像编码器的选择可以显著影响多模态预训练后和指令调优后的下游结果。在这里,论文主要消融了图像分辨率和图像编码器预训练目标的重要性。请注意,与论文的其他消融不同,在这里论文使用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。此外,论文考虑了以下架构选择:
平均池化。论文在ViT图像编码器的输出上应用n×n平均池化,然后进行线性投影(n∈{8,12})。
注意力池化。由于图像token表示与LLM输入嵌入处于不同的空间,因此使用k个可学习查询的注意力池化是一种自然的方法。通过改变k的值,可以改变从单个图像馈送到LLM的输入数量(论文使用k∈{64,144})。
卷积映射。最近,Honeybee [12]研究了上述问题,并提出了C-Abstractor模块。它被实现为一个ResNet [41]块,可以保留局部信息,同时通过自适应池化可以改变图像token的数量。
VL连接器经验:视觉token的数量和图像分辨率最为重要,而VL连接器的类型影响甚微。如图4所示,zero-shot和小样本性能随着视觉token数量或/和图像分辨率的增加而提高。然而,与文献[12]所报告的相反,不同的架构设计似乎无法确定地产生更强大的模型。经过指令微调后,所有三种架构在336px和114个token设置下都取得了非常相似的结果.
2.1.3 预训练数据消融
大规模且与任务相关的数据对于训练高性能模型至关重要。通常,模型分两个阶段训练,预训练和指令微调。在前一阶段使用网络规模数据,而在后一阶段使用特定任务的策展数据。在下文中,论文将重点放在预训练阶段,并阐述论文的数据选择(见图3,右侧)。
通常使用两种类型的数据来训练MLLMs:包含成对文本描述的图像的字幕数据;以及来自网络的交错图像文本文档。注意,字幕数据往往包含与图像高度相关的相对较短的文本。相反,交错数据具有substantially更长和更多样化的文本,平均而言与周围图像的相关性较低。最后,论文包括纯文本数据,以帮助保留底层LLM的语言理解能力。完整的数据集列表总结在表2中。
这里消融使用与前面相同的模型设置,唯一的例外是论文在这里进行200k步的训练,以充分利用大规模数据训练。论文还将一组常用的文本任务(称为TextCore1)纳入评估,以更好地评估数据混合的影响。这导致了以下几点经验:
数据经验教训1:交错数据对于few-shot和纯文本性能至关重要,而字幕数据提高了zero-shot性能。在图5a中,论文展示了交错和字幕数据不同混合的结果。随着字幕数据量的增加,从25.8%到39.3%,zero-shot性能持续提高。与此同时,对于4-shot和8-shot性能,至少50%的数据为交错数据至关重要,以保持8-shot超过61%或4-shot超过58%。如果没有,性能将分别大幅下降到45%和43.7%。由于交错数据自然包含多幅相互关联的图像和随附文本,这种数据本质上与few-shot测试输入非常相似,这与实证结果是一致的。然而,由于常见评估大量针对字幕问题(8个基准中有3个是字幕),字幕数据显著提高了zero-shot性能。有趣的是,在小样本设置下,使用交错数据进一步提高了这些相同字幕基准的性能。同样,纯文本性能受益于交错数据,可能是因为交错数据也包含长格式文本。
数据经验教训2:纯文本数据有助于提高few-shot和纯文本性能。论文利用纯文本数据来保持模型的语言理解能力。如图5b所示,结合纯文本和字幕数据可提高few-shot性能。换句话说,长文本确实可以让模型利用多个图像和文本示例作为上下文来执行更好的问答和字幕。另一方面,将纯文本与交错数据相结合会导致性能略有下降。在这两种情况下,正如TextCore数字的提升所示,纯文本性能都有所增加。
数据经验教训3:仔细混合图像和文本数据可以实现最佳多模态性能,同时保持强大的文本理解能力。上述教训引出了如何最好地结合纯文本数据,以实现强大的图像和语言理解。在图5c中,论文尝试了图像(字幕和交错)和纯文本数据之间的几种混合比例。论文看到,当字幕/交错/文本比率为5:5:1时,论文可以在保持可比的纯文本理解性能的同时,实现良好的多模态性能平衡。
数据经验教训4:合成数据有助于few-shot学习。最后,论文研究了合成字幕数据VeCap的重要性。它质量较高,但数量相对较小,仅占所有字幕数据的7%。如图5d所示,它确实在few-shot性能上带来了2.4%和4%的非常小的提升。
2.2 论文的方案
论文收集了前面消融研究的结果,以确定MM1多模态预训练的最终配方:
•图像编码器:鉴于图像分辨率的重要性,论文使用分辨率为378x378px的ViT-H 模型,在DFN-5B 上用CLIP目标预训练。
•视觉语言连接器:由于视觉token数量最为重要,论文使用具有144个token的VL连接器。实际架构似乎无关紧要,论文选择C-Abstractor 。
•数据:为了保持zero-shot和few-shot性能,论文使用以下仔细混合的45%交错图像文本文档、45%图像文本对文档和10%纯文本文档。
为了提高模型性能,论文将LLM大小扩展到3B、7B和30B参数。底层LLM是在同一纯文本数据集上内部训练的。由于LLM和视觉编码器都是预训练的,论文将它们用作MM1的初始化,并在上述数据混合上进行200k步(约100B个token)的多模态预训练。所有模型都是完全解冻预训练的,序列长度为4096,每个序列最多16幅378x378分辨率的图像,批量大小为512个序列。所有模型都使用AXLearn框架进行训练。
Model Scaling:在这个规模上进行适当的超参数搜索是不可行的。相反,利用LLM的已建立的缩放特性,论文在小规模9M、85M、302M和1.2B上进行学习率的网格搜索。
论文在初步实验中发现,验证损失与下游任务性能没有很强的相关性。因此,论文直接使用下游8-shot平均性能进行曲线拟合。
通过混合专家(MoE)扩展:MoE在保持激活参数不变的情况下扩大了模型总参数量。它可以在不显著牺牲推理速度的情况下享有更大的模型容量。
在实验中,论文进一步探索通过在语言模型的FFN层中添加更多专家来扩展密集模型。论文的MoE实现通常遵循GShard 和ST-MoE 。具体来说,论文使用Top-2门控、每个稀疏层64/32个专家,并在每隔2/4层中用稀疏层替换密集层。论文采用了一个0.01系数的负载均衡损失项,以鼓励更好的专家负载均衡。论文还采用了一个0.001系数的路由器z-loss项,以稳定训练。要将密集模型转换为MoE,论文只需用MoE语言解码器替换密集语言解码器即可。图像编码器和视觉语言连接器保持不变。为训练MoE,论文采用与密集主干网络相同的训练超参数4,包括训练数据和训练token在内的相同训练设置。
多模态预训练结果:论文通过适当的提示在字幕和VQA任务上评估预训练模型。论文评估zero-shot和few-shot,如表3所示,并与报告了few-shot预训练性能的少数几个方法进行比较。注意,论文只将模型与更大的模型进行比较,例如将论文的30B模型与两个80B模型进行比较。
在few-shot性能方面,MM1优于所有已发表的先前MLLM预训练工作。论文在30B上在字幕基准和VizWiz-QA基准上看到了卓越的性能。在VQAv2、TextVQA、OKVQA上,论文在这个规模上与Emu2 相当。对于zero-shot性能,即使没有指令微调,论文的模型在所有模型大小的TextCaps上表现良好,并且在大多数基准测试中与小规模的Flamingo-3B相当。
2.3 监督微调
这里描述的预训练模型之上进行的监督微调(SFT)实验。
SFT数据混合。论文沿用LLaVA-1.5 和LLaVA-NeXT 的做法,从各种数据集中收集了大约100万个SFT示例,包括:
•由GPT-4和GPT-4V生成的指令-响应对,包括用于对话和复杂推理的LLaVAConv和LLaVA-Complex ,以及用于详细图像描述的ShareGPT-4V;
•学术任务导向的视觉-语言(VL)数据集,包括(i)用于自然图像的VQAv2 、GQA 、OKVQA 、A-OKVQA 和COCO字幕 ;(ii)用于文本丰富图像的OCRVQA 和TextCaps;以及(iii)用于文档和图表理解的DVQA 、ChartQA 、AI2D 、DocVQA 、InfoVQA 和Synthdog-En 。
•纯文本SFT数据:论文使用与ShareGPT 类似的内部数据集,用于保持纯文本指令执行能力。
学术VL数据集按照LLaVA-1.5 的做法格式化为指令执行格式。更多细节见附录A.3。所有数据集在训练期间混合并随机采样。
在SFT期间,论文保持图像编码器和LLM主干网络解冻;其他SFT训练细节见附录B.2。论文在12个基准测试上评估论文的模型(详见附录C.2)。
扩展到更高分辨率:直观地说,更高的图像分辨率会带来更好的性能。为支持高分辨率SFT,论文使用两种方法:
位置嵌入插值:例如在Qwen-VL 和BLIP2 中探索过的。经过位置嵌入插值后,视觉transformer主干网络在微调期间适应新的分辨率。通过这种方法,论文成功地对模型进行了微调,支持448×448、560×560到672×672的图像分辨率。注意,对于672×672的分辨率,使用14×14的patch大小,一幅图像由2,304个token表示。
子图像分解:最近由SPHINX 、Monkey 和LLaVA-NeXT 引入。在2,000多个图像token之间计算自注意力在计算上是一个挑战,限制了进一步扩展到更高分辨率的能力。如图7a所示,在SPHINX 的基础上,对于高分辨率输入图像(如1344×1344),论文构建五幅672×672的图像,并将它们作为独立图像馈送到论文的视觉编码器。具体来说,论文首先将输入图像下采样到672×672作为高级表示,同时将输入图像调整大小到1344×1344,并将调整大小后的图像分成4个672×672的子图像,这些子图像保留了更多细节的视觉信息。利用每个子图像的位置嵌入插值,论文在实验中可以支持高达1792×1792的图像分辨率。
2.3.1 SFT结果:消融和分析
与SOTA的比较:结果总结在表4中。论文使用"-Chat"来表示经过SFT的MM1模型。首先,平均而言,MM1-3B-Chat和MM1-7B-Chat优于列出的相同大小的所有模型,为这些模型大小设定了新的SOTA。MM1-3B-Chat和MM1-7B-Chat在VQAv2、TextVQA、ScienceQA、MMBench以及更新的基准(MMMU和MathVista)上表现特别出色。
其次,论文探索了两个MoE模型:具有64个专家的3B-MoE,和具有32个专家的6B-MoE。论文的MoE模型在几乎每个基准上均优于密集对应模型,显示了MoE进一步扩展的巨大潜力,这留作未来工作。
第三,对于30B模型大小,MM1-30B-Chat在TextVQA、SEED和MMMU上优于Emu2-Chat37B [106]和CogVLM-30B 。与同期的LLaVA-NeXT 相比,论文在所有方面也取得了有竞争力的性能。然而,LLaVA-NeXT不支持多图像推理或小样本提示,因为每幅图像被表示为2,880个发送到LLM的token,而论文的总数只有720。这限制了涉及多个图像的某些应用。
图像分辨率的影响:图7b显示了输入图像分辨率对SFT评估指标平均性能的影响(有关论文如何计算元平均的详细信息,请参阅附录C.3)。与基线336像素分辨率模型相比,通过支持1344×1344的图像分辨率,论文可以实现15%的相对增长。注意,对于最大的1792×1792分辨率,平均性能略有下降。这可能是因为许多评估图像的大小小于此分辨率,并且缩放伪影可能会影响模型性能。
预训练的影响:与大多数最新的MLLMs不同,论文对模型进行了大规模预训练。为评估预训练对最终模型性能的影响,论文在相同的预训练运行上执行SFT,但在不同的检查点步骤。对于较早的检查点步骤,模型看到的唯一数据样本比后续检查点步骤少,因此这是衡量预训练数据量重要性的一种方式。在图7c中,论文显示随着模型看到更多的预训练数据,其性能持续提高。
SFT后的few-shot思维链式推理:MM1由于交错数据而获得了few-shot能力。尽管论文的微调数据仅包含单幅图像示例,但论文发现MM1-30B-Chat仍然表现出多图像推理能力。图2定性地展示了这一点,在MathVista [80]上也有定量体现,论文在其上评估了思维链式提示的few-shot性能:4-shot性能为41.9,比zero-shot(39.4)高2.5分。
论文表现最佳的高分辨率SFT模型每幅图像使用720个token。当使用超过4个上下文示例时,由于上下文长度的限制,这将成为一个挑战。为允许使用更多示例,论文探索了混合分辨率上下文示例的形式,其中论文以较低分辨率馈送部分示例(详见附录C.5)。使用该形式并包含8个上下文示例,MathVista的性能提高到44.4。
通过预训练学习的经验教训是否也适用于SFT? 是的。论文发现(1)使用纯字幕数据进行预训练可以提高SFT指标,以及(2)不同的VL连接器架构对最终结果影响甚微。详细的消融结果见附录C.4。
定性分析:为更好地理解MM1,论文在附录D中提供了更多定性示例,包括预训练模型和指令调优模型,其中包括交错的图像文本处理和few-shot推理。
大模型&AI产品经理如何学习
求大家的点赞和收藏,我花2万买的大模型学习资料免费共享给你们,来看看有哪些东西。
1.学习路线图
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
2.视频教程
网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己整理的大模型视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。
(都打包成一块的了,不能一一展开,总共300多集)
因篇幅有限,仅展示部分资料,需要点击下方图片前往获取
3.技术文档和电子书
这里主要整理了大模型相关PDF书籍、行业报告、文档,有几百本,都是目前行业最新的。
4.LLM面试题和面经合集
这里主要整理了行业目前最新的大模型面试题和各种大厂offer面经合集。
👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓