VILA - 一系列视觉语言模型


一、关于 VILA

VILA是一系列最先进的视觉语言模型(VLM),适用于边缘、数据中心和云的各种多模态AI任务。


💡新闻

  • [2025/1]截至2025年1月6日,VILA现已成为新的Cosmos Nemotron视觉语言模型的一部分。
  • [2024/12]我们发布了NVILA(又名VILA2.0),它探索了多模态设计的全栈效率,实现了更便宜的培训、更快的部署和更好的性能。
  • [2024/12]我们发布了支持长视频理解的LongVILA,具有超过1M上下文长度的长上下文VLM和多模态序列并行系统。
  • [2024/10]VILA-M3,一款基于VILA1.5微调的SOTA医疗VLM发布!VILA-M3的性能明显优于Llava-Med,与Med-Double持平,并且完全开源!代码 模型
  • [2024/10]我们发布VILA-U:集成了视频、图像、语言理解和生成的统一基础模型。
  • [2024/07]VILA1.5也在MLVU测试排行榜上排名第一(OSS模型)。
  • [2024/06]VILA1.5现在是最好的开源VLMMMMU排行榜视频-MME排行榜!
  • [2024/05]我们发布了提供视频理解能力的VILA-1.5,VILA-1.5带有四种型号尺寸:3B/8B/13B/40B。

性能


图像基准测试

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


视频基准测试

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


高效部署

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

注意:在批处理大小=1时使用TinyChat后端进行测量。


推理性能


解码吞吐量(令牌/秒)
A1004090Orin
NVILA-3B-基线140.6190.542.7
NVILA-3B-TinyChat184.3230.545.0
NVILA-Lite-3B-Baseline142.3190.041.3
NVILA-Lite-3B-TinyChat186.0233.944.9
NVILA-8B-基线82.161.911.6
NVILA-8B-TinyChat186.8162.728.1
NVILA-Lite-8B-Baseline84.062.011.6
NVILA-Lite-8B-TinyChat181.8167.532.8
NVILA-Video-8B-Baseline*73.258.410.9
NVILA-Video-8B-TinyChat*151.8145.032.3

TTFT(第一个令牌的时间)(秒)
A1004090Orin
NVILA-3B-基线0.03290.02690.1173
NVILA-3B-TinyChat0.02600.01880.1359
NVILA-Lite-3B-Baseline0.03180.02740.1195
NVILA-Lite-3B-TinyChat0.03140.01910.1241
NVILA-8B-基线0.04340.05730.4222
NVILA-8B-TinyChat0.04520.03560.2748
NVILA-Lite-8B-Baseline0.04460.04580.2507
NVILA-Lite-8B-TinyChat0.03910.02970.2097
NVILA-Video-8B-Baseline*0.71900.88405.8236
NVILA-Video-8B-TinyChat*

注意:使用TinyChat后端测量,批量大小=1,dynamic_s2禁用,num_video_frames=64。我们为Tinychat使用W4A16 LLM和W8A8 Vision Tower,基线精度为FP16。 *:使用视频字幕任务测量。否则,使用图像字幕任务测量。


二、VILA示例


1、视频字幕

7ko9e-AGmbM.12_0_217_out. mp4

提示:详细阐述视频的视觉和叙事元素。

描述:视频显示,一个人的手在白色表面上工作。他们正在折叠一块带有蓝白相间格子图案的织物。织物被折叠成更小、更紧凑的形状。这个人的指甲被漆成红色,他们穿着一件黑红相间的衣服。表面上还有一把尺子和一支铅笔,这表明这个过程涉及测量和精度。


2、语境学习

img


外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


3、多图像推理

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


4、Jetson Orin上的VILA

视频


5、VILA on RTX 4090

vila_4090_two_cars_3x. mp4


三、安装

1、安装Python 发行版

2、在环境中安装必要的Python包。

./environment_setup.sh vila

3、(可选)如果您是拥有wandb帐户的NVIDIA员工,请安装onelogger并通过在llava/train/args.py中将training_args.use_one_logger设置为True来启用它。

pip install --index-url=https://sc-hw-artf.nvidia.com/artifactory/api/pypi/hwinf-mlwfo-pypi/simple --upgrade one-logger-utils

四、训练

VILA训练包含三个步骤,具体超参数请查看脚本/v1_5文件夹:


步骤1:对齐

我们利用LLaVA-CC3M-Pretrain-595K数据集来对齐文本和视觉模式。

第1阶段脚本采用两个参数,它可以在单个8xA100节点上运行。

bash scripts/NVILA-Lite/align.sh Efficient-Large-Model/Qwen2-VL-7B-Instruct <alias to data>

训练好的模型将保存到runs/train/nvila-8b-align


步骤-1.5:

bash scripts/NVILA-Lite/stage15.sh runs/train/nvila-8b-align/model <alias to data>

训练好的模型将保存到runs/train/nvila-8b-align-1.5


第二步:预训练

我们使用MMC4和Coyo数据集来训练具有交错图像-文本对的VLM。

bash scripts/NVILA-Lite/pretrain.sh runs/train/nvila-8b-align-1.5 <alias to data>

训练好的模型将被保存到runs/train/nvila-8b-pretraining


步骤3:监督微调

这是VILA训练的最后阶段,我们调整模型以遵循M3IT、FLAN和ShareGPT4V子集上的多模态指令。此阶段在8xA100节点上运行。

bash scripts/NVILA-Lite/sft.sh runs/train/nvila-8b-pretraining <alias to data>

训练好的模型将被保存到runs/train/nvila-8b-SFT


五、评估

我们引入了vila-eval命令来简化评估。一旦准备好数据,评估可以通过

MODEL_NAME=NVILA-15B
MODEL_ID=Efficient-Large-Model/$MODEL_NAME
huggingface-cli download $MODEL_ID

vila-eval \
    --model-name $MODEL_NAME \
    --model-path $MODEL_ID \
    --conv-mode auto \
    --tags-include local

它将启动所有评估并返回汇总结果。


六、推理

我们提供vila-infer,用于快速推断用户提示和图像。

# image description
vila-infer \
    --model-path Efficient-Large-Model/NVILA-15B \
    --conv-mode auto \
    --text "Please describe the image" \
    --media demo_images/demo_img.png

# video description
vila-infer \
    --model-path Efficient-Large-Model/NVILA-15B \
    --conv-mode auto \
    --text "Please describe the video" \
    --media https://huggingface.co/datasets/Efficient-Large-Model/VILA-inference-demos/resolve/main/OAI-sora-tokyo-walk.mp4

vila-infer 还兼容VILA-1.5型号。例如:

vila-infer \
    --model-path Efficient-Large-Model/VILA1.5-3b \
    --conv-mode vicuna_v1 \
    --text "Please describe the image" \
    --media demo_images/demo_img.png

vila-infer \
    --model-path Efficient-Large-Model/VILA1.5-3b \
    --conv-mode vicuna_v1 \
    --text "Please describe the video" \
    --media https://huggingface.co/datasets/Efficient-Large-Model/VILA-inference-demos/resolve/main/OAI-sora-tokyo-walk.mp4

vila-infer \
    --model-path Efficient-Large-Model/NVILA-15B \
    --conv-mode auto \
    --text "Please describe the video" \
    --media https://huggingface.co/datasets/Efficient-Large-Model/VILA-inference-demos/resolve/main/OAI-sora-tokyo-walk.mp4

七、量化和部署

我们的VILA模型由AWQ量化为4位,以便在边缘进行有效推理。我们提供了一个按钮脚本来使用AWQ量化VILA。


1、在桌面GPU和边缘GPU上运行VILA

我们通过TinyChat在GPU平台上支持AWQ量化的4位VILA。我们提供了量化后使用TinyChat运行模型的教程。我们还提供了启动Gradio服务器(由TinyChat和AWQ提供支持)的指令,以服务于4位量化的VILA模型。


2、在笔记本电脑上运行VILA

我们的TinyChatEngine进一步支持各种CPU平台上的AWQ量化4位VILA模型,包括x86和ARM架构。我们还提供了详细的教程来帮助用户在不同的CPU上部署VILA。


3、运行VILA API服务器

提供了一个简单的应用编程接口服务器来服务VILA模型。该服务器建立在快速应用编程接口Hugging Face Transformers 之上。该服务器可以使用以下命令运行:


使用CLI
python -W ignore server.py \
    --port 8000 \
    --model-path Efficient-Large-Model/NVILA-15B \
    --conv-mode auto

使用Docker
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=Efficient-Large-Model/NVILA-15B \
    -e VILA_CONV_MODE=auto \
    vila-server:latest

然后可以使用OpenAI SDK调用端点,如下所示:

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:8000",
    api_key="fake-key",
)
response = client.chat.completions.create(
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "What’s in this image?"},
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://blog.logomyway.com/wp-content/uploads/2022/01/NVIDIA-logo.jpg",
                        # Or you can pass in a base64 encoded image
                        # "url": "data:image/png;base64,<base64_encoded_image>",
                    },
                },
            ],
        }
    ],
    model="NVILA-15B",
)
print(response.choices[0].message.content)

注意:此API服务器仅用于评估目的,尚未针对生产用途进行优化。SGLang支持即将推出。


八、Checkpoints

我们发布以下型号:

  • NVILA-8B/NVILA-8B-Lite
  • NVILA-15B/NVILA-15B-Lite

2025-01-06(五)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程乐园

请我喝杯伯爵奶茶~!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值