MoE-LLaVA:为大型视觉-语言模型引入专家混合

news2024/9/20 16:39:04

随着人工智能技术的飞速发展,大型视觉-语言模型(LVLMs)在图像理解和自然语言处理方面展现出了巨大的潜力。这些模型通过结合图像编码器和语言模型,能够处理包括图像描述、视觉问答和图像字幕生成等在内的多种任务。然而,现有模型在训练和推理时存在巨大的计算成本,这限制了它们的应用范围和效率。

方法

为了解决这一挑战,本文提出了一种名为MoE-LLaVA的新型LVLM架构,它基于专家混合(MoE)的概念。MoE-LLaVA的核心思想是通过在模型中引入多个专家(experts),并通过路由器(router)动态地将输入数据分配给这些专家,从而实现模型的稀疏性,降低计算成本。

MoE-LLaVA-1.8B×4与其它开源大型视觉-语言模型(LVLMs)在对象幻觉基准上的平均性能比较。图中显示了不同模型的激活参数数量(以十亿计)与它们的性能

MoE-LLaVA模型的架构设计是其创新性的核心,它通过精心设计的组件来实现高效的多模态学习能力。下面详细介绍这些组件:

视觉编码器(Vision Encoder)

视觉编码器是模型的首要组件,其任务是接收原始图像输入并将其转换成一系列视觉令牌(token)。这些令牌是图像的高级表示,捕捉了图像中的关键信息,如形状、颜色、纹理等。视觉编码器通常由卷积神经网络(CNN)或Transformer架构组成,它们能够从图像中提取丰富的特征。

视觉投影层(Visual Projection Layer)

视觉投影层位于视觉编码器之后,其功能是将视觉令牌映射到一个与语言模型隐藏层维度兼容的空间。这一步骤至关重要,因为它确保了视觉信息能够无缝地与语言模型的文本信息进行交互。通过这种方式,模型能够将视觉数据和文本数据统一到一个共同的表示空间中。

词嵌入层(Word Embedding Layer)

词嵌入层负责处理文本输入。它将输入的文本序列转换为一系列的词向量(word embeddings),这些向量是连续的数值表示,能够捕捉单词的语义信息。这些词向量随后可以与视觉令牌一起输入到模型中,使得模型能够理解和生成语言。

多层LLM块(Multi-layer LLM Blocks)

在MoE-LLaVA中,多层LLM块是建立在大型语言模型之上的关键组件,用于处理和融合文本和视觉数据。这些块通常包含多头自注意力机制(multi-head self-attention)和前馈神经网络(FFN),它们能够处理长距离依赖关系,并学习数据中的复杂模式。

MoE块(MoE Blocks)

MoE块是MoE-LLaVA架构中的创新点,它由多个专家(experts)组成,每个专家是一个前馈神经网络(FFN)。这些专家通过一个路由器(router)接收输入数据,路由器负责动态地将输入令牌分配给最合适的专家。这种设计允许模型在保持大量参数的同时,只激活和训练一部分专家,从而实现计算的稀疏性。

MoE-LLaVA模型的不同配置的详细参数,包括专家数量、MoE嵌入宽度、层数、FFN因子、FFN头数、激活的参数和总参数

MoE-Tuning是MoE-LLaVA模型的训练策略,它通过精心设计的三个阶段,引导模型逐步学习处理多模态数据,最终实现高效的学习和推理。

MoE-Tuning的三个阶段:第一阶段只有MLP被训练;第二阶段除了视觉编码器(VE)之外的所有参数都被训练;第三阶段FFNs用于初始化专家,并且只训练MoE层
MoE-LLaVA模型的三个阶段训练策略的框架和方法。第一阶段(a)专注于训练多层感知器(MLP),其目的是将大型语言模型(LLM)适应于视觉输入,使模型能够理解和处理图像数据。第二阶段(b)中,继续训练LLM的后端,以增强模型对多模态数据(即图像和文本)的理解能力,而在这一阶段,MoE层并未参与训练。到了第三阶段(c),通过复制前馈网络(FFN)的权重来初始化每个专家(expert),这是MoE层训练的开始,专家将根据输入数据动态地进行学习和适应。这一策略使得MoE-LLaVA能够在不同阶段逐步构建起强大的多模态学习能力,同时保持模型的高效性和灵活性。

第一阶段:MLP训练

在MoE-Tuning的初始阶段,重点放在训练一个多层感知器(MLP)上。MLP是一个简单的神经网络,它能够对输入数据进行线性变换和非线性激活。在这个阶段,MLP的主要任务是将视觉编码器输出的视觉令牌转换成一种形式,使其能够与大型语言模型(LLM)兼容。这个过程是至关重要的,因为它为模型提供了一种机制,使其能够理解和解释视觉数据中的关键特征,并将其与语言模型的文本处理能力相结合。

第二阶段:LLM参数训练

在MLP成功适配视觉输入之后,训练进入第二阶段,此时重点转移到整个大型语言模型(LLM)的参数上。在这一阶段,模型通过多模态指令数据进行微调,这意味着模型将学习如何同时处理文本和视觉信息,并在这两种模态之间建立联系。通过这种方式,模型不仅能够理解图像内容,还能够理解与图像相关的文本描述,从而增强其对多模态数据的理解和生成能力。

第三阶段:MoE层训练

在前两个阶段的基础上,第三阶段专注于训练MoE层。在这个阶段,模型的FFN(Feed-Forward Network)权重被复制并用作MoE层中各个专家的初始化权重。MoE层由多个专家组成,每个专家都是一个小型的神经网络,能够处理一部分输入数据。通过训练,模型学习如何通过路由器动态地将输入数据分配给最合适的专家。这种训练方式使得模型能够更有效地利用其参数,因为只有与当前任务最相关的专家会被激活,而其他专家则保持不活跃状态,从而实现计算资源的节省。

用于三个阶段训练的数据组的详细组成,包括数据来源和样本数量

通过这三个阶段的训练,MoE-LLaVA模型不仅能够学习到如何有效地处理多模态数据,还能够实现模型的稀疏性,即在保持大量参数的同时,只激活和训练一部分专家。这种稀疏性使得模型在处理数据时能够更加灵活和高效,同时降低了训练和推理时的计算成本,使MoE-LLaVA能够在多模态任务上展现出与更大、更密集模型相媲美甚至更优的性能。

实验

实验的基础是构建一个多元化的数据集,它结合了LLaVA-PT、Hybird-FT和LLaVA-FT等不同的数据源。这些数据集不仅在规模上有所不同,涵盖了从558k到665k的样本量,而且在内容上也各具特色,能够全面考验模型的多模态学习能力。在MoE-LLaVA模型的配置上,研究者尝试了不同数量的专家和不同数量的激活专家,这一策略允许模型在保持参数总量不变的情况下,通过调整激活专家的数量来优化性能。

在图像问答任务中,MoE-LLaVA在五个基准测试上的表现与当前最先进方法相当,这证明了其在图像理解方面的强大能力。特别是在ScienceQA和POPE这两个基准测试上,MoE-LLaVA即便使用了较少的激活参数,也能达到与参数量更大的模型相媲美的性能。

不同LVLMs在图像理解基准上的性能,报告了激活参数的数量

表中的“*”表示某些模型在训练数据上存在重叠,而“†”表示模型是使用384分辨率的图像进行训练的。为了直观展示结果,表中用粗体和下划线分别表示了最佳和次佳的结果。

对象幻觉任务要求模型能够根据给定的图像生成相应的描述或解释。MoE-LLaVA在POPE评估方法下展现了卓越的性能,它生成的对象描述与图像内容高度一致,显示出模型在理解和生成视觉内容方面的强大能力。在某些情况下,MoE-LLaVA甚至超过了参数量更大的模型,表明MoE-LLaVA在对象幻觉任务上具有显著的优势。

不同方法在对象幻觉评估中的准确率、F1分数和是的比率

为了深入理解MoE-LLaVA模型的内部工作机制,研究者进行了定量分析。通过分析不同专家的负载和模态偏好发现MoE-LLaVA的专家能够平衡地处理文本和图像数据。随着模型深度的增加,专家之间的任务分配呈现出特定的模式,这表明MoE-LLaVA能够根据数据的特点动态调整其处理策略,以实现最优的性能。

MoE-LLaVA-2.7B×4-Top2在ScienceQA数据集上的专家负载和模态偏好的分布

在消融研究研究中验证了三阶段训练策略的必要性,并探讨了不同基础模型、专家数量和激活专家数量对模型性能的影响。结果表明,MoE-LLaVA的架构设计能够有效地提高模型的多模态理解能力,尤其是在处理复杂的视觉和语言任务时。

对训练设置和架构设计决策的消融研究

上表中,一些特定的设置结果中被突出显示为蓝色。表6还报告了在8个V100-32G GPU上进行训练所需的时间。V100是NVIDIA推出的一款高性能GPU,广泛应用于深度学习训练任务,32G指的是每个GPU拥有32GB的显存。

实验结果表明,MoE-LLaVA在保持计算成本恒定的同时,能够与参数量更大的模型竞争,为未来多模态学习系统的发展提供了宝贵的见解。随着人工智能技术的不断进步,MoE-LLaVA有望在多模态理解和对象想象等领域发挥更大的作用。

论文链接:https://arxiv.org/pdf/2401.15947

Github:https://github.com/PKU-YuanGroup/MoE-LLaVA

Demo: https://huggingface.co/spaces/LanguageBind/MoE-LLaVA

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1794856.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python办公自动化文件自动分类

Python文件自动分类是指使用Python编程语言编写程序,根据特定的规则或条件将计算机上的文件自动归类到不同的文件夹中。这种功能在日常工作中非常有用,特别是在处理大量不同格式的文件时,可以帮助用户快速整理和检索文件。 在Python中&#…

申请到对账全流程贯通,报销竟能如此丝滑?

差旅一键出行,报销太烦恼?面对成堆的发票和繁琐的报销流程,不是错漏,便是杂乱,出行人郁闷,财务也头疼。今天带大家看看,当申请到对账全流程贯通后,员工出差将是怎样的新体验? 一、一…

C++11:列表初始化 初始化列表initializer_list

前言 2003年C标准委员会曾经提交了一份技术勘误表(简称TC1),使得C03这个名字取代了C98成为了C11前最新的C标准名称。不过由于C03主要是对C98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准…

扣子工作流实战案例教程,手把手教你搭建一个图书管理工作流

🧙‍♂️ 诸位好,吾乃斜杠君,编程界之翘楚,代码之大师。算法如流水,逻辑如棋局。 📜 吾之教程,内含诸般技术之秘诀。吾欲以此笔记,传授编程之道,助汝解技术难题。 &#…

STM32 音乐播放器之音频入门实验(pwm、dac、.wav、.mp3)

1.pwm实现简易电子琴实验 1.改变PWM频率,输出不同音调 2.改变占空比,调节音量大小 3.按键弹奏,支持按按键录取弹奏音 4.播放:中高低音;录取音;指定歌曲 5.支持按上一首,下一首,调弹奏速度&#…

C++设计模式-外观模式,游戏引擎管理多个子系统,反汇编

运行在VS2022,x86,Debug下。 30. 外观模式 为子系统定义一组统一的接口,这个高级接口会让子系统更容易被使用。应用:如在游戏开发中,游戏引擎包含多个子系统,如物理、渲染、粒子、UI、音频等。可以使用外观…

数据分析每周挑战——心衰患者特征数据集

这是一篇关于医学数据的数据分析,但是这个数据集数据不是很多。 背景描述 本数据集包含了多个与心力衰竭相关的特征,用于分析和预测患者心力衰竭发作的风险。数据集涵盖了从40岁到95岁不等年龄的患者群体,提供了广泛的生理和生活方式指标&a…

Web3开发框架分析

Web3开发框架旨在简化区块链和去中心化应用(DApp)的开发过程,为开发者提供必要的工具和库。以下是一些主要的Web3开发框架。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1.Truffle Suite Truffl…

GB28181安防视频融合汇聚平台EasyCVR如何实现视频画面自定义标签?

安防视频融合汇聚平台EasyCVR兼容性强,可支持Windows系统、Linux系统以及国产化操作系统等,平台既具备传统安防视频监控的能力,也具备接入AI智能分析的能力,可拓展性强、视频能力灵活,能对外分发RTMP、RTSP、HTTP-FLV、…

25 - 销售分析III(高频 SQL 50 题基础版)

25 - 销售分析III -- where 是分组之前筛选数据 -- having 是分组之后筛选数据selectp.product_id,p.product_name fromSales s left join Product p on s.product_idp.product_id group byproduct_id havingmin(sale_date) >"2019-01-01" and max(sale_date)&…

使python技能飙升的5个实用F-String技巧

前言 python中存在着一些奇奇怪怪的语法,了解这些语法可以使我们在编写程序时事半功倍,不了解的则会使我们产生疑惑。今天,我们来了解一下python中关于f-string的5个实用的小技巧。 技巧一:数字分隔 num 1000000000 print(-*20)print(f{n…

传统的老程序员转向人工智能需要准备好这三件事情,你知道吗?

前言 人类文明的进步有时候快的吓人,在我们父辈上街买菜还是以一毛为计量买菜的时代,其实过去了也没有多长时间。现在买菜接近10块为准了,正常在集市上喊着怎么卖?摊主喊着三斤,包含的意思是10块钱三斤。相隔这么多年…

翘首以盼的抗锯齿

Antialiasing 实际的图形学中是怎么实现反走样的呢? 我们不希望实际产出的图形有锯齿效果,那怎么办呢? 从采样的理论开始谈起吧 Simpling theory 照片也是一种采样,把景象打散成像素放到屏幕上的过程: 还可以在不…

统信UOS SSH服务升级(ubuntu20)内网

服务器配置 系统信息 SSH版本 目标版本 openssh-server_8.2p1-4_arm64.deb 因为不通互联网,所以所有deb包需要手动下载(可以连接互联网的可以自动忽略手动下载deb步骤,直接apt-get install xxx 即可) 升级步骤 !!!deb下载方式…

开源低代码平台技术为数字化转型赋能!

实现数字化转型升级是很多企业未来的发展趋势,也是企业获得更多发展商机的途径。如何进行数字化转型?如何实现流程化办公?这些都是摆在客户面前的实际问题,借助于开源低代码平台技术的优势特点,可以轻松助力企业降低开…

SpringFramework总结

一.SpringFramework介绍 (一)Spring 广义上的 Spring 泛指以 Spring Framework 为基础的 Spring 技术栈。 Spring 已经不再是一个单纯的应用框架,而是逐渐发展成为一个由多个不同子项目(模块)组成的成熟技术,例如 Spring Frame…

LeetCode790多米诺和托米诺平铺

题目描述 有两种形状的瓷砖:一种是 2 x 1 的多米诺形,另一种是形如 “L” 的托米诺形。两种形状都可以旋转。给定整数 n ,返回可以平铺 2 x n 的面板的方法的数量。返回对 109 7 取模 的值。平铺指的是每个正方形都必须有瓷砖覆盖。两个平铺…

iPhone的5G设置怎么更改吗?设置好这些能够优化电池的使用寿命

随着5G技术的普及,iPhone用户现在可以享受到更快的网络速度,但这同时也带来了一个问题:如何在使用5G和保持电池寿命之间找到平衡?苹果公司通过引入“5G Auto”设置,为用户提供了一个智能的解决方案,但用户也…

动态库加载【Linux】

从此往后,建立映射,我们执行的任何代码,都是在我们的进程地址空间中进行执行 例如:将动态库映射到共享区,进程在CPU调度时,是在进程的进程地址空间处运行 程序在编译好之后,在加载到内存之前&a…

设计循环队列---力扣622

1、题目 1.1基础设置与讲解 循环队列,即固定长度的队列,可以想象成一个环形队列 就类似于这种队列,队尾指针后会有一个空位,用于控制判断队列为空还是为满; typedef int MyDataType;typedef struct {MyDataType fron…