引言
庙内无僧风扫地,寺中少灯月照明。
小伙伴们好,我是微信公众号《小窗幽记机器学习》的小编:买黑神话的小男孩,紧接卖黑神话的小女孩的小作文,今天这篇小作文主要介绍腾讯开源(截至2024年8月25日尚未真正开源,只是在github创建了Repository)的GPT-4o平替方案:VITA。
简介
VITA是腾讯优图实验室在交互式全模态大语言模型方面的一次新探索。近年来,大语言模型(LLM)和多模态大语言模型(MLLM)的快速发展给人工智能领域带来了巨大变革。特别是GPT-4等模型展现出的强大多模态能力和自然交互体验,为MLLM的实际应用奠定了基础。然而,开源社区在这一领域还存在明显的差距。为了推动开源MLLM的发展,来自腾讯优图实验室等机构的研究人员提出了VITA模型,这是首个开源的能够同时处理视频、图像、文本和音频的多模态大语言模型,并且具备先进的多模态交互体验。
VITA模型的主要特点和创新点包括:
-
全模态处理能力: VITA可以同时处理视频、图像、文本和音频四种模态的输入,实现了真正的全模态融合。
-
双语理解: VITA在英语和中文两种语言上都具备出色的理解和生成能力。
-
自然交互体验: VITA引入了无唤醒交互和音频打断等创新交互功能,大幅提升了人机交互的自然度。
-
开源可用: VITA完全开源了模型、训练代码和推理部署框架,为开源社区提供了宝贵的资源。
项目主页:
https://vita-home.github.io/
论文地址:
https://arxiv.org/abs/2408.05211
代码仓库:
https://github.com/VITA-MLLM/VITA (截至2024年8月25日,尚未上传正式代码),静待花开~
VITA
在创新交互方面,VITA模型在多模态交互具体有两项重要创新:
-
无唤醒交互 传统的语音助手需要唤醒词(如"Hey Siri")来激活,这在实际使用中并不自然。VITA通过引入状态token,教会模型自动识别输入音频的类型,从而实现了无需唤醒词的自然交互。模型能够自动过滤背景噪音和非查询人声,只对有效的查询音频做出响应。
-
音频打断交互 在传统系统中,模型生成输出时无法接受新的输入。VITA采用了双工方案来解决这一问题:部署两个VITA模型,一个负责生成对当前查询的响应,另一个持续监控新的输入。当用户打断并提出新问题时,生成过程会暂停,模型立即响应最新的查询。这大大提高了交互的自然度和效率。
Fig 1:VITA的交互。传统音频交互需要预定义的唤醒词,例如,每次你提问时说“嗨!Siri∼”,或者一个按钮来控制输入问题音频(限制1)。当模型生成输出时,人机交互总是被阻塞,因为先前的系统只能按顺序响应输入查询(限制2)。相比之下,一方面,与先前的方法不同,其中音频、文本和视觉总是分开的,VITA支持这些模态端到端。另一方面,VITA对多模态交互做出了两点贡献。非唤醒交互:VITA自动过滤背景噪音,如非查询人声,从而消除了唤醒词和按钮的需求。音频中断交互:如果用户用另一个问题打断,生成过程会暂停,模型会立即响应最新的查询。
以下主要介绍VITA模型的核心架构、训练数据和训练流程。
模型架构
VITA的模型架构如下Fig 2所示。
Fig 2:VITA能够处理纯文本/音频形式的输入,以及视频/图像结合文本/音频的输入。此外,我们为不同的查询输入设置不同的状态令牌。<1>对应于有效的查询音频,例如“世界上最大的动物是什么?”,我们期望模型给出回应。<2>对应于嘈杂的音频,例如环境中有人叫我去吃饭,我们期望模型不回复。<3>对应于查询文本,即用户以文本形式提出的问题。在训练阶段,我们试图教会模型自动区分不同的输入查询。在部署阶段,通过<2>我们可以实现非唤醒交互。基于此,我们进一步引入了一种双工方案用于音频中断交互。两个模型同时运行,生成模型负责处理用户查询。当生成模型开始工作时,另一个模型监视环境。如果用户用另一个有效的音频查询打断,监视模型会汇总历史上下文来回应最新的查询,同时生成模型暂停并转为监视状态,即两个模型交换身份。
VITA模型以Mixtral 8×7B作为语言模型的基础,通过三个主要阶段的训练来实现其多模态和交互能力:
-
双语指令微调 研究人员首先扩展了Mixtral 8×7B的词表,将词表大小从32,000扩展到51,747,以增强其中文理解能力。随后使用500万条高质量的双语文本语料进行指令微调,使模型在中英文上都具备出色的表现。
-
多模态对齐 在这一阶段,研究人员致力于缩小文本与其他模态(视频、图像、音频)之间的表示差距。他们采用了InternViT-300M-448px作为视觉编码器,通过动态分块策略来处理高分辨率图像输入。对于视频,根据长度采样4-16帧进行处理。研究人员收集了大量高质量的多模态数据用于训练,包括图像描述、问答、OCR和图表理解、视频描述和问答等多个任务。
-
多模态指令微调 在最后阶段,研究人员构建了精心设计的多模态指令数据集,教导模型遵循文本或音频指令来理解图像或视频。他们还引入了状态标记来区分不同类型的输入查询,为后续的多模态人机交互奠定基础。
Fig 3:VITA的训练流程。第一阶段通过扩大词汇表并利用高质量的双语文本语料库对Mixtral 8×7B语言模型进行 指令微调 ,从而使其熟练掌握中文和英文。第二阶段 多模态对齐 ,将各个encoder与LLM连接起来,以处理各种模态。通过大量高质量的多模态数据,将文本特征空间与视频、图像和音频的特征空间对齐。最后一阶段多模态指令微调,使得模型遵循文本或音频指令以理解图像或视频。此外,专门设计的状态token用于区分输入query的类型,从而促进随后的多模态人机交互。
训练数据和方法
研究人员为VITA收集和构建了大量高质量的训练数据:
-
图像相关任务:使用了ShareGPT4V、Allava-Caption、ShareGTP4o-Image等数据集,并补充了中文图像描述数据。
-
图像问答:采用LLaVA-Mixture-sample、Lvis-Instruct、ScienceQA等数据集,并生成了额外的中文问答数据。
-
OCR和图表任务:使用Anyword-3M、ICDAR2019-LSVT、ICDAR2017-RCTW、Open-Chart等数据集,并生成了补充数据。
-
视频任务:使用ShareGemini数据集进行视频描述,并重新标注了Video-ChatGPT和VideoChat2的数据用于视频问答。
-
纯文本数据:从500万条纯文本数据中采样80万条,以维持模型的文本理解能力。
在数据处理方面,研究人员采用了数据拼接策略,将纯文本和图像数据的上下文长度统一为6000个token,以提高训练效率。
多模态对齐
视觉模态
-
视觉Encoder使用 InternViT-300M-448px 作为视觉编码器,该编码器接收 448×448 的图像作为输入,通过一个简单的两层 MLP 视觉连接器生成 256 个词元。对于高分辨率图像输入,通过动态补丁策略来捕捉局部细节。视频被视为图像的特殊情况进行处理。如果视频长度小于 4 秒,均匀采样 4 帧;如果视频长度在 4 到 16 秒之间,则每秒采样一帧;对于超过 16 秒的视频,则均匀采样 16 帧。为了防止引入过多的视觉词元,不对视频的单个帧执行动态补丁。
-
视觉对齐在视觉对齐阶段,仅训练视觉连接器。表 1 总结了使用的训练数据(不包括纯文本SFT部分)。此外,这个阶段不使用音频形式的问题(audio questions)。
此外,在多模态指令微调阶段,从500万个纯文本数据中采样80万个条目,以维持LLM的文本理解能力。它用于多模态指令微调而不是视觉对齐,因为后者的LLM参数是固定的。
-
对于一般的图像描述任务,引入了 ShareGPT4V 中 GPT-4V 生成的数据,以确保数据质量。此外,还引入了 Allava-Caption 和 ShareGTP4o-Image数据集,并补充了一些由现有 MLLM (没有具体说是哪些)生成的中文图像描述。
-
对于一般的图像问答(QA)任务,初步收集了三个数据集:LLaVA-Mixture-sample、Lvis-Instruct 和 ScienceQA。使用现有的 MLLMs 生成额外的 21.8K 中文 QA 数据。此外,从 LLaVA-150K 数据集中移除了标题子集,并将其余部分翻译(没有具体说是用什么工具翻译)为中文。
-
对于 OCR 和图表任务, 引入了 Anyword-3M、ICDAR2019-LSVT、ICDAR2017-RCTW、Open-Chart(包括 ChartQA、DVQA、InfoVQA、Pew 和 OpenCQA)数据集,以及一些由现有 MLLMs 从其他开源数据中生成的合成数据。对于Anyword-3M, 选择答案文本长度在20到50之间的数据,问题要求识别图像中的文本。对于ICDAR2019-LSVT, ICDAR2017-RCTW和Open-Chart,使用现有MLLMs生成详细的描述和QA对。
-
对于一般的视频描述任务,使用 ShareGemini 数据集。
-
对于一般的视频 QA 任务,使用现有的 MLLMs 重新标注 Video-ChatGPT 和 VideoChat2 。
-
-
数据拼接对于纯文本数据和图像数据,我们的目标是将上下文长度拼接到 6K token,如Fig 4 所示(拼接数据的数量在表1的拼接条目列中)。
Fig 4:不同的文本数据直接拼接到6K个token。图像首先被分成多个局部patches,然后不同的图像-文本对被对应拼接起来。视频数据直接逐帧采样作为输入,无需拼接。通过这种方式,可以统一不同训练batch中的数据长度,从而提高训练效率。
拼接不同的数据带来了两个好处:
- 支持更长的上下文长度,使得从单图像问答扩展到多图像-问答交互成为可能,从而实现更灵活的输入形式和延长的上下文;
- 提高了计算效率,因为视频帧通常包含大量视觉词元。通过拼接图像-问题对,我们在训练批次中保持了词元数量的平衡,从而提高了计算效率。此外,我们发现使用拼接数据训练的模型在性能上与未拼接数据的模型表现相当。
音频模态
-
音频编码器输入音频首先通过 Mel 滤波器(Mel Filter Bank),将音频信号分解为 Mel 频率尺度上的各个频带,模拟人类对声音的非线性感知。随后,使用 4 层 CNN 下采样层和 24 层的transformer,共计 341M 参数,处理输入特征。采用简单的两层 MLP 作为音频-文本模态连接器。最终,每 2 秒的音频输入被编码为 25 个token。
-
音频对齐在对齐任务中,选择自动语音识别(ASR)。使用的数据集包括 Wenetspeech,该数据集涵盖了超过 10,000 小时的多领域语音识别数据(主要集中在中文上)。同样,Gigaspeech 也包含 10,000 小时的高质量音频数据,大部分数据用于英语语音识别任务。另一个任务是音频字幕生成,依赖于 Wavcaps 的 AudioSet SL 子集,该数据集包含 400K 个音频片段及其对应的音频字幕。在对齐过程中,音频编码器和连接器都进行了训练。
多模态指令微调
在这一阶段,对模型进行指令微调,以增强其文本、音频指令的遵循能力。
训练数据
-
数据构建:指令微调阶段的数据来源与对齐阶段相同(见表1),并进行了如下改进:
-
音频问题替换:使用 TTS 技术(如 GPT-SoVITS)将大约一半的问题随机替换为其音频版本,以提升模型对音频query的理解能力和指令遵循能力。音频版questions和文本版questions的数量见表1。
-
系统提示设置:设置不同的系统提示,以避免不同类型数据之间的冲突(见表2)。例如,有些问题可以基于视觉信息或模型自身知识进行回答,这可能会导致冲突。此外,由于图像数据的patch类似于视频数据的多个帧,可能会使模型感到困惑。系统提示明确区分不同的数据类型,使其更易于理解。
-
-
噪声音频构建:在人机交互过程中,并非所有的音频输入都需要响应,这些被称为噪声音频。一个具有良好交互能力的系统应能主动识别音频类型,并有选择性地执行后续输出。为此,我们需要构建各种噪声音频样本以供模型识别。具体而言,我们从现有的多模态和单模态 QA 数据中随机抽取 474K 个句子。这些负样本文本集中在不需要用户响应的非query相关内容上,其长度分布与正向问题的长度分布一致。然后,使用 TTS 工具将这些句子转换为音频。噪声音频样本的构建使模型能够识别不需要响应的音频输入,这有助于实现非唤醒交互。具体的训练策略将在以下部分详细说明。
训练流程
根据上述构建的 QA 对,模型需要区分三种类型的query:
-
query音频:question由音频发起。
-
噪声音频:输入为音频,但不包含question。
-
query文本:question由文本发起。
基于这些query类型,设计了三种状态token <1>、<2> 和 <3>
。在训练阶段,在答案的开头插入对应的状态token,使模型能够灵活处理不同的交互行为。具体如下:
-
状态token
<1>
表示question输入为query音频。在这种情况下,模型的输出需要以文本或通过TTS工具转换的语音形式呈现给用户。 -
状态token
<2>
表示question输入为噪声音频。模型应输出 EOS token 作为终止符。然而,训练过程中发现突然终止输出可能会显著降低性能。因此,将噪声音频对应的文本发送给 LLM,并使用其输出文本作为训练目标。在推理过程中,<2>
作为另一种特殊的 EOS 标记。 -
状态token
<3>
表示question为纯文本,用于区分训练集中的前两种query。
在训练过程中,视觉和音频编码器保持冻结状态,而连接器与 Mixtral 8×7B 一起进行训练。
部署和工程优化
为了实现VITA的高效交互功能,研究人员进行了大量的工程优化:
-
双工部署方案:同时部署两个VITA模型,一个负责生成响应,另一个持续监控环境输入。
-
多模态vLLM适配:优化了vLLM框架以支持VITA的多模态处理需求。
-
状态token设计:引入不同的状态标记来区分有效查询音频、噪声音频和查询文本,实现无唤醒交互。
-
历史上下文聚合:在音频打断时,模型能够聚合历史上下文来响应最新查询。
非唤醒交互
非唤醒交互意味着模型可以在不需要唤醒词或按钮的情况下被激活,并对环境中的用户音频问题做出回应。部署过程必须满足以下要求:
-
实时跟踪环境声音:这涉及确定音频内容是否属于人类语言。
-
过滤噪声音频:模型应仅对有效的用户查询音频作出响应。
对于第一个要求,现有的语音活动检测(VAD)可以提供帮助。VITA 使用 SileroVAD ,该系统经过大规模语料库训练,涵盖超过 6,000 种语言, 并且能够在各种背景噪声下表现良好。对于第二个要求,利用第 前文介绍的状态token <2>
。这使模型能够自动区分输入音频是否为有效query。如果输入为非query类型,模型将直接终止推理,从而仅对query类型的输入作出响应。
音频中断交互
音频中断交互允许用户随时用新问题打断模型的生成过程。为实现这一点,部署环境必须满足以下要求:
-
实时跟踪和过滤外部查询:在生成响应的同时,系统必须实时跟踪和过滤外部查询。
-
回答新问题:当出现新问题时,系统必须停止当前生成,整合历史上下文,并对当前查询作出回应。
评估
从语言、音频、多模态这3个方面的表现来衡量VITA的最终效果。语言方面,使用的评测集:C-EVAL、AGIEVAL、MMLU 和 GSM8K;音频方面,使用的评测集:Wenetspeech 和 Librispeech;多模态方面,使用的评测集:MME 、OCRBench、HallusionBench 和 Video-MME。具体评估结果,这里就不赘述了,感兴趣的小伙伴们可以看原文。
总结
VITA作为一个开源的全模态交互式大语言模型,具有重要的学术和实践意义:
-
推动开源MLLM发展:VITA是首个同时支持视频、图像、文本和音频处理的开源MLLM,为开源社区提供了宝贵的参考。
-
探索自然交互:VITA在无唤醒交互和音频打断方面的创新,为提升MLLM的交互体验指明了方向。
-
促进多模态融合:VITA展示了如何在一个统一的框架内实现多模态信息的端到端处理。
-
开放研究资源:VITA的完全开源为后续研究提供了重要的基础设施。
尽管VITA在多模态理解和交互方面取得了显著进展,但与闭源模型如GPT-4o相比仍存在差距。研究团队指出,未来的工作方向包括:
-
进一步提升模型的多模态理解能力,特别是在复杂场景和长文本理解方面。
-
增强模型的推理和创造能力,使其能够处理更加开放和具有挑战性的任务。
-
优化交互体验,探索更多创新的人机交互方式。
-
提高模型的效率和部署友好性,使其更易于在实际应用中落地。
-
持续扩展训练数据和任务类型,使模型具备更广泛的知识和技能。
总的来说,VITA代表了开源多模态大语言模型的一个重要里程碑。它不仅在技术上推动了MLLM的发展,更为开源社区探索自然、智能的人机交互开辟了新的方向。随着VITA的持续优化和社区的共同努力,我们有理由期待在不久的将来,开源MLLM能够在功能和性能上真正媲美甚至超越闭源商业模型,为人工智能的普及和应用带来更多可能。