腾讯优图开源多模态大模型VITA : GPT-4o的简易平替!

news2024/11/18 1:46:11

Abs:https://arxiv.org/pdf/2408.05211
Demo:https://vita-home.github.io/
Code:https://github.com/VITA-MLLM/VITA

 

        GPT-4o 的卓越多模态能力和用户交互体验在实际应用中非常重要,但没有开源模型在这两个领域同时表现出色。本文介绍了 VITA,这是首个能够同时处理和分析视频、图像、文本和音频模态的开源多模态大语言模型(MLLM),并且具备先进的多模态交互体验。我们在以下三个关键特性,与现有的开源 MLLM 有所区分:

  •  全方位多模态理解能力:VITA 展示了强大的多语言、视觉和音频理解基础能力,并在多种单模态和多模态基准测试中表现优异。

  • 非唤醒交互:VITA 可以在不需要唤醒词或按钮的情况下被激活,并对环境中的用户音频问题做出响应。

  • 音频打断交互:VITA 能够实时跟踪和筛选外部查询,允许用户随时以新问题打断模型的生成,VITA 将根据新的查询做出相应的响应。

1.VITA 模型的详细介绍

        VITA 的整体训练流程如上图所示,由三个阶段组成:LLM指令微调、多模态对齐和多模态指令微调

1.1LLM 指令微调

        我们选择 Mixtral 8x7B 作为基础语言模型,它是具有稀疏专家混合(SMoE)架构的代表性 LLM,性能在开源 LLM 中名列前茅,是我们工作的理想起点。然而,我们观察到官方的 Mixtral 模型在理解中文方面表现有限。为此,我们扩展了基础模型的中文词汇量,将词汇量从 32,000 增加到 51,747。这一扩展不仅增强了双语(中英文)理解能力,还减少了相同文本下的词元数量,从而提高了推理效率。在扩展词汇后,我们使用 500 万条合成的双语语料库进行纯文本指令微调。

1.2多模态对齐

        在这一阶段,我们旨在弥合文本与其他模态之间的表示差距,为多模态理解奠定基础。

视觉模态

        视觉编码器:我们使用 InternViT-300M-448px 作为视觉编码器,该编码器接收 448×448 的图像作为输入,通过一个简单的两层 MLP 视觉连接器生成 256 个词元。对于高分辨率图像输入,我们实现了动态补丁策略来捕捉局部细节。视频被视为图像的特殊情况进行处理。如果视频长度小于 4 秒,我们均匀采样 4 帧;如果视频长度在 4 到 16 秒之间,我们每秒采样一帧;对于超过 16 秒的视频,我们均匀采样 16 帧。为了防止引入过多的视觉词元,我们不对视频的单个帧执行动态补丁。

        视觉对齐:在视觉对齐阶段,我们仅训练视觉连接器。表 1 总结了使用的训练数据(不包括纯文本SFT部分)。此外,在此阶段我们不使用音频问题。

  • 对于一般图像描述任务,我们引入了来自 ShareGPT4V 的 GPT-4V 生成部分,以确保数据质量。我们还引入了 Allava-Caption 和 ShareGTP4o-Image,并补充了一些由现有 MLLM 生成的中文图像描述。

  •  对于一般图像问答(QA)任务,我们初步收集了三个数据集:LLaVA-Mixture-sample、Lvis-Instruct 和 ScienceQA。我们使用现有的 MLLM 生成了额外的 21.8K 中文 QA 数据。此外,我们从 LLaVA-150K 数据集中移除了标题子集,并将其余部分翻译为中文。

  • 对于 OCR 和图表任务,我们引入了 Anyword-3M、ICDAR2019-LSVT、ICDAR2017-RCTW、Open-Chart(包括 ChartQA、DVQA、InfoVQA、Pew 和 OpenCQA),以及一些由现有 MLLM 从其他开源数据中生成的合成数据。

  • 对于一般视频描述任务,我们使用 ShareGemini 数据集。

  •  对于一般视频 QA 任务,我们使用现有的 MLLM 重新标注了 Video-ChatGPT 和 VideoChat2 的开源数据。

        数据拼接:对于纯文本数据和图像数据,我们的目标是将上下文长度拼接到 6K 词元,如上图所示。视频数据则不进行拼接。拼接不同的数据带来了两个好处:一是支持更长的上下文长度,使得从单一到多图像-问题交互成为可能,从而实现更灵活的输入形式和延长的上下文;二是提高了计算效率,因为视频帧通常包含大量视觉词元。通过拼接图像-问题对,我们在训练批次中保持了词元数量的平衡,从而提高了计算效率。此外,我们发现使用拼接数据训练的模型在性能上与未拼接数据的模型表现相当。

音频模态

        音频编码器:输入音频首先通过 Mel 频率滤波器块处理,该块将音频信号分解为 Mel 频率尺度上的各个频带,模拟人类对声音的非线性感知。随后,我们使用 4 层 CNN 下采样层和 24 层的变换器,共计 341M 参数,处理输入特征。我们采用简单的两层 MLP 作为音频-文本模态连接器。最终,每 2 秒的音频输入被编码为 25 个词元。

        音频对齐:在对齐任务中,我们选择了自动语音识别(ASR)。我们的数据集包括 Wenetspeech,该数据集涵盖了超过 10,000 小时的多领域语音识别数据,主要集中在中文任务上。同样,Gigaspeech 也包含 10,000 小时的高质量音频数据,大部分数据用于英语语音识别任务。另一个任务是音频字幕生成,依赖于 Wavcaps 的 AudioSet SL 子集,该数据集包含 400K 个音频片段及其对应的音频字幕。在对齐过程中,音频编码器和连接器都进行了训练。

1.3多模态指令微调

        在这一阶段,我们对模型进行指令微调,以增强其遵循指令的能力(文本 & 音频指令)。

训练数据

        数据构建:指令微调阶段的数据来源与对齐阶段相同(见表1),并进行了如下改进:

  •  音频问题替换:我们使用 TTS 技术(如 GPT-SoVITS6)将大约一半的问题随机替换为其音频版本,以提升模型对音频查询的理解能力和指令跟随能力。音频问题和文本问题的数量见表1。

  •  系统提示设置:设置不同的系统提示,以避免不同类型数据之间的冲突(见下表)。例如,有些问题可以基于视觉信息或模型自身知识进行回答,这可能会导致冲突。此外,由于图像数据的补丁类似于视频数据的多个帧,可能会使模型感到困惑。系统提示明确区分不同的数据类型,使其更易于理解。

        噪声音频构建:在人机交互过程中,并非所有的音频输入都需要响应,这些被称为噪声音频。一个具有良好交互能力的系统应能主动识别音频类型,并有选择性地执行后续输出。为此,我们需要构建各种噪声音频样本以供模型识别。具体而言,我们从现有的多模态和单模态 QA 数据中随机抽取 474K 个句子。这些负样本文本集中在不需要用户响应的非查询相关内容上,其长度分布与正向问题的长度分布一致。然后,我们使用 TTS 工具将这些句子转换为音频。噪声音频样本的构建使模型能够识别不需要响应的音频输入,这有助于实现非唤醒交互。具体的训练策略将在以下部分详细说明。

训练过程

        根据上述构建的 QA 对,模型需要区分三种类型的查询:

  •  查询音频:问题由音频发起。

  •  噪声音频:输入为音频,但不包含问题。

  •  查询文本:问题由文本发起。

        基于这些查询类型,我们设计了三种状态标记 <1>、<2> 和 <3>。在训练阶段,我们在答案的开头插入对应的状态标记,使模型能够灵活处理不同的交互行为。具体如下:

  •  状态标记 <1> 表示问题输入为查询音频。在这种情况下,模型的输出需要以文本或通过 TTS 工具转换的语音形式呈现给用户。

  • 状态标记 <2> 表示问题输入为噪声音频。模型应输出 EOS 标记作为终止符。然而,我们发现训练过程中突然终止输出可能会显著降低性能。因此,我们将噪声音频对应的文本发送给 LLM,并使用其输出文本作为训练目标。在推理过程中,<2> 作为另一种特殊的 EOS 标记。

  • 状态标记 <3> 表示问题为纯文本,用于区分训练集中的前两种查询。

        在训练过程中,视觉和音频编码器保持冻结状态,而连接器与 Mixtral 8×7B 一起进行训练。

2.模型部署:双工策略

        在这一部分,我们主要讨论如何实现两种交互功能:非唤醒交互和音频中断交互。

        非唤醒交互

        非唤醒交互意味着模型可以在不需要唤醒词或按钮的情况下被激活,并对环境中的用户音频问题做出回应。部署过程必须满足以下要求:

  •  实时跟踪环境声音:这涉及确定音频内容是否属于人类语言。

  • 过滤噪声音频:模型应仅对有效的用户查询音频作出响应。

        对于第一个要求,现有的语音活动检测(VAD)可以提供帮助。VITA 使用 SileroVAD [45],该系统经过大规模语料库训练,涵盖超过 6,000 种语言,并且能够在各种背景噪声下表现良好。对于第二个要求,我们利用第 3.3.2 节中描述的状态标记 <2>。这使模型能够自动区分输入音频是否为有效查询。如果输入为非查询类型,模型将直接终止推理,从而仅对查询类型的输入作出响应。

音频中断交互

        音频中断交互允许用户随时用新问题打断模型的生成过程。为实现这一点,部署环境必须满足以下要求:

  • 实时跟踪和过滤外部查询:在生成响应的同时,系统必须实时跟踪和过滤外部查询。

  • 回答新问题:当出现新问题时,系统必须停止当前生成,整合历史上下文,并对当前查询作出回应。

        为实现这一目标,我们提出了双工部署框架。如上图所示,两个 VITA 模型同时部署。在典型条件下,生成模型负责回答用户查询。同时,监控模型在生成过程中检测环境声音。它忽略非查询用户声音(即噪声音频),但在检测到查询音频时会停止生成模型的进度。监控模型随后整合历史上下文,并对最新的用户查询做出回应。这时,生成模型和监控模型的身份会发生转变。

3.评估

3.1语言表现

        为了验证我们训练过程对语言模型的有效性,我们将训练后的模型“Mixtral 8x7B Ours”与官方版本“Mixtral 8x7B Instruct”进行对比,评估使用了四个数据集:C-EVAL、AGIEVAL、MMLU 和 GSM8K。这些数据集涵盖了包括普通多项选择题、多学科问答,以及数学和逻辑推理任务的各种场景,涉及中文和英文上下文。结果如上表所示,我们的训练显著提升了模型在中文评估集(C-EVAL 和 AGIEVAL)上的能力,同时保持了在英文相关基准(MMLU)上的原有性能,并在数学推理任务(GSM8K)中显示出显著的改进。 

3.2音频表现

 

         为了验证我们模型所学的语音表示的鲁棒性,我们在 Wenetspeech 和 Librispeech数据集上进行了测试。Wenetspeech 具有两个评估拆分:test_net 和 test_meeting。前者的数据源与训练数据更为接近,较容易;后者则具有更大的挑战性。作为我们模型的留出数据集,Librispeech 评估了模型在未见数据集上的泛化能力。它有四个评估拆分:“dev” 开头的是验证集,“test” 开头的是测试集。“Clean” 指较不具挑战性的集合,而 “other” 指较具挑战性的集合。我们可以看到,VITA 在 ASR 基准上取得了可观的结果。

3.3多模态表现

为了评估 VITA 的多模态能力,我们在四个代表性基准上进行评估,包括 MME 、OCRBench、HallusionBench 和 Video-MME 。如上图所示,在图像理解方面,VITA 超越了图像专用的开源模型 LLaVA-Next,接近于闭源模型 Gemini 1.5 Pro。在视频理解方面,VITA 超过了视频专用的开源模型 Video-CCAM。尽管 VITA 与视频专用的 LLaVA-Next-Video 之间存在差距,但鉴于 VITA 支持更广泛的模态并优先考虑交互,这种差距是可以接受的。然而,值得注意的是,当前开源模型与专有模型在视频理解能力方面仍存在较大差距。

4.结论与未来工作

        在本文中,我们介绍了 VITA,一个强大的开源多模态大语言模型,它将视频、图像、文本和音频理解整合到一个统一的框架中,并提供了先进的交互体验。除了强大的多模态基础能力,VITA 还在开源社区中开创了新的多模态交互方式,包括非唤醒交互和音频中断交互。然而,当前版本仍面临以下限制:

  • 基础能力的提升:虽然 VITA 在单模态和多模态任务中相较于领先的开源模型表现出色,但与专有模型相比仍存在显著差距。

  • 噪声音频构建的优化:使用现有数据的非查询响应作为噪声音频样本是一种简单而有效的方法。然而,VITA 有时会将噪声音频误分类为查询音频,这突显了需要更细致的构建方法。

  • 与 LLM 联合构建端到端 TTS:我们目前使用额外的 TTS 工具将 LLM 生成的文本转换为语音,这一过程比较耗时。如果能够将 TTS 与 LLM 结合,实现端到端的语音输出,可能会大大提升实时交互性能。

未来的工作将集中在解决这些限制,并探索以下方向:

  •  提升多模态基础能力:引入更多数据并改进模型架构,以缩小与专有模型的性能差距。

  • 优化噪声音频识别:开发更复杂的噪声音频识别算法,以提高模型过滤无关音频的能力。

  • 实现端到端 TTS:研究如何将 TTS 功能直接集成到 LLM 中,以实现更高效的语音生成和实时交互。

我们期待在未来版本的 VITA 中克服这些挑战,并继续推动开源多模态模型的发展。

 

 

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

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

相关文章

【c语言】整数在内存中的储存(大小端字节序)

整数在内存中的储存&#xff08;大小端字节序&#xff09; 1.整数在内存中的储存 2.大小端字节序 3.整数在内存中储存例子 4.字节序判断 5.死循环现象 文章目录 整数在内存中的储存&#xff08;大小端字节序&#xff09;整数在内存中的储存大小端字节序什么是大小端为什么会有…

TinaLinux NPU开发

MobileNet V2 MobileNet V2是一种轻量级的卷积神经网络&#xff08;CNN&#xff09;架构&#xff0c;专门设计用于在移动设备和嵌入式设备上进行计算资源受限的实时图像分类和目标检测任务。 以下是MobileNet V2的一些关键特点和创新之处&#xff1a; Depthwise Separable Co…

鸿蒙OS promptAction的使用

效果如下&#xff1a; import { promptAction } from kit.ArkUIlet customDialogId: number 0Builder function customDialogBuilder() {Column() {Blank().height(30)Text(确定要删除吗&#xff1f;).fontSize(15)Blank().height(40)Row() {Button("取消").onClick…

【中仕公考怎么样】2024下半年事业编联考冲刺!

多地下半年事业单位联考公告发布!11月2日笔试! 笔试时间&#xff1a;2024年11月2日(周六)上午。 08:30—10:00 《职业能力倾向测验》10:00—12:00 《综合应用能力》 考试科目&#xff1a; 综合应用能力(A类) 社会科学专技类(B类) 自然科学专技类(C类) 中小学教师类(D类) 医…

.[RestoreBackup@cock.li].SRC勒索病毒数据怎么处理|数据解密恢复

导言&#xff1a; 在数字化时代&#xff0c;信息技术的飞速发展极大地促进了社会进步与经济繁荣&#xff0c;但同时也为网络犯罪分子提供了前所未有的便利。近年来&#xff0c;勒索病毒作为一种新兴的网络威胁&#xff0c;正以前所未有的速度和规模肆虐全球&#xff0c;给个人…

鸿蒙实现在图片上进行标注

一.实现思路 现在需求是&#xff1a;后端会返回在这张图片上的相对位置&#xff0c;然后前端这边需要在图片上进行标注&#xff0c;就是画个框框圈起来&#xff0c;返回的数据里包括当前框的x,y坐标和图片大小&#xff0c;大体思路就是使用canvas绘制&#xff0c;使用鸿蒙的st…

游戏app激励视频广告预加载位置,最大化广告收益

最近收到很多游戏类App开发者咨询激励视频广告&#xff0c;在帮助开发者分析产品的时候&#xff0c;特别是一些初级开发者的App产品&#xff0c;发现用户进入这些App&#xff0c;或者打开某个功能时就弹出激励视频广告&#xff0c;这样是违规的&#xff0c;并且用户看完广告也是…

golang每日一库——casbin开源的访问控制框架

文章目录 casbincasbin工作原理——PERM请求——Request策略——Policy匹配器——Matcher效果——Effect Model语法Request定义Policy定义Policy effect定义Matchers定义 编辑器例子1例子2例子3例子4例子5例子6例子7例子8例子9 casbin Casbin是一个强大且高效的开源访问控制库…

软件测试基础:功能测试知识详解

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、测试项目启动与研读需求文档 &#xff08;一&#xff09; 组建测试团队 1、测试团队中的角色 2、测试团队的基本责任 尽早地发现软件程序、系统或产品中…

postman使用指北

粘贴 cURL 请求 环境设置 作用&#xff1a;方便切换不同环境&#xff0c;比如配置本地环境/测试环境/线上环境&#xff0c;通过切换环境就可以请求对应环境的接口 配置环境 切换环境请求 Pre-request Script 可以在发送请求之前执行一些脚本操作 1. 常用指令 // 获取请求方…

C++中const的用法

const 我们都见过&#xff0c;但是今天&#xff0c;我们会从头开始重新再说const的所有用法。 一、const修饰普通变量 当我们定义一个变量时&#xff0c;前面加上const修饰的话&#xff0c;这个变量将不再能被修改&#xff0c;称之为常变量。例如&#xff1a; int a10; a20;…

ESD分类和等级划分

1、HBM&#xff1a;Human Body Model&#xff0c;人体模型 2、CDM&#xff1a;Charged Device Model&#xff0c;充电器件模型 3、MM&#xff1a;Machine Model&#xff0c;机器模型&#xff1a; 数据来源网站

总结Java文件操作

文件&#xff1a;文件是一个广义的概念 在操作系统中文件可以指硬件资源和软件资源为文件&#xff1b;也可以指存储在硬盘上的文件&#xff0c;文件夹也是文件&#xff1b;文件夹是通俗的叫法&#xff0c;专业的叫法是目录&#xff1b; 查看我们的硬盘&#xff0c;我们可以发…

C语言分析数据在内存中的存储一:(整形在内存中的存储)

数据类型介绍 我们知道C语言有很多内置类型&#xff1a; char //字符数据类型 1 个字节short //短整型 2 个字节int //整形 4 个字节long //长整形 4 个字节long long //更长的整形 8 个字节float //单精度浮点数 4 个字节dou…

Linux学习记录(十三)----信号

文章目录 6.信号1.信号的发送&#xff08;发送信号进程&#xff09;kill:raise:alarm : 2.信号的接收3.信号的处理信号父子进程间通信 7.信号灯(semaphore)创建信号灯函数控制信号灯函数PV操作 声明&#xff1a;本人撰写的为学习笔记内容来源于网络&#xff0c;如有侵权联系删除…

SQL Server中如何自动抓取阻塞

背景 当发数据库生阻塞时&#xff0c;可以通过SQL语句来获取当前阻塞的会话情况&#xff0c;可以得到下面的信息 说明&#xff1a;会话55阻塞了会话53。两个会话都执行了update test set fid10 where fid0。 但我们也经常碰到客户生产环境出现阻塞&#xff0c;由于不会抓取或者…

YOLOv8实现任意目录下命令行训练

问题 当你使用YOLOv8命令行训练模型的时候&#xff0c;如果当前执行的目录下没有相关的预训练模型文件&#xff0c;YOLOv8就会自动下载模型权重文件。这个是一个正常操作&#xff0c;但是你还会发现&#xff0c;当你在参数model中指定已有的&#xff0c;在其他目录下的预训练模…

实际案例:某日化集团主数据建设项目

一、建设背景1. 背景分析当前&#xff0c;该日化企业集团的主数据尚处于分散状态&#xff0c;分布于各业务系统中&#xff0c;缺乏一套专业的主数据管理系统进行统一管理。因此&#xff0c;数据无法在全集团范围内共享使用&#xff0c;且在业务端到端的流程拉通时&#xff0c;数…

WPS关闭后,进程依然在后台运行的解决办法

问题 wps启动后 在启动wps后&#xff0c;什么都不做&#xff0c;打开进程管理器&#xff0c;发现居然运行了3个wps进程&#xff1a; win10只会显示wps进程&#xff1a; win11显示比较准确&#xff1a; 关闭后 在关闭wps&#xff0c;再去任务管理器查看&#xff0c;发现在…

游戏开发设计模式之策略模式

目录 策略模式在游戏开发中的具体应用案例有哪些&#xff1f; 如何在Unity中实现策略模式以优化角色行为和AI策略&#xff1f; 策略模式与其他设计模式&#xff08;如观察者模式、状态模式&#xff09;在游戏开发中的比较优势是什么&#xff1f; 策略模式的优势 观察者模式…