点击下方卡片,关注「魔方AI空间」公众号
简 介
GPT-4o 出色的多模态能力和交互体验突显了其在实际应用中的必要性,但开源模型很少在这两个领域都表现出色。
VITA:第一个开源的多模态大模型(MLLM),擅长同时处理和分析视频、图像、文本和音频模态,同时具有先进的多模态交互体验。
Omni 多模态理解:VITA 展示了强大的基础多语言、视觉和音频理解能力,其强大的性能证明了这一点 在一系列单峰和多峰基准中。
非唤醒交互:VITA 可以激活并响应用户音频环境中的问题,而无需唤醒词或按钮。
音频中断交互:VITA 能够同时跟踪和过滤实时外部查询。这允许用户随时中断模型的生成新问题,VITA 将相应地回复新问题。
项目主页:https://vita-home.github.io/
引言
本工作要解决的问题是如何在开源环境中实现一个能够同时处理和分析视频、图像、文本和音频模态的多模态大模型(MLLM),并且提供先进的模态交互体验。
主要研究难点包括:如何在开源模型中实现多模态处理和分析,如何提升模型的多模态理解能力,以及如何增强人机交互的自然性和流畅性。
现有的多模态大模型(如GPT-4o)在统一框架内处理文本、视觉和音频信号方面取得了显著进展,但在开源领域,很少有模型能够达到类似的功能。现有的开源多模态模型主要集中在图像-文本模态,较少关注用户交互能力。
方法概述
VITA,通过整合架构创新和先进的训练与发展策略,实现了这两个属性:1)统一框架,以端到端的方式处理文本、视觉和音频信号;2)实现自然多模态人机交互的能力。
双语指令调优:首先,基于官方的Mixtral 8x7B模型,扩展其中文词汇量,并通过高质量的双语文本语料库进行进一步的指令调优,使其具备中文和英文的理解能力。 多模态对齐和指令调优:其次,通过收集大量高质量的多模态数据,对文本特征空间与视频、图像和音频进行对齐,并引入状态令牌来识别输入查询的类型,从而实现端到端的交互。 双工管道开发:最后,采用双工方案,两个VITA模型同时运行:一个负责生成当前音频查询的响应,另一个持续监控环境输入,并在检测到新查询时中断当前生成,输出新查询的响应。如图2所示。
VITA的整体训练流程包括三个阶段:LLM指令调优、多模态对齐和多模态指令调优。
实验细节
数据收集:实验数据包括合成数据和开源数据。合成数据用于扩展词汇量和构建多模态训练数据,开源数据来自Wukong、LAION、CC12M、LLaVA、Lvis-Instruct、ScienceQA等数据集。
数据预处理:对于图像数据,采用动态补丁策略捕捉局部细节;对于视频数据,根据长度进行均匀采样;对于音频数据,使用Mel滤波器银行块将音频信号分解成频率带。
系统提示:为不同类型的输入(图像、视频、纯文本)设置不同的系统提示,以避免不同类型数据之间的冲突。
训练过程:在训练阶段,视觉和音频编码器保持冻结,连接器和Mixtral 8x7B一起训练。通过插入状态Token,模型能够灵活处理不同的交互行为。
实验性能评估
更多示例
编码能力:用户提供流程图,VITA 就能编写代码。
强大的图片理解能力:给定一张图片,VITA 可根据图片内容回答问题。
计算推理能力:
视频理解能力:
项目部署
安装基础环境
git clone https://github.com/VITA-MLLM/VITA
cd VITA
conda create -n vita python=3.10 -y
conda activate vita
pip install --upgrade pip
pip install -r requirements.txt
pip install flash-attn --no-build-isolation
准备数据
训练数据的 json 文件示例:
[
...
{
"set": "sharegpt4",
"id": "000000000164",
"conversations": [
{
"from": "human",
"value": "<image>\n<audio>\n"
},
{
"from": "gpt", // follow the setting of llave, "gpt" is only used to indicate that this is the ground truth of the model output
"value": "This is a well-organized kitchen with a clean, modern aesthetic. The kitchen features a white countertop against a white wall, creating a bright and airy atmosphere. "
}
],
"image": "coco/images/train2017/000000000164.jpg",
"audio": [
"new_value_dict_0717/output_wavs/f61cf238b7872b4903e1fc15dcb5a50c.wav"
]
},
...
]
下载预训练模型权重
VITA:https://huggingface.co/VITA-MLLM/VITA InternViT-300M-448px:https://huggingface.co/OpenGVLab/InternViT-300M-448px 预训练音频编码器:https://huggingface.co/VITA-MLLM/VITA
启动训练
export PYTHONPATH=./
export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
OUTPUT_DIR=/mnt/cfs/lhj/videomllm_ckpt/outputs/vita_video_audio
bash script/train/finetuneTask_nodes.sh ${OUTPUT_DIR}
推理
文本查询:
CUDA_VISIBLE_DEVICES=0,1 python video_audio_demo.py \
--model_path [vita/path] \
--image_path asset/vita_log2.png \
--model_type mixtral-8x7b \
--conv_mode mixtral_two \
--question "请描述这张图片。" \
音频查询:
CUDA_VISIBLE_DEVICES=0,1 python video_audio_demo.py \
--model_path [vita/path] \
--image_path asset/vita_log2.png \
--model_type mixtral-8x7b \
--conv_mode mixtral_two \
--audio_path asset/q1.wav
嘈杂的音频查询:
CUDA_VISIBLE_DEVICES=0,1 python video_audio_demo.py \
--model_path [vita/path] \
--image_path asset/vita_log2.png \
--model_type mixtral-8x7b \
--conv_mode mixtral_two \
--audio_path asset/q2.wav
Demo演示
使用 vLLM 加速模型。由于 VITA 尚未集成到 vLLM 中,因此需要对 vLLM 代码进行一些修改以使其适应 VITA。
conda create -n vita_demo python==3.10
conda activate vita_demo
pip install -r web_demo/web_demo_requirements.txt
# Backup a new weight file
cp -r VITA_ckpt/ demo_VITA_ckpt/
cd ./web_demo/vllm_tools
cp -rf model_weight_file/* ../../demo_VITA_ckpt/
cp -rf vllm_file/* your_anaconda/envs/vita_demo/lib/python3.10/site-packages/vllm/model_executor/models/
python -m web_demo.web_ability_demo demo_VITA_ckpt/
技术交流
加入「AIGCmagic社区」群聊,一起交流讨论,涉及 AI视频、AI绘画、Sora技术拆解、数字人、多模态、大模型、传统深度学习、自动驾驶等多个不同方向,可私信或添加微信号:【m_aigc2022】,备注不同方向邀请入群!!
推荐阅读
• 半年耕耘,《AIGCmagic社区知识星球》重磅升级!限量活动中!
• MiniCPM-V 2.0: 具备领先OCR和理解能力的高效端侧多模态大模型
• 多模态大模型:Video-LLaVA2 视频和图像的智能理解系统
• 多模态大模型:LLaVA-OneVision 轻松实现视觉任务迁移 | 单图、多图和视频理解