谷歌云AI新作:CROME,跨模态适配器高效多模态大语言模型

2024-08-22 05:04

本文主要是介绍谷歌云AI新作:CROME,跨模态适配器高效多模态大语言模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CROME: Cross-Modal Adapters for Efficient Multimodal LLM

https://arxiv.org/pdf/2408.06610

Abstract

研究对象:Multimodal Large Language Models (MLLMs) demonstrate remarkable imagelanguage capabilities, but their widespread use faces challenges in cost-effective training and adaptation.

提出问题:Existing approaches often necessitate expensive language model retraining and limited adaptability. Additionally, the current focus on zero-shot performance improvements offers insufficient guidance for task-specific tuning.

本文方法:We propose CROME, an efficient vision-language instruction tuning framework. It features a novel gated cross-modal adapter that effectively combines visual and textual representations prior to input into a frozen LLM.

方法优点:This lightweight adapter, trained with minimal parameters, enables efficient cross-modal understanding. Notably, CROME demonstrates superior zero-shot performance on standard visual question answering and instruction-following benchmarks. Moreover, it yields fine-tuning with exceptional parameter efficiency, competing with task-specific specialist state-of-the-art methods.

实验结论:CROME demonstrates the potential of pre-LM alignment for building scalable, adaptable, and parameter-efficient multimodal models.

现有的方法通常需要昂贵的语言模型再训练和有限的适应性。此外,目前对zero-shot性能改进的关注为特定于任务的调优提供了不足的指导。

提出了CROME,一个高效的视觉语言指令调优框架。它具有新颖的门控跨模态适配器,可以在输入到冻结LLM之前有效地结合视觉和文本表示。 

这个轻量级适配器使用最小的参数进行训练,可以实现高效的跨模式理解。值得注意的是,CROME在标准视觉问题回答和指令遵循基准上表现出优越的zero-shot性能。此外,它产生具有特殊参数效率的微调,与特定任务的专家最先进的方法竞争。

多模态大型语言模型(MLLMs)在多个领域,特别是在视觉-语言学习方面,近期取得了令人瞩目的突破。值得注意的是,OpenAI的GPT-4v[1]和Google的Gemini Pro Vision[2]在图像描述和视觉问答等任务上展现了卓越的性能。然而,这些商业模型通常仅通过仅预测API提供,限制了其更广泛的适应性和定制性。另一方面,也有一些值得注意的开源视觉-语言模型,包括LLaVA[3]、InstructBLIP[4]、Qwen-VL[5]和BLIVA[6]。这些模型通常使用指令调优来增强LLMs的多模态能力。它们的成功依赖于大规模训练数据(从数亿到超过十亿),这往往导致高昂的训练成本[3, 9, 10, 5]。因此,如何有效地从现有的仅视觉或仅文本的预训练模型中构建大型视觉-语言模型,并针对目标多模态用例进行调优,仍然是一个持续的挑战。

训练图像编码器和语言模型所涉及的大量参数是计算成本高昂的一个关键挑战。虽然使用多模态数据重新训练LLMs有助于对齐视觉和文本标记,但这可能会削弱预训练LLMs的推理能力。此外,随着LLMs种类的不断增加,重新训练的方法阻碍了它们在多模态框架中的“即插即用”集成潜力。

本文提出,在LLMs摄入之前预先对齐视觉和文本标记,提供了一种更灵活、高效且可扩展的策略,但目前这一策略尚未得到充分探索。本文的实证结果表明,图像和文本表示如何适应LLMs的兼容性,可以显著影响多模态理解和推理。大多数模型在标记连接之前仍然依赖于简单的线性投影。虽然BLIP-2[7]和InstructBLIP[4]通过引入查询转换器(Q-Former)[4, 6]部分解决了高效跨模态学习的需求,但它们的预训练计算成本仍然很高(在超过1亿个图像-文本对上大约需要100个GPU小时),并且针对特定领域的微调可能参数效率低下。

对于实际应用而言,提高MLLMs在特定任务上的表现至关重要,这有助于将其价值扩展到零样本场景之外。虽然零样本性能结果展示了它们无需训练数据即可处理各种任务的潜力,但在特定下游任务数据可用的情况下,最大化其有效性也具有重要意义。在这种情况下,实现高效且可适应的调优策略变得至关重要。虽然一些MLLMs,如LLaVA,提出了如LoRA[14]等参数高效的调优技术,或选择性地训练图像-语言投影层,但这些技术在不同任务和数据集上的最优实现和泛化性仍需进一步探索。开发有效、经济且灵活的调优策略,不仅能够充分发挥MLLMs在目标应用中的潜力,还能确保在零样本基准之外实现改进和稳健的性能。

本文提出了CROME,一个包含视觉编码器、查询转换器 和 门控跨模态适配器 的视觉-语言训练框架,如图1所示。所提出的适配器在LLM输入之前统一视觉和语言表示,促进了卓越的跨模态理解,同时通过在微调过程中保持LLM和视觉编码器冻结来维持参数效率。本文的轻量级跨模态融合单元有效地学习跨模态关系,使得CROME的微调变得非常简单。

本文贡献:

  1. 提出了CROME,一个新颖的视觉-语言学习框架,该框架包含一个轻量级的门控跨模态适配器(CROME-Adapter),用于在LLM输入之前对齐视觉和文本标记,以实现多模态学习。这避免了昂贵的LLM训练,并保持了文本理解和推理任务的泛化能力。

  2. CROME引入了一种有效、经济且灵活的微调策略,以在特定下游任务数据可用的情况下最大化MLLM的有效性。CROME Adapter的设计既实现了跨模态理解,又实现了参数高效的微调,因为只有在适应过程中才会训练适配器。

  3. 在一系列MLLM基准上评估了CROME在零样本和监督微调场景下的性能,并表明CROME在6/8个基准上优于最先进的开源基线。通过仅训练跨模态适配器(近500万个参数),证明了CROME在针对特定任务定制的方法中表现出色。

CROME: a Cross-modal adapter based MLLM

1. 模型架构

CROME由预训练的冻结LLM、冻结的视觉编码器和查询Transformer组件组成,如图2所示。Projected后的图像块和查询嵌入被传递到跨模态适配器中,然后与文本嵌入连接并输入到LLM中。值得注意的是,尽管高级架构类似于InstructBLIP系列的多模态LLM,但CROME在将视觉和文本输入到LLM之前处理它们的方式上有所不同。

下面,详细介绍每个组件:

视觉编码器

使用视觉编码器来提取图像特征,这些特征随后通过线性投影层 (linear projection layer) 和Q-Former进行处理。在预训练和指令调优 (instruction tuning) 阶段,保持视觉编码器本身冻结,并维持其预训练的视觉表示,以获得低成本和参数高效的训练。这些阶段仅训练相关的 projection 层。

  • 图像预处理:用 Bicubic 方法 resize 到 224 × 224;随机 crop,horizontal flips;归一化参数为 mean = (0.48145466, 0.4578275, 0.40821073),standard deviation = (0.26862954, 0.26130258, 0.27577711)
大型语言模型

为确保低成本和参数高效的训练,以及在有限调优数据下的更好泛化能力,提出在CROME的所有训练阶段中完全冻结LLM。这允许使用仅解码器和编码器-解码器类型的模型架构作为LLM。

查询Transformer(Q-Former)

采用Q-Former架构,其中查询通过自注意力相互交互,并通过每隔一个Transformer块插入的跨注意力与冻结的图像特征进行交互。使用InstructBLIP的模型Q-Former进行初始化,并在instruction-tuning 阶段训练其所有1.88亿个参数,这仅占视觉编码器和LLM参数的约20%和2.6%,从而确保在大规模 instruction-tuning 期间的参数效率。

CROME适配器

受适配器网络概念的启发,该概念引入了参数效率,在CROME中提出了一个轻量级的跨模态模块。关键的是,与Transformer中前馈和自注意力层之后的典型适配器放置不同,该模块促进了文本和视觉表示在进入LLM之前的融合。这种预LLM融合为在LLM内部对齐不同模态以实现最佳理解提供了潜在优势。在微调期间,跨模态适配器是唯一可训练的组件,使CROME能够非常高效地适应新任务,而无需对核心LLM进行大量重新训练。

如图2所示,使用传统的瓶颈结构,具有 down-projection 和 up-projection 单元以及跳跃连接。这种设计允许对高维输入特征进行高效处理。对视觉和文本分支使用特定模态的下采样单元,其中每个分支中的d维输入特征向量被投影到较小的m维。受Transformer前馈层中门控线性单元成功的启发,在 down-projection 单元中,使用两个线性变 换 Wd ∈ R^{d×m} 和 Wg ∈ R^{d×m} 的逐分量乘积,其中一个输入的激活函数为sigmoid。这种门控机制有助于适配器控制信息流,可能强调最有用和相关的多模态关系。

对于每个 down-projection 单元,给定大小为 x ∈ R^d 的输入文本或图像特征嵌入,输出映射为:

其中SiLU是Sigmoid Linear Unit函数。另一方面,up-projection 单元在两个模态之间使用权重共享机制,其中m维向量 z ∈ R^m 通过 Wu ∈ R^{m×d} 投影回d维输入维度,以更好地促进跨模态关系的学习。总体而言,跨模态适配器每个分支的输出可以表示为:

最后,通过连接标记化的文本、CROME-Adapter中文本分支的输出和CROME-Adapter中视觉分支的输出,形成输入到LLM的输入(见图2)。

2. CROME 训练

本节描述CROME的不同训练过程:(a) 使用图像-描述对进行预训练,随后(b) 在各种任务上使用图像-指令进行指令调优,以及(c) 可选的任务特定高效微调,如果针对特定目标任务有可用数据,则使用此微调来优化CROME在该任务上的性能。在整个训练阶段,使用下一个标记预测作为训练目标,其中大型语言模型(LLM)根据先前的多模态视觉和文本标记来预测下一个单词。这鼓励模型根据先前标记的上下文准确生成后续标记。

图3提供了训练阶段和可训练模型组件的可视化表示,具体描述如下。

预训练

本文的方法从预训练阶段开始,旨在将投影层内的模态对齐。如图3(a)所示,在此阶段,训练图像和文本投影层以及跨模态适配器,同时保持模型的其他层冻结。

指令调优

在此阶段,对模型进行细化以准确遵循指令。本文使用一组多样化的图像-指令对来训练模型,使其能够回答关于图像的特定查询,从而扩展其在预训练期间学习的图像描述能力之外的能力。在指令调优过程中,本文训练Q-Former、投影层和CROME-适配器参数。这使得模型能够高效地学习指令感知查询,这得益于Q-Former内部图像嵌入和查询之间的跨模态交互(见图3(b))。指令调优的结果是得到一个在视觉问答基准测试中具备强大零样本性能的模型。

可选的任务特定微调

当有更多针对特定任务的数据(通常规模小于前一阶段)可用时,此步骤会进一步优化CROME在目标任务上的性能。CROME-Adapter通过将可训练参数的数量限制在大约500万(见图3(c)),实现了高效微调。除了低成本的任务特定调优外,这种参数效率还构成了一种有效的机制,以防止在使用少量任务特定数据时常见的过拟合问题。

Experiments

1. 训练CROME的数据集

对于预训练(PT)数据集,我们使用LLaVA预训练LCS-558K[3],这是LAION/CC/SBU数据集的一个经过筛选的子集,作为所有实验中一致的图像-描述对。至于指令调优(IT)数据集,本文为不同的实验考虑了三种不同的选项,以突出不同的结果:

• IT数据集1(665K个样本),用于评估预语言模型(pre-LM)模态对齐的效果:为了展示CROME的预语言模型输入对齐单元相比于LLaVA等模型中使用的LLM再训练的有效性,我们使用与LLaVA1.5[3]相同的665K个指令-图像对。

• IT数据集2(120万个样本),用于评估CROME-Adapter的效果:为了与InstructBLIP和BLIVA模型进行比较,并展示CROME-Adapter的有效性,本文使用了一个包含120万个样本的类似数据集。在特定子集不可用的情况下,本文通过从基于MSCOCO的数据集中采样更多具有多个问题和答案的图像示例来进行补偿,以确保一致的120万个样本大小。

• IT数据集3(800万个样本),用于大规模指令调优:本文将数据集2增加到800万个图像-指令对,纳入了来自LVIS-Instruct4v[47]、LAMM[48]、Flickr30K[49]和ShareGPT4V[50]的数据。这个更大且更多样化的数据集允许我们评估CROME在更广泛的视觉概念和指令上的泛化能力,并进一步凸显其在适应大规模数据方面的效率。本文的主要结果报告是使用在该数据集上训练的模型得出的。

数据集平衡

我们遵循InstructBLIP的平衡策略,以与数据集大小平方根成比例的比率采样数据集(即训练样本的数量)。给定D个数据集,其大小分别为{N1, N2, ..., ND},我们在训练期间从数据集d中选择数据样本的概率pd设置为

2. 实现细节

2.1 模型架构

本文采用EVA-CLIP[51]中的ViT-G/14架构作为视觉编码器,处理大小为224x224的原始图像。本文从其倒数第二层提取特征。作为大语言模型(LLM),本文考虑两种不同的架构:Vicuna7B/13Bv1.5(仅解码器),基于LLaMA2[52]进行指令调优;以及Flan-T5 XXL[24](编码器-解码器),基于T5[53]进行指令调优。本文的Q-Former遵循与BLIP2类似的设计,并从InstructBLIP模型初始化。它使用一组32个可学习的查询嵌入,每个嵌入的维度为768。

2.2 训练细节

本文使用批量大小为32,对投影层进行5个周期的预训练。在指令调优阶段,本文使用批量大小为16,最多进行200万次迭代,这大约遍历了训练数据的4个周期。对于这两个训练阶段,本文都使用AdamW[54]优化器,其中β1=0.9,β2=0.999,权重衰减为0.05。此外,本文在前1000步中应用了学习率的线性预热,从10-8增加到10-5,随后采用余弦衰减,最小学习率为0。

2.3 MLLM零样本基准测试

本文在一系列开源MLLM基准测试以及仅通过仅预测API可访问的基准测试上比较了CROME。本文报告了在MMMU[55]、MME Perception (MMEP)[56]、MME Cognition (MMEC)[56]、MMBench (MMB)[57]、MM-Vet[58]、HallusionBench (HallB)[59]、LLaVA-Bench In-the-Wild (LLaVAW)[3]和SEED-Bench Image Part (SEEDI)[60]上的结果。

MMMU基准测试旨在评估多模态模型在需要大学水平学科知识和深思熟虑推理的多学科任务上的表现。

MMEP和MMEC在总共14个子任务上衡量感知和认知能力。

MMBench包含大约3000个单选题,涵盖20个不同的能力维度,如对象定位和社交推理。

MM-Vet定义了6项核心能力,并检查了从能力组合中衍生的16项感兴趣的集成。

作为评估指标,本文使用基于LLM的评估器作为“评判者”来评估开放式输出。

HallusionBench包含346张图像与1129个问题的配对,所有这些都由人类专家精心制作,以评估图像上下文推理与视觉幻觉的关系。

LLaVA-Bench In-the-Wild是一个小型数据集,包含一组24张图像,总共有60个问题,包括室内/室外场景、表情包、绘画、素描等,以评估MLLM在挑战性任务和对新领域的泛化能力。

最后,SEED-Bench是一个评估文本指令遵循能力的基准测试,包含19K个具有准确人类注释的多选题,可以客观地测量MLLM的性能,而无需人类或LLM评判者的干预。

2.4 评估指标

为了保持一致性,本文报告了使用与每个基准测试相关联的标准实现计算的官方指标。

这篇关于谷歌云AI新作:CROME,跨模态适配器高效多模态大语言模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1095318

相关文章

从基础到高级详解Go语言中错误处理的实践指南

《从基础到高级详解Go语言中错误处理的实践指南》Go语言采用了一种独特而明确的错误处理哲学,与其他主流编程语言形成鲜明对比,本文将为大家详细介绍Go语言中错误处理详细方法,希望对大家有所帮助... 目录1 Go 错误处理哲学与核心机制1.1 错误接口设计1.2 错误与异常的区别2 错误创建与检查2.1 基础

Java高效实现PowerPoint转PDF的示例详解

《Java高效实现PowerPoint转PDF的示例详解》在日常开发或办公场景中,经常需要将PowerPoint演示文稿(PPT/PPTX)转换为PDF,本文将介绍从基础转换到高级设置的多种用法,大家... 目录为什么要将 PowerPoint 转换为 PDF安装 Spire.Presentation fo

Go语言中json操作的实现

《Go语言中json操作的实现》本文主要介绍了Go语言中的json操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录 一、jsOChina编程N 与 Go 类型对应关系️ 二、基本操作:编码与解码 三、结构体标签(Struc

Linux五种IO模型的使用解读

《Linux五种IO模型的使用解读》文章系统解析了Linux的五种IO模型(阻塞、非阻塞、IO复用、信号驱动、异步),重点区分同步与异步IO的本质差异,强调同步由用户发起,异步由内核触发,通过对比各模... 目录1.IO模型简介2.五种IO模型2.1 IO模型分析方法2.2 阻塞IO2.3 非阻塞IO2.4

python语言中的常用容器(集合)示例详解

《python语言中的常用容器(集合)示例详解》Python集合是一种无序且不重复的数据容器,它可以存储任意类型的对象,包括数字、字符串、元组等,下面:本文主要介绍python语言中常用容器(集合... 目录1.核心内置容器1. 列表2. 元组3. 集合4. 冻结集合5. 字典2.collections模块

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam