近期,由南京大学和腾讯优图推出的VITA-1.5在魔搭开源。VITA-1.5支持视频,音频,文本输入,以及音频输出。
模型链接:
https://modelscope.cn/models/modelscope/NJU_VITA-1.5
代码链接:
https://github.com/VITA-MLLM/VITA
论文链接:
https://arxiv.org/pdf/2501.01957
01.VITA-1.5 有什么新功能?
它包含了一系列的进步:
- 交互时延大幅降低。端到端语音交互时延由约4秒降低至1.5秒,实现近乎即时的交互,大幅提升用户体验。
- 增强多模式性能。MME 、MMBench和MathVista等多模式基准测试的平均性能已从59.8 显著提升至70.8。
- 语音处理能力的提升。语音处理能力提升到了一个新的水平,ASR WER(词错率,测试其他)从18.4降低到了7.5。此外,我们用端到端TTS 模块取代了 VITA-1.0 的独立 TTS 模块,该模块接受 LLM 的嵌入作为输入。
- 渐进式训练策略。通过这种方式,语音的加入对其他多模态性能(视觉-语言)影响不大。平均图像理解性能仅从71.3下降到70.8。
- 对图像和视频理解基准的评估
- VITA-1.5 在 ASR 基准测试中的表现优于专业语音模型
- 添加音频模态对图像和视频理解能力影响不大。
02.模型推理
本文推荐使用WebUI完成模型体验和推理
第一步:下载开源项目
git clone https://github.com/VITA-MLLM/VITA.git
第二步:安装依赖
pip install -r web_demo/web_demo_requirements.txt
第三步:下载模型
modelscope download --model=modelscope/NJU_VITA-1.5 --local_dir ./demo_VITA_ckpt/VITA-1.5 modelscope download --model=OpenGVLab/InternViT-300M-448px --local_dir ./demo_VITA_ckpt/InternViT-300M-448px
第四步:配置并修改config文件
# mm_audio_encoder和mm_vision_tower可改为本地的文件夹路径,如"demo_VITA_ckpt/InternViT-300M-448px" mv demo_VITA_ckpt/config.json demo_VITA_ckpt/origin_config.json cd ./web_demo/vllm_tools cp -rf qwen2p5_model_weight_file/* ../../demo_VITA_ckpt/ cp -rf vllm_file/* your_envs/vita_demo/lib/python3.10/site-packages/vllm/model_executor/models/
第五步:运行代码
python -m web_demo.web_ability_demo demo_VITA_ckpt/
03.模型微调
更新pip并安装项目依赖:
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", "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" ] }, ... ]
set 字段用于获取数据加载时的图像或视频文件夹。你需要将它的键值对添加到 ./vita/config/dataset_config.py 中的 FolderDict:
AudioFolder = "" FolderDict = { #### NaturalCap "sharegpt4": "", }
设置对应字典中 chat_path 的JSON路径:
#### NaturalCap ShareGPT4V = {"chat_path": ""}
在 ./vita/config/dataset_config.py 中设置音频文件夹路径为 AudioFolder。
在 ./vita/config/init.py 中添加数据类:
from .dataset_config import * NaturalCap = [ShareGPT4V] DataConfig = { "Pretrain_video": NaturalCap, }
模型准备
下载所需的权重:
(1)VITA-1.5 https://modelscope.cn/models/VITA-MLLM/VITA-1.5,
(2)InternViT-300M-448px https://modelscope.cn/models/OpenGVLab/InternViT-300M-448px,
(3)音频语言对齐中预训练的音频编码器 https://modelscope.cn/models/VITA-MLLM/VITA-1.5。
替换 ./script/train/finetuneTaskNeg_qwen_nodes.sh 中的路径:
... --model_name_or_path VITA1.5_ckpt \ ... --vision_tower InternViT-300M-448px \ ... --audio_encoder audio-encoder-Qwen2-7B-1107-weight-base-11wh-tunning \ ...
执行以下命令以启动训练过程:
export PYTHONPATH=./ export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True OUTPUT_DIR=/mnt/cfs/lhj/videomllm_ckpt/outputs/vita_video_audio bash script/train/finetuneTaskNeg_qwen_nodes.sh ${OUTPUT_DIR}
点击链接阅读原文:NJU_VITA-1.5