简 介
GPT-4o 出色的多模态能力和交互体验突显了其在实际应用中的必要性,但开源模型很少在这两个领域都表现出色。
VITA:第一个开源的多模态大模型(MLLM),擅长同时处理和分析视频、图像、文本和音频模态,同时具有先进的多模态交互体验。
Omni 多模态理解:VITA 展示了强大的基础多语言、视觉和音频理解能力,其强大的性能证明了这一点 在一系列单峰和多峰基准中。
非唤醒交互:VITA 可以激活并响应用户音频环境中的问题,而无需唤醒词或按钮。
音频中断交互:VITA 能够同时跟踪和过滤实时外部查询。这允许用户随时中断模型的生成新问题,VITA 将相应地回复新问题。
项目主页:https://vita-home.github.io/
引言
本工作要解决的问题是如何在开源环境中实现一个能够同时处理和分析视频、图像、文本和音频模态的多模态大模型(MLLM),并且提供先进的模态交互体验。
主要研究难点包括:如何在开源模型中实现多模态处理和分析,如何提升模型的多模态理解能力,以及如何增强人机交互的自然性和流畅性。
现有的多模态大模型(如GPT-4o)在统一框架内处理文本、视觉和音频信号方面取得了显著进展,但在开源领域,很少有模型能够达到类似的功能。现有的开源多模态模型主要集中在图像-文本模态,较少关注用户交互能力。
图1:VITA的交互作用。传统的音频交互需要一个预定义的唤醒词,例如,每次你提出问题时说“嗨!Siri~”,或者一个按钮来控制输入问题的音频(限制1)。当模型生成输出时,**人机交互**总是被阻断,因为之前的系统只能顺序响应输入查询(限制2)。相比之下,一方面,与之前方法中音频、文本和视觉始终分离不同,VITA支持这些模态端到端的交互。另一方面,VITA对多模态交互做出了两项贡献。非唤醒交互:VITA自动过滤掉背景噪音,如非查询的人声,从而消除了唤醒词和按钮的需求。音频中断交互:如果用户用另一个问题打断,生成过程会被暂停,模型立即响应最新的查询。
方法概述
VITA,通过整合架构创新和先进的训练与发展策略,实现了这两个属性:1)统一框架,以端到端的方式处理文本、视觉和音频信号;2)实现自然多模态人机交互的能力。
-
双语指令调优:首先,基于官方的Mixtral 8x7B模型,扩展其中文词汇量,并通过高质量的双语文本语料库进行进一步的指令调优,使其具备中文和英文的理解能力。
-
多模态对齐和指令调优:其次,通过收集大量高质量的多模态数据,对文本特征空间与视频、图像和音频进行对齐,并引入状态令牌来识别输入查询的类型,从而实现端到端的交互。
-
双工管道开发:最后,采用双工方案,两个VITA模型同时运行:一个负责生成当前音频查询的响应,另一个持续监控环境输入,并在检测到新查询时中断当前生成,输出新查询的响应。如图2所示。
图2:VITA架构。VITA能够处理纯文本/音频以及与文本/音频结合的视频/图像输入。此外,为不同的查询输入设置了不同的状态标记。<1>对应于有效的查询音频,例如“世界上最大的动物是什么?”,我们期望模型给出回应。<2>对应于嘈杂的音频,例如有人在环境中叫我吃饭,我们期望模型不回复。<3>对应于查询文本,即用户以文本形式给出的问题。在训练阶段,我们尝试教模型自动区分不同的输入查询。在部署阶段,使用<2>我们可以实现非唤醒交互。基于此,我们进一步引入了音频中断交互的双重方案。两个模型同时运行,其中生成模型负责处理用户查询。当生成模型开始工作时,另一个模型监控环境。如果用户用另一个有效的音频查询打断,监控模型聚合历史上下文以回应最新查询,而生成模型暂停并调整以监控,即两个模型交换身份。
VITA的整体训练流程包括三个阶段:LLM指令调优、多模态对齐和多模态指令调优。
图3:VITA的训练流程。第一阶段LLM指令调优通过扩大其词汇量和用高质量的双语文本语料库对其进行微调,从而在中文和英文上实现熟练掌握。第二阶段多模态对齐将各个编码器与LLM连接起来处理各种模态。通过积累大量高分辨率的多模态数据,将文本特征空间与视频、图像和音频的特征空间同步。最后阶段多模态指令调优允许模型跟随文本或音频指令来理解图像或视频。特别设计的状态令牌用于区分输入查询的类型,便于后续的多模态人机交互。
实验细节
数据收集:实验数据包括合成数据和开源数据。合成数据用于扩展词汇量和构建多模态训练数据,开源数据来自Wukong、LAION、CC12M、LLaVA、Lvis-Instruct、ScienceQA等数据集。
数据预处理:对于图像数据,采用动态补丁策略捕捉局部细节;对于视频数据,根据长度进行均匀采样;对于音频数据,使用Mel滤波器银行块将音频信号分解成频率带。
系统提示:为不同类型的输入(图像、视频、纯文本)设置不同的系统提示,以避免不同类型数据之间的冲突。
训练过程:在训练阶段,视觉和音频编码器保持冻结,连接器和Mixtral 8x7B一起训练。通过插入状态Token,模型能够灵活处理不同的交互行为。
实验性能评估
语言性能:在C-EVAL、AGIEVAL、MMLU和GSM8K四个数据集上,训练后的模型在中文评估集上表现显著提升,同时在英文相关基准上保持了原始性能水平,并在数学推理任务中表现出显著改进。
音频性能:在Wenetspeech和Librispeech数据集上,VITA在自动语音识别(ASR)基准上取得了相当的结果,显示出模型在语音表示学习方面的鲁棒性。
多模态性能:在十个代表性的基准上,VITA在图像理解方面与专门的图像开源模型LLaVA-Next表现相当,接近闭源模型Gemini 1.5 Pro;在视频理解方面,尽管与视频专门的LLaVA-Next-Video存在小幅差距,但考虑到VITA支持更广泛的模态并优先考虑交互,这一结果仍然是可接受的。
更多示例
编码能力:用户提供流程图,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/
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。