【论文综述+多模态】腾讯发布的多模态大语言模型(MM-LLM)综述(2024.02)

论文链接:24.02.MM-LLMs: Recent Advances in MultiModal Large Language | 国内-链接
实时网站:https://mm-llms.github.io
参考说明1-readpaper:https://mp.weixin.qq.com/s/ESUVe1aTYFLVJ10S9c1dBg
在这里插入图片描述

一、什么是MM-LLM ?

多模态大语言模型:Multimodal Large Language Models
MM-LLM = 预训练单模态模型( 含LLMs) + 微调对齐所有模态 + 输出调整

MM-LLMs 利用现成的预训练单模态基础模型,
特别是强大的大型语言模型(LLMs), 作为认知核心,赋予各种多模态任务能力。
LLMs 提供了稳健的语言生成、zero-shot 迁移能力和上下文学习(ICL)等可取特性

在这一领域中,主要关注点是通过多模态预训练(MM PT, Pre-Training)+ 多模态指令调整(MM IT)pipeline 来优化模态之间的对齐,以及与人类意图的对齐(aligning with human intent)。

1.1 发展历程

  1. 最初的研究
    图像-文本理解(例如 BLIP-2,LLaVA,MiniGPT-4OpenFlamingo 等工作);
    视频-文本理解(例如 VideoChat,Video-ChatGPT 和 LLaMA-VID 等工作);
    音频-文本理解(例如 Qwen-Audio)等任务。

  2. 随后,MM-LLMs 的能力扩展到支持特定模态生成。
    这包括具有图像-文本输出的任务,例如 GILL,Kosmos-2,Emu 和 MiniGPT-5 等;
    以及具有语音/音频-文本输出的任务,例如 SpeechGPT 和 AudioPaLM 等工作

  3. 最近的研究努力集中在模仿类人任意-任意模态转换
    将 LLMs 与外部工具结合起来,实现,现接近任意-任意的多模态理解和生成,
    例如 Visual-ChatGPT,HuggingGPT 和 AudioGPT

二、模型框架

参考链接:https://zhuanlan.zhihu.com/p/680487634

我们将一般模型架构分解为五个组件

  1. 模态编码器(Modality Encoder) : 直接使用
  2. 输入映射器 (Input projector): 将其他模态的编码特征与文本特征空间对齐
  3. LLM 骨干 (LLM backbone): 直接使用
  4. 输出映射器 (Output Projector) : 将生成模型与 LLM 的输出指令对齐
  5. 模态生成器 (Modality Generator):直接使用

结构见下图2:
在这里插入图片描述

2.1 模态编码器(Modality Encoder):

** 负责对不同的模态输入IX进行编码,得到对应的特征FX。IX可以是图像、视频、音频、3D等不同类型的输入。常用的编码器包括:
图像编码器:NFNet-F6、ViT、CLIP ViT、Eva-CLIP ViT
视频编码器:对视频均匀采样成5帧,进行与图像类似的预处理
音频编码器:C-Former、HuBERT、BEATs、Whisper
3D点云编码器:ULIP-2、PointBERT
统一编码器:ImageBind,支持图像、视频、文本、音频、热图等多种模态

2.2 输入投影器 (Input Projector)

负责将编码后的其他模态特征FX投影到文本特征空间T,得到对齐的特征PX。常用的实现方法有:
直接线性投影或多层感知机
交叉注意力:利用可训练的查询向量与编码特征FX进行压缩,得到固定长度的表示,并直接输入LLM或进行交叉注意力融合
Q-Former:从FX中提取相关特征,作为提示PX
P-Former:生成参考提示,对Q-Former生成的提示进行对齐约束

2.3 LLM骨干网络(LLM Backbone):

用预训练的大型语言模型作为核心,负责对齐后的特征进行语义理解、推理和决策,并输出文本输出t和来自其他模态的信号令牌SX。常用的LLM包括:

  • Flan-T5
  • ChatGLM
  • UL2
  • Qwen
  • Chinchilla
  • OPT
  • PaLM
  • LLaMA
  • LLaMA-2
  • Vicuna

三、训练流程

模态编码器、LLM 骨干和模态生成器通常保持冻结状态
MM-LLMs 的训练流程可以划分为两个主要阶段:MM PT 和 MM IT。

3.1 MM PT (任意模态到文字)

在 PT 阶段,通常利用 X-Text 数据集(见附录),通过优化预定义的目标来训练输入和输出映射器
以实现各种模态之间的对齐。 X-Text 数据集一般包括图像-文本、视频-文本和音频-文本。

3.2 MM IT (指令微调 )

指令微调=监督微调(SFT)和根据人类反馈进行强化学习(RLHF)

MM IT 是一种使用指令格式的数据集对预训练的 MM-LLMs 进行微调的方法
通过这个过程,MM-LLMs 可以通过遵循新的指令来泛化到未见过的任务,从而提高 zero-shot 性能。
SFT 数据集可以构造为单轮 QA 或多轮对话。

四、部分模型性能测评

红色代表在该项测评最高分,蓝色是第二高分

23.12 VILA: On Pre-training for Visual Language Models
更高的图像分辨率可以为模型提供更多的视觉细节,有利于需要细粒度细节的任务。
例如,LLaVA-1.5 和 VILA 使用了 336336 的分辨率,
而 Qwen-VL 和 MiniGPT-v2 则采用了 448
448 的分辨率
在这里插入图片描述

总结

当前的 MM-LLMs 主要支持以下模态:图像、视频、音频、3D 和文本

移动/轻量级部署:在资源受限的平台上部署 MM-LLMs 并同时实现最佳性能,比如低功耗移动设备和物联网设备,轻量级实现至关重要。在这方面的一个显著进展是 MobileVLM

最近,有许多类似的研究致力于轻量化 MM-LLMs,在性能相当或几乎没有损失的情况下,实现了高效的计算和推理,包括 TinyGPT-4、Vary-toy、Mobile-Agent、MoE-LLaVA 和 MobileVLM V2。然而,这一途径需要进一步探索以实现进一步的发展

一些发展趋势:

  1. 从专注于多模态理解到生成特定模态,进一步发展成为任意-任意模态转换(例如,MiniGPT-4 -> MiniGPT-5 -> NExT-GPT);

  2. 从 MM PT 进展到 SFT,再到 RLHF,训练流程不断完善,努力更好地与人类意图保持一致,并增强模型的对话交互能力(例如,BLIP-2 -> InstructBLIP -> DRESS);

  3. 接纳多样化的模态扩展(例如,BLIP-2 -> X-LLM 和 InstructBLIP -> X-InstructBLIP);

  4. 加入更高质量的训练数据集(例如,LLaVA -> LLaVA-1.5);(5)采用更高效的模型架构,从 BLIP-2 和 DLP 中复杂的 Q- 和 P-Former 输入映射模块过渡到 VILA 中更简单但同样有效的线性映射器。

附录

模型按功能分类

I:图像,V:视频,A/S:音频/语音(Audio/Speech),T:文本。
I D I_D ID:文档理解, I B I_B IB:输出边界框, I M I_M IM:输出分割掩码和 I R I_R IR:输出检索到的图像。
在这里插入图片描述

X-Text 数据集的详细信息见表 3。

在这里插入图片描述

指令微调的数据集

在这里插入图片描述

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

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

相关文章

我写了个ImageWindow应用

文章目录 0 引言1 应用简介2 主要功能和特点2.1 多图像同/异步像素级对比2.2 支持多达30种图像格式2.3 高效率的图像处理性能 3 简明使用教程3.1 软件下载安装与更新3.1.1 软件下载与安装3.1.2 软件更新 3.2 多视窗添加并自动最优排列3.3 多样化图像导入方式3.4 自动切换显示模…

node 之 模块化

1.什么是模块化 模块化是指解决一个复杂问题时,自顶向下逐层把系统划分成若干模块的过程。对于整个系统来说,模块是可组合、分解和更换的单元。 编程领域中的模块化 编程领域中的模块化,就是遵守固定的规则,把一个大文件拆成独立并…

怎么调用文心一言的api接口生成一个简单的聊天机器人(python代码)

寒假在学习大模型,但也没弄出多少眉目,电脑性能还有点小问题,大模型总跑不起来,只会简单调用一下现有的大模型的接口,例如:文心一言,下面展示一下代码: import tkinter as tk impor…

Mysql安装教程

一、下载 点开下面的链接:https://dev.mysql.com/downloads/mysql/ 点击Download 就可以下载对应的安装包了, 安装包如下: 二、解压 下载完成后我们得到的是一个压缩包,将其解压,我们就可以得到MySQL 8.0.31 的软件本体了(就是一个文件夹…

第三节-docker-cs架构分析

一、组成 docker engine:docker-client、rest-api、dockerd containerd: 1、管理容器生命周期 2、拉取/推送镜像 3、存储管理 4、调用runc 5、管理网络 containerd-shim:相当于一个驱动,containerd通过containerd-shim驱使…

关于静态应用程序安全测试(SAST)的自动修复(AutoFix)

SAST(Static Application Security Testing,静态应用程序安全测试)具是一种在软件工程中使用的安全解决方案,它主要用于在程序员编写好源代码后,无需经过编译器编译,直接对源代码进行扫描,以找出…

MYSQL05高级_查看修改存储引擎、InnoDB和MyISAM对比、其他存储引擎介绍

文章目录 ①. 查看、修改存储引擎②. InnoDB和MyISAM对比③. Archive引擎 - 归档④. Blackhole引擎丢数据⑤. CSV - 引擎⑥. Memory引擎 - 内存表⑦. Federated引擎 - 访问远程表⑧. Merge引擎 - 管理多个MyISAM⑨. NDB引擎 - 集群专用 ①. 查看、修改存储引擎 ①. 查看mysql提…

Kotlin的各种骚气语法

1.奇怪的中括号? 前几星期在群里见群友问这种是什么鬼,kt中有这种语法吗? 但其实这种是重写的操作符,分别是重写了setter和getter,类似于list[0]1这样 上面的两个方法声明如下: 不过这种语法很容易引起歧义,所以除非很适合的情况下不建议重写 ps:更多的操作符重载参考最下…

uniapp 部署h5,pdf预览

1.hubuilderx 打包h5。 2.上传部署包到服务器。 解压部署包:unzip h5.zip 。 3.nginx配置。 user root; worker_processes 1; #worker_cpu_affinity 0001 0010 0100 1000; #error_log logs/error.log; #error_log logs/error.log notice; error_log /var/l…

【重温设计模式】桥接模式及其Java示例

【重温设计模式】桥接模式及其Java示例 桥接模式的介绍 今天我们要探讨的,正是一种名为“桥接模式”的设计模式。桥接模式,英文名Bridge Pattern,是一种结构型设计模式,它的主要目的是将抽象部分与实现部分分离,使得两…

Windows Docker 部署 Redis

部署 Redis 打开 Docker Desktop,切换到 Linux 内核。然后在 PowerShell 执行下面命令,即可启动一个 redis 服务 docker run -d --name redis -p 6379:6379 redis-如果需要自启动,加 --restart always 参数即可。 连接 Redis 使用客户端连…

python dictionary 字典

Python 字典 字典是另一种可变容器模型,且可存储任意类型对象。 字典的每个键值 key>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下 d {key1 : value1, key2 : value2, key3 : value3 }dict 作…

Vue依赖注入之Provide/Inject

1. 使用<script setup> 父组件 <template><div>这里是父组件的message值:{{ message }}</div><br /><div>这里是父组件的count值:{{ count }}</div><br /><classtest /> </template> <script setup> impor…

SpringBoot项目中如何结合Mybatis进行数据库查询

在Spring Boot项目中使用Mybatis进行数据库操作是一种常见的实现方式。下面我将展示如何在Spring Boot项目中整合Mybatis。这个示例将包括几个主要部分&#xff1a;项目依赖配置、配置文件、实体类、Mapper接口及其XML配置文件、服务类、以及一个简单的控制器。 1. 项目依赖配…

Linux Centos7配置SSH免密登录

Linux Centos7配置SSH免密登录 配置SSH免密登录说明&#xff1a; 分两步 第一步、给Server A生成密钥对 第二步、给Server B授权 生成密钥对之后&#xff0c;我们可以看看它保存的目录下的文件。 接下来我们就要把Server A&#xff08;10.1.1.74&#xff09;的公钥拷贝到Se…

AI新秀Mistral:“Open AI“ 新时代

最近互联网出现不少类似“下一代openai”、“GPT-4最强竞品”、“法国AI独角兽”、“欧洲的OpenAI”、“微软新宠儿”.... 的文章&#xff0c;都会附带一张图片&#xff0c;就是下面这张&#xff1a; 那么到底发生了什么&#xff0c;出来个什么东西呢&#xff1f;就是本文的主…

跟着cherno手搓游戏引擎【28】第一个游戏!源码解读!逐行注释!

源码解读&#xff1a; GameLayer层级&#xff1a;在构造函数中&#xff1a;创建窗口和相机&#xff0c;对随机数种子初始化&#xff1b; 在OnAttach方法中&#xff1a;初始化关卡&#xff1a;加载资源初始化地图信息&#xff1b;设置字体&#xff1b; 在OnUpdate方法中&…

从单体服务到微服务:多模式 Web 应用开发记录<三>预初始化属性

相关文章&#xff1a; 多模式 Web 应用开发记录<一>背景&全局变量优化多模式 Web 应用开发记录<二>自己动手写一个 Struts 开头先看一个简单的例子&#xff0c;这是 ftl 文件的一个表单&#xff1a; <form id"validateForm" action"#&quo…

【第十天】C++函数对象/仿函数、谓词、适配器及常见algorithm算法

一、函数对象 重载了函数调用运算符()的类 实例化的对象叫函数对象&#xff0c;也叫仿函数。 如果函数对象 有一个参数 叫&#xff1a;一元函数对象/仿函数如果函数对象 有二个参数 叫&#xff1a;二元函数对象/仿函数如果函数对象 有三个及以上参数 叫&#xff1a;多元函数对…

K8S存储卷与PV,PVC

一、前言 Kubernetes&#xff08;K8s&#xff09;中的存储卷是用于在容器之间共享数据的一种机制。存储卷可以在多个Pod之间共享数据&#xff0c;并且可以保持数据的持久性&#xff0c;即使Pod被重新调度或者删除&#xff0c;数据也不会丢失。 Kubernetes支持多种类型的存储卷…