VILA arxiv / VILA Demo / VILA Huggingface
VILA ist ein visuelles Sprachmodell (VLM), das mit verschachtelten Bild-Text-Daten im großen Maßstab vorab trainiert wurde und Videoverständnis und Funktionen zum Verstehen mehrerer Bilder ermöglicht. VILA ist durch AWQ 4-Bit-Quantisierung und das TinyChat-Framework am Rande einsetzbar. Wir finden: (1) Bild-Text-Paare reichen nicht aus, verschachtelte Bild-Texte sind unerlässlich; (2) Das Auftauen von LLM während des Vortrainings mit verschachteltem Bild und Text ermöglicht kontextbezogenes Lernen. (3) Das erneute Mischen von Nur-Text-Anweisungsdaten ist entscheidend, um sowohl die VLM- als auch die Nur-Text-Leistung zu steigern. (4) Token-Komprimierung erweitert #Videoframes. VILA stellt attraktive Funktionen vor, darunter: Video-Argumentation, kontextbezogenes Lernen, visuelle Gedankenkette und besseres Weltwissen.
[2024/10] VILA-M3, ein auf VILA1.5 verfeinertes medizinisches SOTA-VLM, wird veröffentlicht! VILA-M3 übertrifft Llava-Med deutlich und ist Med-Gemini ebenbürtig und ist vollständig Open Source! Codemodell
[2024/10] Wir veröffentlichen VILA-U: ein einheitliches Basismodell, das Video, Bild, Sprachverständnis und -generierung integriert.
[2024/08] Wir veröffentlichen LongVILA, das das Verstehen langer Videos (Untertitel, Qualitätssicherung, Nadel im Heuhaufen) mit bis zu 1024 Bildern unterstützt.
[2024/07] VILA1.5 belegt außerdem den 1. Platz (OSS-Modell) in der MLVU-Testbestenliste.
[2024/06] VILA1.5 ist jetzt das beste Open-Source-VLM auf der MMMU-Bestenliste und der Video-MME-Bestenliste!
[2024/05] Wir veröffentlichen VILA-1.5, das die Möglichkeit bietet, Videos zu verstehen . VILA-1.5 ist in vier Modellgrößen erhältlich: 3B/8B/13B/40B.
[2024/05] Wir veröffentlichen AWQ-quantisierte 4-Bit-VILA-1.5-Modelle. VILA-1.5 ist über TinyChat und TensorRT-LLM-Backends effizient auf verschiedenen NVIDIA-GPUs (A100, 4090, 4070 Laptop, Orin, Orin Nano) einsetzbar.
[2024/03] VILA wurde vom CVPR 2024 akzeptiert!
[2024/02] Wir veröffentlichen AWQ-quantisierte 4-Bit-VILA-Modelle, die über TinyChat und TinyChatEngine auf Jetson Orin und Laptops einsetzbar sind.
[2024/02] VILA wird veröffentlicht. Wir schlagen ein verschachteltes Bild-Text-Vortraining vor, das Mehrbild- VLM ermöglicht. VILA verfügt über beeindruckende kontextbezogene Lernfunktionen. Wir öffnen alles als Open Source: einschließlich Trainingscode, Evaluierungscode, Datensätze und Modell-Cckpts.
[2023/12] Papier ist auf Arxiv!
Präz. | VQAv2 | GQA | VizWiz | SQA-I | VQA-T | PAPST | MME | MMB | MMB-CN | SAMEN | SEED-I | MMMU (Wert) | MMMU (Test) | Lava-Bank | MM-Tierarzt | Durchschnitt | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 |
Lama-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 |
Lama-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 |
HINWEIS: VQAV2 und VizWiz sind Testentwicklungen, die durchschnittliche Genauigkeit wird über alle Datensätze berechnet und MME-Zahlen werden durch 20 geteilt.
Präz. | Wahrnehmungstest | ActivityNet | MSVD | MSRVTT | TGIF | EgoSchema (Test) | CinePile | |
---|---|---|---|---|---|---|---|---|
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 | ||
Lama-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 |
Präzision | A100 | 4090 | Orin | |
---|---|---|---|---|
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 |
Lama-3-VILA1,5-8B | fp16 | 74,9 | 57.4 | 10.2 |
Lama-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 | -- |
HINWEIS: Gemessen mit dem TinyChat-Backend bei Batchgröße = 1.
Aufforderung: Gehen Sie ausführlich auf die visuellen und narrativen Elemente des Videos ein.
Bildunterschrift: Das Video zeigt die Hände einer Person, die auf einer weißen Oberfläche arbeitet. Sie falten ein Stück Stoff mit einem Karomuster in Blau- und Weißtönen. Der Stoff wird in eine kleinere, kompaktere Form gefaltet. Die Fingernägel der Person sind rot lackiert und sie trägt ein schwarz-rotes Gewand. Auf der Oberfläche befinden sich außerdem ein Lineal und ein Bleistift, was darauf hindeutet, dass Maß und Präzision bei diesem Vorgang eine Rolle spielen.
./environment_setup.sh vila
Das VILA-Training besteht aus drei Schritten. Informationen zu bestimmten Hyperparametern finden Sie im Ordner „scripts/v1_5“:
Wir verwenden den Datensatz LLaVA-CC3M-Pretrain-595K, um die textlichen und visuellen Modalitäten aufeinander abzustimmen.
Das Skript der Stufe 1 benötigt zwei Parameter und kann auf einem einzelnen 8xA100-Knoten ausgeführt werden. BASE_MODEL_PATH
verweist auf ein Online- oder lokales Huggingface-Repository, z. B. NousResearch/Llama-2-7b-hf
. OUTPUT_NAME
zeigt auf ein Zielverzeichnis unter checkpoints
, das anschließend den trainierten multimodalen Projektor speichert.
bash scripts/v1_5/paper/1_mm_align.sh [BASE_MODEL_PATH] [OUTPUT_NAME]
Wir verwenden MMC4- und Coyo-Datensätze, um VLM mit verschachtelten Bild-Text-Paaren zu trainieren.
bash scripts/v1_5/paper/2_pretrain_mmc4_coyo.sh [CODE_PATH] [BASE_MODEL_PATH] [STAGE1_PATH] [OUTPUT_NAME]
Das Skript der Stufe 2 berücksichtigt vier Argumente. CODE_PATH
ist der absolute Pfad zu unserer VILA-Codebasis, BASE_MODEL_PATH
hat eine ähnliche Bedeutung wie das, was im Skript der Stufe 1 dargestellt wird. STAGE1_PATH
zeigt auf den OUTPUT_NAME
von Stufe 1 (d. h. dort, wo der Prüfpunkt der Stufe 1 gespeichert ist). OUTPUT_NAME
ist der gewünschte Ordnername unter checkpoints
, der den Prüfpunkt vor dem Training speichert. Das von uns für diese Phase bereitgestellte Skript wird auf Slurm ausgeführt und wir gehen davon aus, dass es auf 16 Knoten (128 GPUs) ausgeführt wird.
Dies ist die letzte Stufe des VILA-Trainings, in der wir das Modell so optimieren, dass es multimodalen Anweisungen auf einer Teilmenge von M3IT, FLAN und ShareGPT4V folgt. Diese Stufe läuft auf einem 8xA100-Knoten.
bash scripts/v1_5/paper/3_sft.sh [STAGE2_PATH] [OUTPUT_NAME]
Das Skript der Stufe 3 berücksichtigt zwei Argumente. STAGE2_PATH
zeigt auf den OUTPUT_NAME
des Skripts der Stufe 2 (d. h. dort, wo der Prüfpunkt der Stufe 2 gespeichert ist). OUTPUT_NAME
ist der gewünschte Ordnername unter checkpoints
, der den endgültigen Prüfpunkt speichert.
Sie können Llava1.5 eval folgen, um alle Datensätze herunterzuladen. Nachdem Sie alle Datensätze heruntergeladen haben, legen Sie sie bitte unter playground/data/eval
ab.
Bitte nehmen Sie die folgenden Änderungen am MME-Auswertungsskript vor. Bitte suchen Sie nach:
data_path = "MME_Benchmark_release_version"
und ersetzen Sie es durch:
data_path = os.path.join(script_dir, „MME_Benchmark_release_version“)
Wir stellen ein Push-the-Button-Skript zur Verfügung, um die Auswertung aller 10 Datensätze durchzuführen, die keine GPT-gestützte Auswertung erfordern:
./scripts/v1_5/eval/eval_all.sh [CHECKPOINT_PATH] [MODEL_NAME] [CONV_MODE]
Dieses Skript akzeptiert zwei Parameter: CHECKPOINT_PATH
zeigt auf den Prüfpunkt des Modells der Stufe 3 und MODEL_NAME
ist der Name der Bewertungsergebnisse.
VQAv2- und Vizwiz-Bewertungen werden auf eval.ai gehostet. Sie müssen ein Konto registrieren und ein Team erstellen, um eine Bewertung einreichen zu können.
MMBench und MMBench_CN eval werden auf einem anderen Evaluierungsserver gehostet. Stellen Sie sicher, dass Sie den Namen der Datei vor dem Absenden ändern, da der Server sonst die Ergebnisse zwischenspeichert und Ihnen immer falsche Ergebnisse zurückgibt.
Wir stellen ein schnelles Skript zur Verfügung, um die Vorhersagedateien, die an Server übermittelt werden müssen, automatisch zu organisieren:
python scripts/v1_5/eval/copy_predictions.py [MODEL_NAME]
Nach der Ausführung dieses Skripts finden Sie die Vorhersagen unter playground/data/predictions_upload/[MODEL_NAME]
.
Bitte folgen Sie den Auswertungsschritten in Video-LLaVA zur Datensatzvorbereitung.
./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]
Wir stellen Snippets für schnelle Rückschlüsse mit Benutzeraufforderungen und Bildern bereit.
Llama-3-VILA1.5-8B-Schlussfolgerung:
python -W ignoriert llava/eval/run_vila.py --model-path Efficient-Large-Model/Llama-3-VILA1.5-8b-Fix --conv-mode llama_3 --query „<image>n Bitte beschreiben Sie die Verkehrslage.“ --image-file „av.png“
VILA1.5-40B-Schlussfolgerung:
python -W ignoriert llava/eval/run_vila.py --model-path Efficient-Large-Model/VILA1.5-40b --conv-mode hermes-2 --query „<image>n Bitte beschreiben Sie die Verkehrslage.“ --image-file „av.png“
VILA1.5-3B Video-Inferenz:
python -W ignoriert llava/eval/run_vila.py --model-path Efficient-Large-Model/VILA1.5-3b --conv-mode vicuna_v1 --query „<video>n Bitte beschreiben Sie dieses Video.“ --video-file „demo.mp4“
Unsere VILA-Modelle werden durch AWQ in 4 Bits quantisiert, um eine effiziente Inferenz am Rande zu ermöglichen. Wir bieten ein Skript zur Quantisierung von VILA mit AWQ auf Knopfdruck an.
Wir unterstützen AWQ-quantisiertes 4-Bit-VILA auf GPU-Plattformen über TinyChat. Wir stellen ein Tutorial zur Verfügung, um das Modell nach der Quantisierung mit TinyChat auszuführen. Wir bieten auch eine Anleitung zum Starten eines Gradio-Servers (unterstützt von TinyChat und AWQ), um 4-Bit-quantisierte VILA-Modelle bereitzustellen.
Darüber hinaus unterstützen wir unsere AWQ-quantisierten 4-Bit-VILA-Modelle auf verschiedenen CPU-Plattformen mit x86- und ARM-Architekturen mit unserer TinyChatEngine. Wir stellen außerdem ein detailliertes Tutorial zur Verfügung, um den Benutzern bei der Bereitstellung von VILA auf verschiedenen CPUs zu helfen.
Zur Bedienung von VILA-Modellen wurde ein einfacher API-Server bereitgestellt. Der Server basiert auf FastAPI und Huggingface Transformers. Der Server kann mit dem folgenden Befehl ausgeführt werden:
python -W ignoriert server.py --port 8000 --model-path Efficient-Large-Model/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=Effizientes-Großmodell/VILA1.5-3B -e VILA_CONV_MODE=vicuna_v1 vila-server:latest
Anschließend können Sie den Endpunkt mit dem OpenAI SDK wie folgt aufrufen:
from openai import OpenAIclient = OpenAI(base_url="http://localhost:8000",api_key="fake-key", )response = client.chat.completions.create(messages=[ {"role": "user","content": [ {"type": "text", "text": "Was ist in diesem Bild?"}, {"type": "image_url", "image_url": {"url": "https://blog.logomyway.com/wp-content/uploads/2022/01/NVIDIA-logo.jpg",# Oder Sie können Übergeben Sie ein Base64-codiertes Bild# "url": "data:image/png;base64,<base64_encoded_image>",}, }, ], } ],max_tokens=300,model="VILA1.5-3B",# Sie können zusätzliche Parameter wie folgt übergebenextra_body={"num_beams": 1, "use_cache": False}, )print(response.choices[0].message.content)
HINWEIS: Dieser API-Server ist nur für Evaluierungszwecke gedacht und wurde nicht für den Produktionseinsatz optimiert. Es wurde nur auf A100- und H100-GPUs getestet.
Wir veröffentlichen VILA1.5-3B, VILA1.5-3B-S2, Llama-3-VILA1.5-8B, VILA1.5-13B, VILA1.5-40B und die 4-Bit-AWQ-quantisierten Modelle VILA1.5- 3B-AWQ, VILA1.5-3B-S2-AWQ, Lama-3-VILA1.5-8B-AWQ, VILA1.5-13B-AWQ, VILA1.5-40B-AWQ.
Der Code wird unter der Apache 2.0-Lizenz veröffentlicht, wie in der LICENSE-Datei zu finden.
Die vortrainierten Gewichte werden unter der CC-BY-NC-SA-4.0-Lizenz veröffentlicht.
Bei dem Dienst handelt es sich um eine Forschungsvorschau, die ausschließlich für die nichtkommerzielle Nutzung bestimmt ist und den folgenden Lizenzen und Bedingungen unterliegt:
Modelllizenz von LLaMA. Weitere Informationen zu den Nutzungsbedingungen für LLAMA3-VILA-Kontrollpunkte finden Sie in der LLAMA3-Lizenz.
Nutzungsbedingungen der von OpenAI generierten Daten
Datensatzlizenzen für jeden, der während des Trainings verwendet wird.
*Yao Lu: Nvidia | *Hongxu Yin: Nvidia | *Ji Lin: OpenAI (bei Nvidia und MIT durchgeführte Arbeit) |
Wei Ping: Nvidia | Pavlo Molchanov: Nvidia | Andrew Tao: Nvidia |
Haotian Tang: MIT | Shang Yang: MIT | Ligeng Zhu: Nvidia, MIT |
Wei-Chen Wang: MIT | Fuzhao Xue: Nvidia, NUS | Yunhao Fang: Nvidia, UCSD |
Yukang Chen: Nvidia | Zhuoyang Zhang: Nvidia | Yue Shen: Nvidia |
Wei-Ming Chen: Nvidia | Huizi Mao: Nvidia | Baifeng Shi: Nvidia, UC Berkeley |
Jan Kautz: Nvidia | Mohammad Shoeybi: Nvidia | Song Han: 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: die Codebasis, auf der wir aufgebaut haben. Vielen Dank für ihre wunderbare Arbeit.
InternVL: für Open-Source-InterViT (verwendet in VILA1.5-40b) und die InternVL-SFT-Datenmischung (inspiriert von LLaVA-1.6), die in allen VILA1.5-Modellen verwendet wird.
Vicuna: das erstaunliche Open-Source-Großsprachenmodell!
Video-ChatGPT: Wir haben uns ein Videobewertungsskript aus diesem Repository ausgeliehen.
MMC4, COYO-700M, M3IT, OpenORCA/FLAN, ShareGPT4V, WIT, GSM8K-ScRel, VisualGenome, VCR, ScienceQA, Shot2Story, Youcook2, Vatex, ShareGPT-Video für die Bereitstellung der in dieser Forschung verwendeten Datensätze.