MoE-LLaVA: Mixture of Experts for Large Vision-Language Models

news2024/9/20 11:23:08

发表时间:6 Jul 2024

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

作者单位:Peking University

Motivation最近的进展表明,扩展大型视觉语言模型 (LVLM) 有效地提高了下游任务的性能。然而,现有的缩放方法使所有模型参数在计算中的每个标记都处于活动状态,这带来了大量的训练和推理成本。然而,直接应用MoE来训练稀疏的LVLM是具有挑战性的。我们观察到,同时LLM转换为LVLM和稀疏化模型会导致显著的性能下降。

解决方法:经过多次尝试,我们发现适当的初始化对于稀疏化 LVLM 至关重要,因此,我们引入了一种简单而有效的三阶段训练策略 MoE-Tuning(也就是说之所以三阶段训练,是为了更好的初始化参数)。在这项工作中,我们提出了一种简单而有效的 LVLM 训练策略 MoE-Tuning。该策略创新性地解决了多模态稀疏学习中性能下降的常见问题,从而构建了一个具有大量参数但计算成本恒定的稀疏模型。 此外,我们提出了MoE-LLAVA,这是一种基于moe的稀疏LVLM架构,在部署过程中,它只通过路由器唯一地激活前k个专家,使剩余的专家inactive,保持silence

MoE-Tuning 包括三个阶段:

  1. 在第一阶段,只训练 MLP。

  2. 在第二阶段,除了视觉编码器 (VE) 之外,所有参数都经过训练。

  3. 第三阶段,FFN 用于初始化 MoE 中的专家,只训练 MoE 层。对于每个 MoE 层,每个令牌只激活两个专家,而其他专家保持沉默。

MoE-LLAVA 仅在大约 3B 稀疏激活参数的情况下,在各种视觉理解数据集上表现出与 LLAAVA-1.5-7B 相当的性能,甚至在对象幻觉基准测试中甚至超过了 LLAVA-1.5-13B。如图:

实现方式:Training framework and strategy:MoE-LLAVA 采用三阶段训练策略。

(a) 阶段1,我们只训练 MLP LLM 适应视觉输入数据:For the first stage of pretraining, we use the pretrained data of LLaVA 1.5-558k 说明:阶段 1 的目标是让视觉 token 适应到 LLM,赋予 LLM 看懂图片的实体有哪些的能力。MoE-LLaVA 采用一个 MLP 来将图片 token 投影到 LLM 的输入域,这意味着一个个图片小 patch 被 LLM 当作伪文本 token。在这个阶段,LLM 被训练学会描述图片,理解更高层次的图片语义。在这个阶段 MoE 层不会被应用到 LVLM 中

(b) 阶段2,训练 LLM 后端支持多模态理解能力,不涉及 MoE 层数据:For the second stage, we collect datasets from MIMIC-IT, LRV , SViT and LVIS to provide a robust initialization for MoE-LLaVA. 说明:用多模态的指令数据来微调是提高大模型能力和可控性的关键技术,并且在这个阶段 LLM 被调整为有多模态理解能力的 LVLM。在这个阶段该研究加入更复杂的指令,包含图片逻辑推理,文字识别等高级任务,要求模型有更强的多模态理解能力。通常来说,稠密模型的 LVLM 到此就训练完成,然而研究团队发现同时将 LLM 转为 LVLM 和把模型稀疏化是具有挑战的。因此,MoE-LLaVA 将使用第二阶段的权重作为第三阶段的初始化以降低稀疏模型学习的难度

(c)阶段3, 在这个阶段,我们复制 FFN(阶段2训练过,阶段3还训练) 的权重来初始化每个专家数据:For the third stage, we utilize the same data pipeline as LLaVA-mix-665k。 说明:MoE-LLaVA 将 FFN 复制多份作为专家集合的初始化权重。当视觉 token 和文本 token 被喂入 MoE 层时,router 会计算每一个 token 和专家们的匹配权重,然后每个 token 会被送入最匹配的 top-k 个专家进行处理,最后根据 router 的权重加权求和汇聚成输出。当 top-k 个专家被激活时,其余的专家保持非活动状态,这种模型构成了具有无限可能的稀疏通路的 MoE-LLaVA。

架构:在LLAVA 1.5 (Liu et al., 2023b)之后,我们利用CLIP-Large (Radford et al., 2021)作为视觉编码器,MLP由两个线性层组成(与LLAVA 1.5一样都用的MLP替换LLaVA中的线性层),GELU激活函数。除非另有说明,MoE-LLAVA 使用 MoE 层交替替换 FFN,这意味着 MoE 层的数量是层总数的一半

图c中的expert在哪里?

ST (Switch Transformer): Switch Transformer中,模型的每一层都是一个专家网络的集合,输入数据会被动态地路由到不同的专家进行处理。ST在Transformer模型中用一个稀疏的Switch前馈网络(FFN)层(浅蓝色)替换Transformer中存在的密集FFN层。该层独立地对序列中的标记进行操作,然后路由到多个FFN专家中。switch FFN层返回所选FFN的输出,然后乘以路由器阈值,然后进行合并。参考链接:https://blog.csdn.net/chattyfish/article/details/131908504

也就是说图c中的不同的FFN就是expert:

实验Image Understanding Evaluation,Object Hallucination Evaluation, MoE-LLaVA 的多模态理解能力评估。

由于 MoE-LLaVA 是第一个基于 LVLM 搭载 soft router 的稀疏模型,因此该研究将之前的模型归纳为稠密模型。研究团队在 5 个图片问答 benchmark 上验证了 MoE-LLaVA 的性能,并报告了激活的参数量和图片分辨率。与 SOTA 方法 LLaVA-1.5 相比,MoE-LLaVA-2.7B×4 展现了强大的图片理解能力,在 5 个 benchmark 上性能非常接近 LLaVA-1.5。其中 MoE-LLaVA 用 3.6B 的稀疏激活参数在 SQAI 上超过了 LLaVA-1.5-7B 1.9%。值得注意的是,由于 MoE-LLaVA 的稀疏结构,只需要 2.6B 的激活参数量就能全面超过 IDEFICS-80B

结论:(主要由消融实验得出)

  1. MoE-LLaVA 这一稀疏模型可以用更少的激活参数达到和稠密模型相当甚至超过的性能。

  2. MoE-LLaVA 的 yes ratio 占比处于较均衡状态,这表明稀疏模型 MoE-LLaVA 能够根据问题做出正确的反馈。

  3. MoE-LLaVA 的专家们学到了某种特定的模式,它能够按照一定的规律进行专家分工

  4. 研究发现 text 和 image 的路由分布极其相似,例如当专家 3 在 17-27 层努力工作时,它所处理的 text 和 image 的占比是相似的。这表明 MoE-LLaVA 对于模态并无明显的偏好

  5. 研究团队发现对于某个未见的 text token 或 image token,MoE-LLaVA 始终偏向于派发专家 2 和 3 来处理模型深层。专家 1、4 倾向于处理初始化的 token。这些结果能够帮助我们更好地理解稀疏模型在多模态学习上的行为,并探索未知的可能。

局限:虽然 MoE-LLAVA 展示了有竞争力的能力,但训练稳定性存在一些困难尤其是 16 位浮点精度Future:由于存在多个专门针对不同能力的专家,MoE-LLAVA 可以轻松扩展以处理其他任务,例如检测、分割、生成或处理更多模式,例如视频、深度和热量。

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

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

相关文章

uniapp版本更新除了plus.runtime.getProperty的解决办法

以下是展示图 带尺寸的图片: 首先把以下代码放到想要更新弹出的页面 //template部分<uni-popup ref"popup" background-color"#fff"><versionUp handleCloseVersion"closeVersion"></versionUp></uni-popup>//script…

支付宝开放平台竟出现一张神秘人脸!

前言 ​ 我因一个单子来到支付宝开放平台来。在将其加入书签的时候&#xff0c;我发现出现了个神秘的人脸 一张笑容明媚的脸&#xff0c;就是出现的时候不太对 正常的收藏网址 应该是显示对应log 就不继续找相关例子了 ​ 添加书签的页面&#xff0c;本该出现log的地方缺出现了…

SQL注入实例(sqli-labs/less-23)

0、初始网页 1、闭合方式判断 闭合符号为单引号&#xff0c;通过测试发现过滤了注释&#xff0c;所以直接闭合 2、确定查询表的列数 确定查询表的列数为3列 ?id1 order by 3 3、确定回显位置 回显位置为第二列和第三列 ?id-1 union select 1,2,3 4、查看当前登录和数据…

【统信UOS】桌面系统通过自定义内网补丁仓库升级内网系统

原文链接&#xff1a;【统信UOS】桌面系统通过自定义内网补丁仓库升级内网系统 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇关于在统信桌面系统上通过自定义内网补丁仓库升级内网系统的文章。在企业或组织内部网络环境中&#xff0c;为了安全性和便捷性&#xff…

《Ubuntu22.04环境下的ROS2学习笔记1》

一、在ROS2环境下创建工作空间 ROS2相比ROS1来说工作空间的创建有较大的不同&#xff0c;同时工作空间中的四个目录被更换为src(存放源码) &#xff0c; build(存放编译的中间文件) &#xff0c; install(存放可执行文件) &#xff0c; log(日志)。同时命令行也有些许变化&…

【循环神经网络】案例:周杰伦歌词文本预测【训练+python代码】

文章目录 1、简介2、数据集3、构建词典4、构建数据集对象5、构建网络模型6、构建训练函数6.1、多分类交叉熵损失函数&#x1f53a;6.2、Adam&#x1f53a;6.3、代码 7、构建预测函数8、word_to_index和index_to_word8.1、word_to_index8.2、index_to_word8.3、使用场景 9、Data…

OpenHarmony编译

简介&#xff1a;本文将会介绍编译OpendHarmony环境的搭建、编译、和刷机&#xff08;rk3568&#xff09; 使用场景&#xff1a;修改系统源码&#xff0c;需要验证修改的功能是否正确、编译镜像、编译SDK 1、VS Code&#xff0c;下载链接&#xff0c;用于修改源码 2、linux环…

“低代码”平台的机遇与挑战

低代码平台的机遇 提高开发效率&#xff1a; 低代码平台通过提供可视化的开发工具和可重用的组件&#xff0c;显著提高了开发效率。开发者能够更快速地构建和部署应用&#xff0c;迅速响应市场需求。据普遍观点&#xff0c;低代码平台能够提升30%以上的开发效率&#xff0c;而无…

记一次用户认证代码重构中设计模式及设计原则的使用

目录 一、需求二、初始代码 - 上来就怼三、重构1 - 单一职责&#xff08;方法级&#xff09;四、重构2 - 单一职责&#xff08;类级、策略模式&#xff09;、简单工厂五、重构3 - 依赖注入&#xff08;避免重复创建对象&#xff09;六、重构4 - 使用Map替代if...else、享元模式…

AI浪潮下的程序员命运:消失还是进化?

随着人工智能技术的迅猛发展&#xff0c;程序员职业正面临着前所未有的挑战与机遇。在这个变革的时代&#xff0c;程序员们究竟该如何应对&#xff0c;才能在AI浪潮中乘风破浪&#xff0c;开创属于自己的朝阳之路呢&#xff1f; 程序员这一职业正迎来前所未有的变革&#xff0…

DC-9靶机渗透测试

DC-9靶机 文章目录 DC-9靶机信息收集web渗透后台渗透用户横向移动权限提升靶机总结 信息收集 扫描目标主机存在的端口信息 存在80和22端口 看来思路应该不会有太大变化了&#xff0c;但是ssh端口是处于过滤的状态 进行漏洞扫描也没扫描出有可以利用的 但知道了一些界面 web渗透…

沪深300股指期货如何操作套期保值?

沪深300股指期货的套期保值是一种重要的风险管理工具&#xff0c;用于对冲投资组合面临的市场风险。 以下是套期保值流程的详细步骤说明&#xff1a; 第一&#xff0c;评估套保需求&#xff1a;投资者首先需要基于对市场走势的深入分析和对投资组合的细致评估&#xff0c;确定…

python-flask-上传多个文件并存储

本地环境&#xff1a;win10 / centos6 &#xff0c; python3 flask入门看这里&#xff1a; ↓ python-flask结合bootstrap实现网页小工具实例-半小时速通版_bootstrap flask-CSDN博客 https://blog.csdn.net/pxy7896/article/details/137854455 动态添加和删除表格中的行&…

论文概览 |《Urban Analytics and City Science》2024.07 Vol.51 Issue.6

本次给大家整理的是《Environment and Planning B: Urban Analytics and City Science》杂志2024年7月第51卷第6期的论文的题目和摘要&#xff0c;一共包括16篇SCI论文&#xff01; 论文1 Digital twins on trial: Can they actually solve wicked societal problems and chan…

[开端]JAVA抽象类使用到redis观察着

一、绪论 当redis内容发生变化时需要通知一些观察者做一些动作怎么做&#xff1f; 二、JAVA抽象类 public abstract class AbstractRedisChangeListener {public abstract void change(String key, String value, String crudType); }使用abstract进行修饰一个类 其中抽象类…

数字信号处理2: 离散信号与系统的频谱分析

文章目录 前言一、实验目的二、实验设备三、实验内容四、实验原理五、实验步骤1.序列的离散傅里叶变换及分析2.利用共轭对称性&#xff0c;设计高效算法计算2个N点实序列的DFT。3.线性卷积及循环卷积的实现及二者关系分析4.比较DFT和FFT的运算时间5.利用FFT求信号频谱及分析采样…

【机器学习】(基础篇三) —— 损失函数和梯度下降

损失函数 损失函数&#xff08;Loss Function&#xff09;&#xff0c;也称为代价函数&#xff08;Cost Function&#xff09;或误差函数&#xff08;Error Function&#xff09;&#xff0c;是机器学习和深度学习中一个核心的概念。它用于量化模型预测与实际目标之间的差异&a…

有序转化数组(LeetCode)

题目 给你一个已经 排好序 的整数数组 和整数 、 、 。对于数组中的每一个元素 &#xff0c;计算函数值 &#xff0c;请 按升序返回数组 。 解题 在时间复杂度为解决问题 def sortTransformedArray(nums, a, b, c):def f(x):return a * x * x b * x cn len(nums)result…

配置Mysql的慢查询日志

一、什么是Mysql慢查询日志 MySQL慢查询日志是MySQL数据库自带的一个功能&#xff0c;用于记录执行时间超过指定阈值的SQL语句&#xff0c;以便于后续的性能优化工作 帮助开发和DBA发现哪些SQL语句需要优化&#xff0c;在哪些地方需要修改&#xff0c;以提高数据库的性能 默认…

【Hot100】LeetCode—51. N 皇后

原题链接&#xff1a;51. N 皇后 1- 思路 使用回溯的方式实现&#xff0c;回溯三部曲 数据结构&#xff1a;定义三维数组&#xff0c;收集结果1- 回溯终止条件&#xff1a;如果遍历到 row n-1 此时就是结果收集的时刻2- 执行 for 循环遍历&#xff0c;执行递归和回溯 2- 实现…