VITA: Towards Open-Source Interactive Omni Multimodal LLM
论文地址 https://www.arxiv.org/pdf/2408.05211
项目地址 https://github.com/VITA-MLLM/VITA
模型速览
gpt4o的多模态能力和互动体验展现出了他们在实际应用中的必要性,如今的开源模型很难在这两方面表现出色。文章作者首次开源了一个能够即时处理分析多种模态信号并具有互动性的多模态模型,VITA(Video, Image, Text, Audio),其性能也经过了验证。
- 传统音频交互的限制
- 用户每次提问需要先说出预定义的唤醒词,类似于“Hi! Siri~”
- 模型生成结果的过程中是不再支持交互的,只能支持顺序响应用户query
- VITA
- 自动滤除与人声音不相关的背景噪声,因此不需要唤醒词
- 音频打断交互:如果用户在模型生成回复的过程中用另一个问题打断,则支持中断当前的回复,处理最新的用户query
- VITA 训练/推理流程:
- 基于一个MOE语言模型Mixtral 8*7B,经双语料sft扩展了语言模型的中文词表
- 多任务训练,分别训练单独的语音和vision encoder和connector,使多模态能力对齐;定义状态token,基于构建的多模态指令调优数据训练教会模型识别不同类型的输入,使其能够在没有唤醒词的情形下也能正确响应
- 多模态SFT
- 采用双工方案进行部署,即同时部署两个VITA模型,一个模型负责对用户的query输出回复,另一个连续跟踪环境的输入,选择性地对新的输入做出反应并回复(非唤醒交互和用户打断的场景),如果当前的生成过程被打断,模型就根据新的用户query生成回复。为了提高交互效率,作者团队也进行了工程优化,比如采用vllm实现了推理加速
VITA模型细节
各阶段训练策略
Stage | LLM Instruction Tuning | Multimodal Alignment | Multimodal Instruction Tuning |
---|---|---|---|
Strategy | 扩展中文词表,从32000扩到51747 | 冻结vision encoder,只训练connector,数据group到上下文6K | 设计三个特殊token<1><2><3>,把这些token放在回答的起始位置,区分不同的回复类型;冻结语音和视觉编码器参数,训练LLM和connector |
Effect | 相同文本情况下减少了token数量,提高推理速度 | 只训connector…(文中没说为什么),数据group保证了比较均匀的token数量,提高训练效率,同时不会降低模型效果 | 特殊token可以避免模型混淆,更容易理解 |
Data | 5M 纯文本数据 | 4960.3K,包含图,视频,OCR和图表的描述和问答对及纯文本数据 | 在表1的基础上做了调整,用GPT-SoVITS将一半数据的query替换成了语音版本,不同类型的数据采用不同的system prompt(表2);音频噪声干扰数据:从多模态和单模态的QA对的答案中随机采样474K句子然后转成音频 |
Multimodal Alignment
Modality | Visual | Audio |
---|---|---|
Encoder | InternViT-300M-448px | 4×CNN downsampling layers + a 24-layer-transformer, totaling 341M paras |
Connector | two-layer MLP | two-layer MLP |
Input | image with 448*448 | audio |
Output | 256 tokens | 每2s音频被编码成25个token |
Processing | 对于高分辨率图像,采取动态的切图策略,视频作为图像的特殊案例,根据视频的时间序列长度切分出不同数量的视频帧,视频帧不作切图处理 | 每段音频需要先经过一个梅尔滤波器组将音频信号分解为梅尔频率尺度上的各个频带,模仿人类对声音的非线性感知,即提取FBank特征 |
Data Source | 见表1 | Wenetspeech和Gigaspeech,都包含10000+小时的音频演讲,分别以中文和英文为主 |
Alignment | tune connector only | Automatic Speech Recognition(ASR)任务 |
表 1 Data recipe of visual alignment
Multimodal Instruction Tuning
Special Token | <1> | <2> | <3> |
---|---|---|---|
Input type | Audio | Noisy | Text |
Output | text or speech converted by TTS tools | EOS token as a terminator | pure text |
However, we observe that abruptly terminating the output during training can significantly degrade performance. Consequently, we send the text corresponding to the noisy audio to a LLM and use its output text as the training target. During inference, <2> serves as another special EOS token.
也就是说训练过程中直接令输出中断是不可取的,会导致模型性能下降。因此将这段语音对应的文本输入到LLM中得到的回复作为训练目标,<2>就作为另一个特殊的EOS token
表 2 System Prompts for image input, video input, and pure text input
Duplex Pipeline
开始讲讲如何实现交互?
无唤醒交互场景
场景要求:
- 实时追踪环境声音信息,涉及确认是否是人声
- 滤除环境噪声,模型只需要回复有效人声
对于第一个需求,可以借助Voice Activity Detection(VAD)任务实现,VITA采用 SileroVAD模型,是在超过6000中语言的大量预料上训练过的,在各种背景噪声中的性能表现也不错;对于第二个需求,上述第三阶段指令微调已经对此做出了优化。
音频打断交互场景
场景要求:
- 外部query的实时跟踪和过滤
- 回答新的问题:当出现新问题时,系统必须停止当前一轮回复,组建历史对话,并对当前的query做出回应。
为实现上述要求,作者实现了一个双工部署框架,同时部署两个VITA模型。
在典型情况下,Generation model会回答用户query。同时,Monitoring model在生成过程中检测环境声音。它忽略非query的用户声音,即嘈杂的音频,但在识别query音频时停止生成模型的进程。Monitoring model 随后整合历史上下文并响应最新的用户query。此时,Generation model和Monitoring model的身份互换。