VILA arxiv / VILA デモ / VILA ハギングフェイス
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] 1024フレームまでの長時間動画理解(キャプション、QA、Needle-in-a-Haystack)をサポートするLongVILAをリリースしました。
[2024/07] VILA1.5もMLVUテストリーダーボードで1位(OSSモデル)にランクインしました。
[2024/06] VILA1.5 は、MMMU リーダーボードおよび Video-MME リーダーボードで最高のオープンソース VLM になりました。
[2024/05]ビデオ理解機能を提供する VILA-1.5 をリリースします。 VILA-1.5には3B/8B/13B/40Bの4つのモデルサイズがあります。
【2024/05】AWQ量子化4bit 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 には、優れたコンテキスト内学習機能が備わっています。私たちはトレーニング コード、評価コード、データセット、モデル ckpt を含むすべてをオープンソースにしています。
[2023/12] Arxivに論文が掲載されました!
プレク | VQAv2 | GQA | ビズウィズ | SQA-I | VQA-T | 法王 | MME | MMB | MMB-CN | シード | シードⅠ | MMMU (値) | MMMU (テスト) | ラバベンチ | MM-獣医 | 平均 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
VILA1.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 | int4 | 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 | int4 | 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 | int4 | 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 |
VILA1.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 | int4 | 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 |
VILA1.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 | int4 | 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 | MSRVTT | TGIF | EgoSchema (テスト) | シネパイル | |
---|---|---|---|---|---|---|---|---|
VILA1.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 |
VILA1.5-13B | FP16 | 53.6 | 54.7 | 77.9 | 60.2 | 56 | 52.2 | 50.1 |
VILA1.5-40B | FP16 | 54 | 58 | 80.1 | 63 | 58.2 | 58.7 | 51.3 |
精度 | A100 | 4090 | おりん | |
---|---|---|---|---|
VILA1.5-3B | FP16 | 104.6 | 137.6 | 25.4 |
VILA1.5-3B-AWQ | int4 | 182.8 | 215.5 | 42.5 |
VILA1.5-3B-S2 | FP16 | 104.3 | 137.2 | 24.6 |
VILA1.5-3B-S2-AWQ | int4 | 180.2 | 219.3 | 40.1 |
ラマ-3-VILA1.5-8B | FP16 | 74.9 | 57.4 | 10.2 |
ラマ-3-VILA1.5-8B-AWQ | int4 | 168.9 | 150.2 | 28.7 |
VILA1.5-13B | FP16 | 50.9 | OOM | 6.1 |
VILA1.5-13B-AWQ | int4 | 115.9 | 105.7 | 20.6 |
VILA1.5-40B | FP16 | OOM | OOM | -- |
VILA1.5-40B-AWQ | int4 | 57.0 | OOM | -- |
注: TinyChat バックエンドを使用し、バッチ サイズ = 1 で測定。
プロンプト: ビデオの視覚的要素と物語的要素について詳しく説明します。
キャプション: ビデオには、白い表面で作業している人の手が映っています。彼らは、青と白の色合いの市松模様の布地を折りたたんでいます。生地はより小さく、よりコンパクトな形状に折りたたまれています。その人の爪は赤く塗られ、黒と赤の服を着ています。表面には定規と鉛筆もあり、測定と精度がプロセスに関与していることを示唆しています。
./environment_setup.sh ウイルス
VILA トレーニングには 3 つのステップが含まれています。特定のハイパーパラメータについては、script/v1_5 フォルダーをチェックしてください。
LLaVA-CC3M-Pretrain-595K データセットを利用して、テキストとビジュアルのモダリティを調整します。
ステージ 1 スクリプトは 2 つのパラメーターを受け取り、単一の 8xA100 ノードで実行できます。 BASE_MODEL_PATH
、オンラインまたはローカルの ハグフェイス リポジトリ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 scripts/v1_5/paper/2_pretrain_mmc4_coyo.sh [CODE_PATH] [BASE_MODEL_PATH] [STAGE1_PATH] [OUTPUT_NAME]
ステージ 2 のスクリプトは 4 つの引数を受け取ります。 CODE_PATH
は VILA コードベースへの絶対パスです。BASE_MODEL_PATH BASE_MODEL_PATH
ステージ 1 スクリプトで示されるものと同様の意味を持ちます。 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]
ステージ 3 のスクリプトは 2 つの引数を受け取ります。 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")
GPT 支援評価を必要としない 10 個のデータセットすべてに対して評価を実行するための、ボタンを押すだけのスクリプトが提供されています。
./scripts/v1_5/eval/eval_all.sh [チェックポイント_パス] [モデル名] [CONV_MODE]
このスクリプトは 2 つのパラメーターを受け取ります。CHECKPOINT_PATH CHECKPOINT_PATH
ステージ 3 モデルのチェックポイントを指し、 MODEL_NAME
評価結果の名前になります。
VQAv2 および Vizwiz の評価は eval.ai でホストされています。評価を送信できるようにするには、アカウントを登録し、チームを作成する必要があります。
MMBench および MMBench_CN eval は、別の評価サーバーでホストされます。送信する前に必ずファイル名を変更してください。変更しない場合、サーバーは結果をキャッシュし、常に間違った結果を返します。
サーバーに送信する必要がある予測ファイルを自動的に整理するための簡単なスクリプトが提供されています。
python scripts/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 [チェックポイント_パス] [モデル名] [CONV_MODE] ./scripts/v1_5/eval/video_chatgpt/eval_all.sh [MODEL_NAME]
ユーザープロンプトと画像を使用して迅速に推論できるようにスニペットを提供します。
ラマ-3-VILA1.5-8B 推論:
python -W llava/eval/run_vila.py を無視します --model-path 効率的な大規模モデル/Llama-3-VILA1.5-8b-Fix --conv-mode ラマ_3 --query "<image>n 交通状況を説明してください。" --画像ファイル「av.png」
VILA1.5-40B 推論:
python -W llava/eval/run_vila.py を無視します --model-path 効率的な大規模モデル/VILA1.5-40b --conv-mode hermes-2 --query "<image>n 交通状況を説明してください。" --画像ファイル「av.png」
VILA1.5-3B ビデオ推論:
python -W llava/eval/run_vila.py を無視します --model-path 効率的な大規模モデル/VILA1.5-3b --conv-mode vicuna_v1 --query "<ビデオ>n このビデオについて説明してください。" --ビデオファイル "demo.mp4"
VILA モデルは、エッジでの効率的な推論のために、AWQ によって 4 ビットに量子化されます。 VILA を AWQ で量子化するボタンを押すだけのスクリプトを提供します。
TinyChat を介して、GPU プラットフォーム上で AWQ 量子化された 4 ビット VILA をサポートします。量子化後に TinyChat でモデルを実行するためのチュートリアルを提供します。また、4 ビット量子化 VILA モデルを提供するための Gradio サーバー (TinyChat および AWQ を利用) を起動する手順も提供します。
さらに、TinyChatEngine を使用して、x86 アーキテクチャと ARM アーキテクチャの両方を備えたさまざまな CPU プラットフォームで AWQ 量子化された 4 ビット VILA モデルをサポートします。また、ユーザーが異なる CPU に VILA を展開するのに役立つ詳細なチュートリアルも提供しています。
VILA モデルを提供するために、シンプルな API サーバーが提供されています。サーバーは FastAPI と Huggingface Transformers の上に構築されています。サーバーは次のコマンドで実行できます。
python -W サーバー.pyを無視します --ポート 8000 --model-path 効率的な大規模モデル/VILA1.5-3B --conv-mode 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 vila-サーバー:最新
次に、次のように OpenAI SDK を使用してエンドポイントを呼び出すことができます。
from openai import 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。
コードは、LICENSE ファイルに記載されている Apache 2.0 ライセンスに基づいてリリースされます。
事前トレーニングされた重みは、CC-BY-NC-SA-4.0 ライセンスに基づいてリリースされています。
このサービスは非営利使用のみを目的としたリサーチ プレビューであり、次のライセンスと条件が適用されます。
LLaMAのモデルライセンス。 LLAMA3-VILA チェックポイントの使用条件については、LLAMA3 ライセンスを参照してください。
OpenAIによって生成されたデータの利用規約
トレーニング中に使用される各データセットのライセンス。
*Yao Lu: エヌビディア | *Yongxu ying: エヌビディア | *Ji Lin: OpenAI (Nvidia と MIT で行われた研究) |
ウェイ・ピン: エヌビディア | パブロ・モルチャノフ: Nvidia | アンドリュー・タオ: エヌビディア |
タン・ハオティアン: MIT | 上陽: MIT | Ligeng Zhu: Nvidia、MIT |
ワン・ウェイチェン: MIT | Fuzhao Xue: Nvidia、NUS | Yunhao Fang: Nvidia、UCSD |
ユカン・チェン: Nvidia | Zhuoyang Zhang: Nvidia | ユエ・シェン: エヌビディア |
ウェイミン・チェン: Nvidia | Huizi Mao: Nvidia | Baifeng Shi: Nvidia、カリフォルニア大学バークレー校 |
ヤン・カウツ: エヌビディア | モハマド・シュービ: Nvidia | ソン・ハン: Nvidia、MIT |
@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: オープンソースの InternViT (VILA1.5-40b で使用) およびすべての VILA1.5 モデルで使用される 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。