VILA arxiv / VILA 演示 / VILA Huggingface
VILA 是一种视觉语言模型 (VLM),使用大规模交错图像文本数据进行预训练,可实现视频理解和多图像理解功能。 VILA 可通过 AWQ 4 位量化和 TinyChat 框架部署在边缘。我们发现:(1)图文对还不够,图文交错是必要的; (2)在交错的图文预训练期间解冻LLM可以实现上下文学习; (3)重新混合纯文本指令数据对于提升VLM和纯文本性能至关重要; (4) 令牌压缩扩展了#video 帧。 VILA 推出了吸引人的功能,包括:视频推理、情境学习、视觉思维链和更好的世界知识。
[2024/10] 基于VILA1.5微调的SOTA医疗VLM VILA-M3发布! VILA-M3 显着优于 Llava-Med,与 Med-Gemini 相当,并且完全开源!代码模型
[2024/10] 我们发布VILA-U:集成视频、图像、语言理解和生成的统一基础模型。
[2024/08] 我们发布了 LongVILA,支持高达 1024 帧的长视频理解(字幕、QA、大海捞针)。
[2024/07] VILA1.5还在MLVU测试排行榜上排名第一(OSS模型)。
[2024/06] VILA1.5现已成为MMMU排行榜和Video-MME排行榜上最好的开源VLM!
[2024/05] 我们发布VILA-1.5,提供视频理解能力。 VILA-1.5有四种型号尺寸:3B/8B/13B/40B。
[2024/05] 我们发布了 AWQ 量化的 4 位 VILA-1.5 模型。 VILA-1.5 可通过 TinyChat 和 TensorRT-LLM 后端高效部署在各种 NVIDIA GPU(A100、4090、4070 笔记本电脑、Orin、Orin Nano)上。
[2024/03] VILA已被CVPR 2024接收!
[2024/02] 我们发布了 AWQ 量化的 4 位 VILA 模型,可通过 TinyChat 和 TinyChatEngine 部署在 Jetson Orin 和笔记本电脑上。
[2024/02] VILA发布。我们提出了可实现多图像VLM 的交错图像文本预训练。 VILA 具有令人印象深刻的情境学习功能。我们开源一切:包括训练代码、评估代码、数据集、模型 ckpts。
[2023/12] 论文已上Arxiv!
预知。 | VQAv2 | 质量保证局 | 维兹维兹 | SQA-I | VQA-T | 教皇 | 微机电系统 | MMB | MMB-CN | 种子 | 种子-I | MMMU(有效值) | MMMU(测试) | 拉瓦长凳 | MM-兽医 | 平均的 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
维拉1.5-3B | FP16 | 80.4 | 61.5 | 53.5 | 69.0 | 60.4 | 85.9 | 1442.44 | 63.4 | 52.7 | 60.9 | 67.9 | 33.3 | 30.8 | 75.9 | 35.4 | 60.2 |
VILA1.5-3B-AWQ | 整数4 | 80.0 | 61.1 | 53.8 | 67.8 | 60.4 | 85.9 | 1437.34 | 63.3 | 51.4 | 59.8 | 66.6 | 32.7 | 31.1 | 75.0 | 37.3 | 59.9 |
VILA1.5-3B-S2 | FP16 | 79.8 | 61.4 | 61.3 | 69.6 | 63.4 | 85.3 | 1431.65 | 62.8 | 52.2 | 60.0 | 66.4 | 32.8 | 31.3 | 76.7 | 38.6 | 60.9 |
VILA1.5-3B-S2-AWQ | 整数4 | 79.4 | 61.3 | 62.3 | 69.2 | 63.0 | 85.8 | 1417.06 | 61.6 | 51.5 | 59.1 | 65.7 | 33.4 | 30.4 | 77.1 | 36.7 | 60.5 |
骆驼-3-VILA1.5-8B | FP16 | 83.0 | 63.5 | 63.2 | 82.0 | 68.5 | 85.6 | 1634.91 | 75.3 | 69.9 | 66.4 | 73.8 | 38.6 | 32.7 | 71.9 | 43.2 | 66.6 |
美洲驼-3-VILA1.5-8B-AWQ | 整数4 | 80.3 | 61.7 | 59.3 | 79.0 | 65.4 | 82.9 | 1593.65 | 71.0 | 64.9 | 64.0 | 71.1 | 36.0 | 36.1 | 79.0 | 37.2 | 64.5 |
维拉1.5-13B | FP16 | 82.8 | 64.3 | 62.6 | 80.1 | 65.0 | 86.3 | 1569.55 | 74.9 | 66.3 | 65.1 | 72.6 | 37.9 | 33.6 | 80.8 | 44.3 | 66.3 |
VILA1.5-13B-AWQ | 整数4 | 82.7 | 64.5 | 63.3 | 79.7 | 64.7 | 86.7 | 1531.35 | 74.7 | 66.7 | 65.1 | 72.6 | 37.8 | 34.0 | 81.9 | 46.4 | 66.5 |
维拉1.5-40B | FP16 | 84.3 | 64.6 | 62.2 | 87.2 | 73.6 | 87.3 | 1726.82 | 82.4 | 80.2 | 69.1 | 75.8 | 51.9 | 46.9 | 81.3 | 53.0 | 72.4 |
VILA1.5-40B-AWQ | 整数4 | 84.1 | 64.4 | 61.3 | 86.7 | 73.2 | 88.2 | 1714.79 | 83.2 | 79.6 | 68.9 | 75.6 | 49.3 | 46.2 | 83.0 | 51.4 | 72.1 |
注意:VQAV2 和 VizWiz 是测试开发版,平均准确度是在所有数据集上计算的,并且 MME 数字除以 20。
预知。 | 感知测试 | 活动网 | MSVD | 右心室舒张时间 | TGIF | 自我模式(测试) | 电影堆 | |
---|---|---|---|---|---|---|---|---|
维拉1.5-3B | FP16 | 47 | 50.2 | 76.6 | 57.5 | 51.7 | 42.6 | 37.9 |
VILA1.5-3B-S2 | FP16 | 49.7 | 50.7 | 76.9 | 57.6 | 51.7 | ||
骆驼-3-VILA1.5-8B | FP16 | 54.1 | 54.3 | 78.3 | 60.1 | 54.1 | 50.4 | 48.7 |
维拉1.5-13B | FP16 | 53.6 | 54.7 | 77.9 | 60.2 | 56 | 52.2 | 50.1 |
维拉1.5-40B | FP16 | 54 | 58 | 80.1 | 63 | 58.2 | 58.7 | 51.3 |
精确 | A100 | 4090 | 奥林 | |
---|---|---|---|---|
维拉1.5-3B | FP16 | 104.6 | 137.6 | 25.4 |
VILA1.5-3B-AWQ | 整数4 | 182.8 | 215.5 | 42.5 |
VILA1.5-3B-S2 | FP16 | 104.3 | 137.2 | 24.6 |
VILA1.5-3B-S2-AWQ | 整数4 | 180.2 | 219.3 | 40.1 |
骆驼-3-VILA1.5-8B | FP16 | 74.9 | 57.4 | 10.2 |
美洲驼-3-VILA1.5-8B-AWQ | 整数4 | 168.9 | 150.2 | 28.7 |
维拉1.5-13B | FP16 | 50.9 | OOM | 6.1 |
VILA1.5-13B-AWQ | 整数4 | 115.9 | 105.7 | 20.6 |
维拉1.5-40B | FP16 | OOM | OOM | -- |
VILA1.5-40B-AWQ | 整数4 | 57.0 | OOM | -- |
注意:使用 TinyChat 后端以批量大小 = 1 进行测量。
提示:详细阐述视频的视觉和叙事元素。
说明:视频显示一个人的手在白色表面上工作。他们正在折叠一块带有蓝色和白色格子图案的布料。织物被折叠成更小、更紧凑的形状。那人的指甲涂成了红色,穿着黑红相间的衣服。表面还有一把尺子和一支铅笔,表明这个过程涉及到测量和精度。
./environment_setup.sh 维拉
VILA训练包含三个步骤,具体超参数请查看scripts/v1_5文件夹:
我们利用 LLaVA-CC3M-Pretrain-595K 数据集来对齐文本和视觉模式。
第一阶段脚本接受两个参数,它可以在单个 8xA100 节点上运行。 BASE_MODEL_PATH
指向在线或本地 Huggingface 存储库,例如NousResearch/Llama-2-7b-hf
。 OUTPUT_NAME
指向checkpoints
下的目标目录,该目录将在之后保存经过训练的多模式投影仪。
bash 脚本/v1_5/paper/1_mm_align.sh [BASE_MODEL_PATH] [OUTPUT_NAME]
我们使用 MMC4 和 Coyo 数据集来训练具有交错图像文本对的 VLM。
bash脚本/v1_5/paper/2_pretrain_mmc4_coyo.sh [CODE_PATH] [BASE_MODEL_PATH] [STAGE1_PATH] [OUTPUT_NAME]
第二阶段脚本包含四个参数。 CODE_PATH
是 VILA 代码库的绝对路径, BASE_MODEL_PATH
与第一阶段脚本中的含义类似。 STAGE1_PATH
指向阶段 1 的OUTPUT_NAME
(即存储阶段 1 检查点的位置)。 OUTPUT_NAME
是checkpoints
下保存预训练检查点的所需文件夹名称。我们为此阶段提供的脚本在 slurm 上执行,我们预计它在 16 个节点(128 个 GPU)上执行。
这是 VILA 训练的最后阶段,我们调整模型以遵循 M3IT、FLAN 和 ShareGPT4V 子集上的多模式指令。该阶段在 8xA100 节点上运行。
bash 脚本/v1_5/paper/3_sft.sh [STAGE2_PATH] [OUTPUT_NAME]
第三阶段脚本接受两个参数。 STAGE2_PATH
指向第 2 阶段脚本的OUTPUT_NAME
(即存储第 2 阶段检查点的位置)。 OUTPUT_NAME
是checkpoints
下存储最终检查点的所需文件夹名称。
您可以按照Llava1.5 eval下载所有数据集。下载完所有数据集后,请将它们放在playground/data/eval
下。
请对 MME 评估脚本进行以下更改。请搜索:
data_path =“MME_Benchmark_release_version”
并将其替换为:
data_path = os.path.join(script_dir, "MME_Benchmark_release_version")
我们提供了一个按钮脚本来对所有 10 个不需要 GPT 辅助评估的数据集执行评估:
./scripts/v1_5/eval/eval_all.sh [CHECKPOINT_PATH] [MODEL_NAME] [CONV_MODE]
该脚本接受两个参数, CHECKPOINT_PATH
指向第 3 阶段模型检查点, MODEL_NAME
将是评估结果的名称。
VQAv2 和 Vizwiz 评估托管在 eval.ai 上。您需要注册一个帐户并创建一个团队才能提交评估。
MMBench 和 MMBench_CN eval 托管在另一个评估服务器上。确保在提交之前更改文件名,否则服务器会缓存结果,并且始终会向您返回错误的结果。
我们提供了一个快速脚本来自动组织需要提交到服务器的预测文件:
python 脚本/v1_5/eval/copy_predictions.py [MODEL_NAME]
执行此脚本后,您将能够在playground/data/predictions_upload/[MODEL_NAME]
下找到预测。
请按照 Video-LLaVA 中的评估步骤进行数据集准备。
./scripts/v1_5/eval/video_chatgpt/run_all.sh [CHECKPOINT_PATH] [MODEL_NAME] [CONV_MODE] ./scripts/v1_5/eval/video_chatgpt/eval_all.sh [MODEL_NAME]
我们提供片段,以便通过用户提示和图像进行快速推断。
Llama-3-VILA1.5-8B 推论:
python -W 忽略 llava/eval/run_vila.py --模型路径高效大型模型/Llama-3-VILA1.5-8b-Fix --转换模式 llama_3 --query "<image>n 请描述交通状况。" --图像文件“av.png”
VILA1.5-40B推论:
python -W 忽略 llava/eval/run_vila.py --模型路径高效大型模型/VILA1.5-40b --转换模式 Hermes-2 --query "<image>n 请描述交通状况。" --图像文件“av.png”
VILA1.5-3B视频推理:
python -W 忽略 llava/eval/run_vila.py --模型路径高效大型模型/VILA1.5-3b --转换模式 vicuna_v1 --query "<video>n 请描述该视频。" --视频文件“demo.mp4”
我们的 VILA 模型由 AWQ 量化为 4 位,以便在边缘进行高效推理。我们提供了一个按钮脚本来使用 AWQ 量化 VILA。
我们通过 TinyChat 在 GPU 平台上支持 AWQ 量化 4 位 VILA。我们提供了量化后使用 TinyChat 运行模型的教程。我们还提供了启动 Gradio 服务器(由 TinyChat 和 AWQ 提供支持)以服务 4 位量化 VILA 模型的说明。
我们通过 TinyChatEngine 进一步支持 x86 和 ARM 架构的各种 CPU 平台上的 AWQ 量化 4 位 VILA 模型。我们还提供了详细的教程来帮助用户在不同的CPU上部署VILA。
提供了一个简单的 API 服务器来服务 VILA 模型。该服务器构建在 FastAPI 和 Huggingface Transformers 之上。可以使用以下命令运行服务器:
python -W 忽略 server.py --端口8000 --模型路径高效大型模型/VILA1.5-3B --转换模式 vicuna_v1
docker build -t vila-server:latest .docker run --gpus all --ipc=host --ulimit memlock=-1 --ulimit stack=67108864 -v ./hub:/root/.cache/huggingface/hub -it --rm -p 8000:8000 -e VILA_MODEL_PATH=高效大型模型/VILA1.5-3B -e VILA_CONV_MODE=vicuna_v1 维拉服务器:最新
然后您可以使用 OpenAI SDK 调用端点,如下所示:
从 openai 导入 OpenAIclient = OpenAI(base_url="http://localhost:8000",api_key="fake-key", )response = client.chat.completions.create(messages=[ {“角色”:“用户”,“内容”:[ {"type": "text", "text": "这张图片里有什么?"}, {"type": "image_url","image_url": {"url": "https://blog.logomyway.com/wp-content/uploads/2022/01/NVIDIA-logo.jpg",# 或者你也可以传入base64编码的图像# "url": "data:image/png;base64,<base64_encoded_image>",}, }, ], } ],max_tokens=300,model="VILA1.5-3B",# 可以传入额外的参数,如下extra_body={"num_beams": 1, "use_cache": False}, )print(response.choices[0].message.content)
注意:此 API 服务器仅用于评估目的,尚未针对生产使用进行优化。它仅在 A100 和 H100 GPU 上进行了测试。
我们发布了 VILA1.5-3B、VILA1.5-3B-S2、Llama-3-VILA1.5-8B、VILA1.5-13B、VILA1.5-40B 和 4 位 AWQ 量化模型 VILA1.5- 3B-AWQ,VILA1.5-3B-S2-AWQ,美洲驼-3-VILA1.5-8B-AWQ、VILA1.5-13B-AWQ、VILA1.5-40B-AWQ。
该代码根据 Apache 2.0 许可证发布,如 LICENSE 文件中所示。
预训练权重根据 CC-BY-NC-SA-4.0 许可证发布。
该服务是一项研究预览版,仅供非商业用途,并受以下许可和条款的约束:
LLaMA 的示范许可证。有关 LLAMA3-VILA 检查点使用条款,请参阅 LLAMA3 许可证了解更多详细信息。
OpenAI 生成的数据的使用条款
训练期间使用的每个数据集许可证。
*姚璐:Nvidia | *尹鸿旭:Nvidia | * Ji Lin:OpenAI(在 Nvidia 和 MIT 完成的工作) |
魏平:英伟达 | 帕夫洛·莫尔恰诺夫:Nvidia | 安德鲁·陶:英伟达 |
唐昊天:麻省理工学院 | 尚扬:麻省理工学院 | 朱立庚:Nvidia、麻省理工学院 |
王伟晨:麻省理工学院 | 薛福照:Nvidia、新加坡国立大学 | 方云浩:Nvidia、加州大学圣地亚哥分校 |
陈宇康:Nvidia | 张卓阳:Nvidia | 沉悦:英伟达 |
陈伟明:Nvidia | 毛惠子:Nvidia | 施百峰:Nvidia、加州大学伯克利分校 |
简·考茨:Nvidia | 穆罕默德·舒伊比:Nvidia | 宋瀚:Nvidia、麻省理工学院 |
@misc{lin2023vila, title={VILA: On Pre-training for Visual Language Models}, author={Ji Lin and Hongxu Yin and Wei Ping and Yao Lu and Pavlo Molchanov and Andrew Tao and Huizi Mao and Jan Kautz and Mohammad Shoeybi and Song Han}, year={2023}, eprint={2312.07533}, archivePrefix={arXiv}, primaryClass={cs.CV} }
LLaVA:我们构建的代码库。感谢他们的出色工作。
InternVL:用于所有 VILA1.5 模型中使用的开源 InternViT(用于 VILA1.5-40b)和 InternVL-SFT 数据混合(受 LLaVA-1.6 启发)。
Vicuna:令人惊叹的开源大型语言模型!
Video-ChatGPT:我们从这个存储库借用了视频评估脚本。
MMC4、COYO-700M、M3IT、OpenORCA/FLAN、ShareGPT4V、WIT、GSM8K-ScRel、VisualGenome、VCR、ScienceQA、Shot2Story、Youcook2、Vatex、ShareGPT-Video 用于提供本研究中使用的数据集。