# 2308.01390_OpenFlamingo: An Open-Source Framework for Training Large Autoregressive Vision-Language Models * 首页: [https://arxiv.org/abs/2308.01390](https://arxiv.org/abs/2308.01390) * PDF: [https://arxiv.org/pdf/2308.01390](https://arxiv.org/pdf/2308.01390) ## OpenFlamingo_ An Open-Source Framework for Training Large Autoregressive Vision-Language Models 这篇文章《OpenFlamingo: An Open-Source Framework for Training Large Autoregressive Vision-Language Models》介绍了一个名为 OpenFlamingo 的开源框架,用于训练大型自回归视觉-语言模型。 文章主要内容总结如下: 1. **背景与动机**: - 视觉-语言模型(Vision-Language Models, VLMs)在多模态任务中表现出色,但目前大多数模型依赖封闭的框架或有限的可扩展性。 - 为了推动研究和实际应用,作者提出了 OpenFlamingo,一个开源、可扩展的框架,支持训练大型自回归视觉-语言模型。 2. **框架设计**: - OpenFlamingo 是一个模块化框架,支持从头开始训练视觉-语言模型。 - 框架基于自回归语言模型(如 OPT、LLaMA),并将其扩展以支持视觉输入(例如图像或视频)。 - 该框架支持多模态输入处理、多种训练目标以及灵活的模块组件(如视觉编码器和语言解码器)。 3. **模型结构**: - OpenFlamingo 使用视觉编码器(如 CLIP)将图像转换为视觉嵌入。 - 视觉嵌入与语言嵌入结合后输入自回归语言模型,进行端到端训练。 - 支持多步推理和多模态生成任务。 4. **实验与结果**: - 作者在多个视觉-语言任务(如图像描述生成、视觉问答等)上评估了 OpenFlamingo 的性能。 - 实验结果显示,OpenFlamingo 在多个基准测试中表现优异,尤其是当使用较大规模的模型和训练数据时。 5. **开源与可扩展性**: - OpenFlamingo 是完全开源的,提供完整的训练代码和预训练模型。 - 框架设计灵活,便于研究人员进行模型修改、扩展和复现实验。 **总结**: 本文介绍了 OpenFlamingo,这是一个用于训练大型自回归视觉-语言模型的开源框架。该框架模块化、可扩展,支持多种视觉-语言任务,且在多个基准测试中表现良好。其开源特性有助于推动视觉-语言模型的研究与发展。 ## Abstract 该论文摘要介绍了 **OpenFlamingo**,这是一个参数规模从 **3B 到 9B** 的自回归视觉-语言模型系列。该项目的目标是开源复现 DeepMind 的 **Flamingo 模型**。在七个视觉-语言数据集上的测试表明,OpenFlamingo 的性能达到了对应 Flamingo 模型的 **80-89%**。技术报告详细描述了模型结构、训练数据、超参数以及评估方法。作者公开了模型和代码,可通过链接 访问。 该研究由多个学术机构与研究组织合作完成,包括华盛顿大学、斯坦福大学、AI2、LAION 等,并提供了论文通讯作者的联系方式。 ## 1 Introduction 本章介绍了**OpenFlamingo**,这是一个开源的框架,用于训练**大规模自回归视觉-语言模型**。其核心目标是复现并开源Flamingo模型,以支持更广泛的研究与实验。 ### 主要内容总结: 1. **传统视觉-语言模型的局限性**: - 多数模型的输入格式为 (图像, 文本) → 文本,例如BLIP-2。 - 这种格式虽能支持图像分类、视觉问答等任务,但限制了模型处理**多模态序列**的能力。 2. **自回归视觉-语言模型的优势**: - 能处理**任意交织的图像与文本序列**,从而实现**上下文学习**(in-context learning)。 - 支持**多轮对话**和**零样本任务**。 - 模型如Flamingo、Kosmos-1、mPLUG-Owl等在多种任务上表现优异,但均为闭源。 3. **现有开源模型的不足**: - 多数开源模型(如LLaVA、BLIP-2)仅能处理**单张图像**。 - 它们通常依赖精心挑选的数据集(如COCO)进行训练,而非大规模网络数据。 4. **OpenFlamingo的构建与特点**: - 基于Flamingo架构,采用**冻结的语言模型**和**冻结的视觉编码器(CLIP)**,通过增加交叉注意力模块实现多模态交互。 - 使用公开数据集(LAION-2B、Multimodal C4)进行训练。 - 提供不同参数规模的版本:3B、4B、9B,并支持使用标准语言模型和指令微调模型的两种版本。 5. **性能表现**: - 在7个评估数据集上,OpenFlamingo-3B和-9B分别达到其对应Flamingo模型性能的85%和89%。 - 模型与代码已开源在GitHub上([https://github.com/mlfoundations/open_flamingo](https://github.com/mlfoundations/open_flamingo))。 6. **模型架构细节**: - 所有模型均使用CLIP ViT-L/14作为视觉编码器。 - 不同版本的模型在语言模型、交叉注意力间隔、图像标记的可训练性上有差异。 ### 总结: 本章详述了OpenFlamingo的设计理念、模型架构、训练数据和性能表现,旨在提供一个**开源、可扩展、支持多模态序列处理**的视觉-语言模型框架,为学术界探索自回归模型提供了宝贵的工具与资源。 ## 2 Related work 本章节综述了生成式视觉-语言模型的相关研究工作,主要内容如下: 1. **模型类型与上下文处理能力**: - 生成式视觉-语言模型根据图像-文本序列生成文本。当前大多数模型(如 BLIP-2、LLaVa)仅支持在上下文中输入一张图像。 - 自回归模型(如 Flamingo)则支持图像与文本的交错输入,从而支持更强大的**上下文学习能力**(in-context learning)。 2. **Flamingo 的优势**: - 相较于其他自回归模型(如 Kosmos-1),Flamingo 在上下文学习方面表现更佳。例如,在多个数据集上的评估中,Flamingo 在使用最多 32 个上下文示例后仍能持续提升性能。 - 而 Kosmos-1 在使用 4 个上下文示例后性能达到峰值,使用 8 个示例后反而下降,说明其在上下文学习能力上存在限制。 3. **开源图像-文本数据集**: - 多数商业自回归模型依赖于闭源数据集(如 ALIGN、M3W),限制了模型的可复现性。 - 开源领域正尝试构建类似的数据集,包括: - **LAION-2B**:包含大量图像-文本对。 - **Multimodal C4** 和 **OBELISC**:包含图像-文本交错序列的数据集。 - 本文使用 **LAION-2B** 和 **Multimodal C4** 来训练开源模型 **OpenFlamingo**。 - 此外,Laurençon 等人也尝试训练了基于 Flamingo 架构的开源模型,使用的是 OBELISC 数据集和 LLaMA-9B 语言模型。 总结: 本节对比了多种视觉-语言模型的能力,强调了 Flamingo 在上下文学习上的优势,并介绍了开源可复现模型的构建背景和所用数据集,为后续提出 OpenFlamingo 模型奠定了基础。 ## 3 Approach 本文的“Approach”章节主要从模型架构、训练数据、训练细节和评估方法四个方面介绍了OpenFlamingo模型的构建与训练方法,以下是对该章节的总结: ### 3.1 模型架构(Architecture) OpenFlamingo采用了Flamingo的架构,通过密集的交叉注意力模块(dense cross-attention modules)将文本和图像进行交互。具体来说,模型在冻结的自回归语言模型基础上添加了交叉注意力层,图像通过冻结的视觉编码器提取patch特征,并通过可训练的Perceiver resampler进行嵌入。 在预处理阶段,模型使用``标记图像位置,并在图像后插入`<|endofchunk|>`标记。不同版本的OpenFlamingo模型使用了不同的交叉注意力层数,并统一使用CLIP ViT-L/14作为视觉编码器。大部分模型的``和`<|endofchunk|>`嵌入是可训练的,但OpenFlamingo-4B模型由于分布式训练中的梯度问题,所有嵌入包括这些标记的嵌入均被冻结。 ### 3.2 训练数据(Training data) OpenFlamingo的训练数据包括图像-文本对和交错的图像-文本序列。主要使用了三种数据集: 1. **LAION-2B**:一个开源的20亿图像-文本对数据集,用于训练单图像-文本对,文本长度较短。 2. **MMC4**:一个开源的1.01亿交错图像-文本序列数据集,图像和文本通过CLIP进行软对齐,使用CLIP ViT-L/14筛选高质量数据,优先选择多图像序列以增强模型学习能力。 3. **ChatGPT生成的合成数据**:仅用于OpenFlamingo-4B模型,通过ChatGPT生成包含图像描述的交错序列,并从LAION-5B中检索对应图像,生成较长的图像序列,但文本长度较短。 所有数据均采用WebDataset格式进行训练采样,并根据图像与文本的相似性进行过滤,以保证数据质量。 ### 3.3 训练细节(Training details) - **训练任务**:模型采用下一个文本token的预测(next-token prediction)目标进行训练,使用AdamW优化器,学习率线性增长后保持恒定,权重衰减应用于交叉注意力层。 - **数据平衡**:训练过程中同时使用LAION-2B(12000万条)和MMC4(6000万条)数据,且LAION-2B的批量大小是MMC4的两倍,损失权重分别为0.2和1。 - **分布式训练**:在8节点、64块A100 GPU上进行训练。OpenFlamingo-4B模型使用全分片数据并行(FSDP)进行模型切片训练,其他模型使用数据并行(DDP)。 - **损失曲线**:训练过程中LAION-2B的损失下降较快,而MMC4的损失下降较慢,推测是由于MMC4中图像间隔长文本较多,模型在生成这些文本时对图像依赖较小。 ### 3.4 评估方法(Evaluation method) 模型在多个视觉-语言任务上进行评估,包括图像描述生成(COCO、Flickr-30K)、视觉问答(VQA、OK-VQA、TextVQA、VizWiz)和分类任务(HatefulMemes)。 - **上下文示例选择**:在每次评估中随机选择上下文示例,也可使用基于检索的上下文示例选择方法(RICES)。 - **评估设置**:使用固定数据分割和三个随机种子,平均结果以提高稳定性。 - **提示格式**:根据不同任务设计不同格式的提示,如图像描述任务使用` Output: [caption]`,VQA任务使用` Question: [question] Short answer: [answer]`。 - **解码策略**:使用3束搜索(beam search)生成答案,根据任务设定生成长度。对于分类任务(如HatefulMemes),计算“yes”和“no”的似然并选择概率高的作为答案。 - **评估指标**:使用CIDEr评估图像描述,VQA准确率评估视觉问答,AUC ROC评估分类任务。 ### 总结 本章详细介绍了OpenFlamingo模型的架构设计、训练数据构成、训练策略以及评估方法。OpenFlamingo在架构上继承Flamingo的优势,但在训练数据上采用了开源替代方案(如LAION-2B和MMC4),并针对不同规模模型的训练需求优化了训练策略。同时,模型在多个视觉-语言任务上进行了系统评估,确保了其在实际应用中的有效性。 ## 4 Results ### 论文章节总结(第四部分:Results) 本节主要比较了 **OpenFlamingo** 与 **Flamingo** 在多个视觉语言数据集上的性能表现,并分析了不同模型规模、上下文样本数量以及语言指令调优对模型效果的影响。 --- #### 1. **模型性能比较** - **OpenFlamingo** 模型(尤其是 3B、3B-指令调优、4B-指令调优和 9B)在 0、4、32 个上下文示例设置下,**整体表现接近或达到 Flamingo 模型的 86% 以上**。 - 在 0-shot 和 4-shot 设置下,**OpenFlamingo-9B 在多个数据集(如 VQAv2、COCO)上性能优于或接近 Flamingo-9B**。 - 然而,在 **OK-VQA 和 TextVQA** 上,**OpenFlamingo-9B 表现显著低于 Flamingo-9B**,分别落后 6.9 和 7.8 个百分点,具体原因尚不明确。 --- #### 2. **上下文示例数量对性能的影响** - 随着上下文示例数量增加,**OpenFlamingo-3B 和 -9B 模型性能有所提升**,但提升速度**低于 Flamingo 模型**。 - 相比之下,**OpenFlamingo-4B 模型在 4 或 8 个上下文示例后性能下降**,这可能与其使用 **RedPajama 语言模型和冻结图像嵌入** 有关。 - **数据质量**(尤其是图像序列数量较少)可能是性能差异的原因之一。 --- #### 3. **模型规模趋势** - **OpenFlamingo-9B 通常表现优于较小的模型**,但例外出现在 **HatefulMemes 以及上下文示例较多时**。 - **OpenFlamingo-4B 在多个数据集(Flickr-30K、HatefulMemes、TextVQA、VizWiz)上表现不如更小的 3B 模型**。 --- #### 4. **语言指令调优的影响** - 在 3B 和 4B 模型中,**使用指令调优语言模型的版本整体优于基础语言模型版本**,**RedPajama-3B 的差异尤为明显**。 - 这一现象与先前研究一致,表明语言指令调优可以有效迁移至视觉语言任务。 --- #### 5. **与微调模型的对比** - **OpenFlamingo-9B 在 32 个上下文示例下达到微调模型 SoTA 的 62%**,而 **Flamingo-9B 达到 72%**,表明 OpenFlamingo 在少样本设置下仍有提升空间。 --- #### 总结 **OpenFlamingo** 在多数任务中表现良好,尤其是在少样本设置下,但在某些复杂任务上(如 OK-VQA、TextVQA)仍落后于 Flamingo。模型性能受上下文示例数量、数据质量和语言模型选择的影响较大。使用指令调优语言模型可提升性能,但 4B 模型的异常表现仍需进一步研究。 ## 5 Discussion 本章节主要讨论了OpenFlamingo模型在不同方面的表现、问题及其潜在应用,主要包括以下几点内容: --- ### **5.1 冻结的嵌入向量(Frozen embeddings)** - 在实验中发现,**OpenFlamingo-4B模型在多数数据集上的表现不如3B和9B模型**,其中一个重要区别是:4B模型中的``和`<|endofchunk|>`嵌入向量是随机初始化并冻结的,而其他模型是可训练的。 - 表格数据显示,冻结嵌入向量显著影响了模型在COCO和VQAv2任务上的表现: - COCO的0-shot CIDEr分数下降了4.6。 - VQAv2的0-shot准确率下降了12.1%。 - 结论:**冻结嵌入向量可能会对下游任务的性能产生显著负面影响**,特别是在小模型中更明显。 --- ### **5.2 VQAv2验证趋势(VQAv2 validation trends)** - 在开发过程中,使用VQAv2验证集作为视觉问答能力的评估基准。 - **模型在一些常见任务上表现不佳**: - **计数问题(Counting)**:如“街道上有多少人”,模型经常回答错误。 - **回答冗长(Verbosity)**:生成的答案通常过于长,导致被截断,影响匹配准确率。 - **关注中心对象而非目标对象(Non-central object)**:模型有时会错误地回答图像中不相关但视觉中心的对象。 - **训练动态(Training dynamics)**: - COCO任务的性能随着训练稳步提升。 - VQAv2任务的性能提升较为平缓,这与之前的研究结果一致。 - **语言模型的影响(Effect of language model)**: - 不同的语言模型对VQAv2性能影响显著。例如,使用MPT-1B(Instruct)代替OPT-1.3B后,0-shot性能提升了近10个百分点。 - 语言模型的选择对视觉问答任务的整体性能有较大影响。 --- ### **5.3 OpenFlamingo的应用(Applications of OpenFlamingo)** - OpenFlamingo已经衍生出多个应用模型: - **Li等人**基于OpenFlamingo和MIMIC-IT数据集微调,开发了**Otter**,一个支持多图像/视频指令的多模态助手。 - **Gong等人**发布了**Multimodal-GPT**,在视觉和语言指令数据集上对OpenFlamingo进行指令微调。 - 作者鼓励社区继续基于OpenFlamingo进行模型开发和应用。 --- ### **5.4 限制与风险(Limitations)** - OpenFlamingo模型继承了基础语言模型的风险,例如: - 使用网络爬取数据训练,可能包含不准确、不当或有害内容。 - 没有经过专门的安全性微调,可能生成意想不到或不适当的内容。 - 作者希望未来进一步研究这类自回归视觉语言模型的安全性和鲁棒性问题。 --- ### **总结** 本章从多个角度分析了OpenFlamingo模型的性能表现、训练动态和语言模型选择的影响,并指出了模型在视觉问答任务中的常见失败模式。同时,也展示了OpenFlamingo在实际应用中的潜力,并强调了其潜在的安全风险和未来研究方向。 ## 6 Conclusion 本章总结: 本技术报告介绍了OpenFlamingo,这是一组包括30亿、40亿和90亿参数规模在内的五个自回归视觉-语言模型。该项目仍在持续研究中,团队将继续致力于训练并发布高质量的自回归视觉-语言模型,以推动相关研究。报告最后感谢了多位研究人员在模型复现与安全风险评估方面的帮助,并感谢Stability AI提供的计算资源支持。 ## Appendix A Extended results 该章为《OpenFlamingo: An Open-Source Framework for Training Large Autoregressive Vision-Language Models》论文的附录A部分,主要提供了OpenFlamingo模型在视觉语言任务中的扩展评估结果。内容总结如下: --- ### **附录A 总体内容概览** 1. **附录A.1:与微调SOTA的对比** - 将OpenFlamingo模型在不同数量的上下文样本(0、4、8、16、32个)下的性能与当前最先进的微调模型进行比较。 - 微调方法的数据来源于PapersWithCode(截至2023年6月19日)。 - 图9显示了OpenFlamingo模型相对于微调SOTA的平均性能表现。 2. **附录A.2:使用RICES进行评估** - 主文本中使用了随机选取上下文样本的方法,而本附录使用了**RICES**(基于检索的上下文示例选择)方法进行评估。 - RICES通过冻结的视觉编码器(CLIP ViT-L/14)计算图像的余弦相似度,选择与测试样本最相似的训练样本作为上下文示例。 - 表12和图10展示了使用RICES后的完整评估结果。 - 结果显示,RICES在大多数任务中显著提升了性能,例如在HatefulMemes数据集上,32个样本下提升19.2%。 - 但在Flickr-30K数据集上,RICES的使用导致性能下降,原因可能是选中的上下文样本与测试样本过于相似,导致模型机械地重复错误的描述。 3. **图11:OpenFlamingo与Flamingo的性能比较** - 图11展示了OpenFlamingo模型(3B、4B、9B)与Flamingo(3B、9B)在不同上下文样本数量下的性能比例。 - 例如,在32个样本下,OpenFlamingo-9B模型在多个数据集上接近或达到Flamingo-9B的性能。 --- ### **附录A表格与图表总结** 1. **表11:使用随机上下文样本的评估结果** - 在7个视觉语言数据集(COCO、Flickr-30K、VQAv2、OK-VQA、TextVQA、VizWiz、HatefulMemes)上,评估了0、4、8、16、32个上下文样本下的性能。 - 表格展示了Flamingo与OpenFlamingo不同参数规模(3B、4B、9B)的对比结果及其标准差。 2. **表12:使用RICES方法的评估结果** - 展示了使用RICES方法后,OpenFlamingo在不同数据集和样本数量下的性能表现。 - RICES在大多数情况下提升了性能,但在Flickr-30K上效果较差。 --- ### **关键发现与结论** - **RICES方法的有效性**:在大部分任务中显著提升性能,尤其在上下文样本数量较多时效果更明显。 - **模型性能与Flamingo的对比**:OpenFlamingo在多个任务上接近Flamingo的性能,尤其是在9B参数规模下。 - **Flickr-30K的特殊问题**:RICES方法在该数据集上表现不佳,可能是由于上下文样本与测试样本过于相似,导致模型重复错误描述。 - **不同样本数量的影响**:随着上下文样本数量的增加,模型性能普遍提升,但提升幅度在不同数据集和模型规模下有所差异。 --- ### **总结** 该附录提供了OpenFlamingo模型在多种设置下的详细评估结果,展示了其在不同任务和上下文样本数量下的性能表现。通过与微调SOTA和Flamingo的对比,证明了OpenFlamingo的竞争力,同时也揭示了使用RICES方法的优缺点,为后续研究提供了有价值的参考。 ## Appendix B Additional notes on filtering MMC4 本附录讨论了在训练OpenFlamingo模型时,使用CLIP模型的余弦相似度对MMC4数据集中的图像-文本对进行过滤的方法及其影响。主要总结如下: 1. **过滤方法**:通过CLIP ViT-L/14嵌入计算图像与其对应文本之间的余弦相似度,若相似度低于设定阈值(如0.24),则移除对应图像但保留文本;若一个序列中所有图像均被移除,则丢弃整个序列,以确保图像与文本的相关性。 2. **阈值影响**: - 提高相似度阈值(如从0.24提升至0.32),虽然提高了数据质量,但也带来了两个明显副作用: - **序列中图像数量减少**:在阈值为0.32时,约58%的序列仅含一张图像,而阈值为0.24时该比例为38%。 - **大量序列被丢弃**:阈值为0.32时,约88.7%的MMC4序列被完全丢弃,而阈值为0.24时仅丢弃42.7%。 3. **训练需求**:较长的序列对训练能够处理大量上下文示例的模型可能非常重要。 4. **未来方向**:研究如何在数据长度、质量与数据集规模之间取得平衡,以进一步优化OpenFlamingo模型。 ## Appendix C Synthetic data prompt 本章节主要介绍了用于生成ChatGPT合成数据的提示内容(prompt),以及如何利用该提示生成图像和文本交错的数据序列。以下是主要内容总结: 1. **系统提示设计**: - 提示要求模型生成图像描述与文本交错的序列。 - 图像描述需具体、简洁,仅描述单张图像的核心内容。 - 文本句子可以引用图像中的概念,并要求序列具有创意、趣味性与常识推理性。 2. **生成示例**: - 提供了多个由人工设计的示例序列,如动物图像配以描述其分布的句子。 - 示例中展示了不同的格式,例如:(图像A,句子1,图像B,句子2,图像C,句子3) 或 (图像A,图像B,句子1,...)。 3. **数据生成与图像检索**: - 使用ChatGPT生成文本描述后,通过LAION-5B数据库检索匹配的图像。 - 使用CLIP模型对检索到的图像进行重排序,选择与描述相似度最高的图像。 4. **图像来源**: - 表格中列出了部分图像的来源链接,显示图像按行从左到右排列。 本章节展示了如何通过系统提示与模型生成能力,构建用于训练视觉-语言模型的高质量合成数据。 ## Appendix D Image credits 本附录(D节)主要说明了文章中所使用的图片来源。文中提到,图2中使用的图片链接已列在表13中,方便读者查阅相关图像的来源信息。此外,页面底部还提供了与文档转换、反馈问题、原始论文访问等相关的链接,以及版权和隐私政策信息。内容整体较为简洁,主要目的是为图像使用提供引用依据。