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 用於提供本研究中使用的資料集。