VILA arxiv / VILA Demo / VILA Huggingface
VILA adalah model bahasa visual (VLM) yang dilatih sebelumnya dengan data gambar-teks yang disisipkan dalam skala besar, memungkinkan pemahaman video dan kemampuan pemahaman multi-gambar . VILA dapat diterapkan di edge dengan kuantisasi AWQ 4bit dan kerangka TinyChat. Kami menemukan: (1) pasangan gambar-teks saja tidak cukup, teks-gambar yang disisipkan sangat penting; (2) mencairkan LLM selama pra-pelatihan teks-gambar yang disisipkan memungkinkan pembelajaran dalam konteks; (3) memadukan kembali data instruksi hanya teks sangat penting untuk meningkatkan kinerja VLM dan teks saja; (4) kompresi token memperluas #bingkai video. VILA menghadirkan kemampuan menarik, termasuk: penalaran video, pembelajaran dalam konteks, rangkaian pemikiran visual, dan pengetahuan dunia yang lebih baik.
[2024/10] VILA-M3, VLM medis SOTA yang disempurnakan pada VILA1.5 telah dirilis! VILA-M3 secara signifikan mengungguli Llava-Med dan setara dengan Med-Gemini dan sepenuhnya bersumber terbuka! model kode
[2024/10] Kami merilis VILA-U: model fondasi terpadu yang mengintegrasikan pemahaman dan pembuatan Video, Gambar, Bahasa.
[2024/08] Kami merilis LongVILA yang mendukung pemahaman video panjang (Captioning, QA, Needle-in-a-Haystack) hingga 1024 frame.
[2024/07] VILA1.5 juga menempati peringkat pertama (model OSS) di papan peringkat tes MLVU.
[2024/06] VILA1.5 kini menjadi VLM sumber terbuka terbaik di papan peringkat MMMU dan papan peringkat Video-MME!
[2024/05] Kami merilis VILA-1.5, yang menawarkan kemampuan pemahaman video . VILA-1.5 hadir dengan empat ukuran model: 3B/8B/13B/40B.
[2024/05] Kami merilis model VILA-1.5 4bit terkuantisasi AWQ. VILA-1.5 dapat diterapkan secara efisien pada beragam GPU NVIDIA (Laptop A100, 4090, 4070, Orin, Orin Nano) melalui backend TinyChat dan TensorRT-LLM.
[2024/03] VILA diterima CVPR 2024!
[2024/02] Kami merilis model VILA 4bit terkuantisasi AWQ, yang dapat diterapkan pada Jetson Orin dan laptop melalui TinyChat dan TinyChatEngine.
[2024/02] VILA dirilis. Kami mengusulkan pelatihan awal gambar-teks yang disisipkan yang memungkinkan VLM multi-gambar . VILA hadir dengan kemampuan pembelajaran dalam konteks yang mengesankan. Kami membuka semuanya menjadi sumber terbuka: termasuk kode pelatihan, kode evaluasi, kumpulan data, ckpts model.
[2023/12] Makalah ada di Arxiv!
Sebelumnya. | VQAv2 | GQA | VizWiz | SQA-I | VQA-T | PAUS | MME | MMB | MMB-CN | BENIH | BENIH-I | MMMU (val) | MMMU (tes) | bangku-llava | MM-Dokter Hewan | Rata-rata | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 |
Llama-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 |
Llama-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 |
CATATAN: VQAV2 dan VizWiz adalah test-dev, akurasi rata-rata dihitung pada semua kumpulan data dan nomor MME dibagi 20.
Sebelumnya. | Tes Persepsi | AktivitasNet | MSVD | MSRVTT | TGIF | Skema Ego (tes) | tumpukan bioskop | |
---|---|---|---|---|---|---|---|---|
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 | ||
Llama-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 |
Presisi | 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 |
Llama-3-VILA1.5-8B | fp16 | 74.9 | 57.4 | 10.2 |
Llama-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 | -- |
CATATAN: Diukur menggunakan backend TinyChat pada ukuran batch = 1.
Prompt: Uraikan elemen visual dan narasi video secara detail.
Keterangan: Video tersebut menunjukkan tangan seseorang sedang mengerjakan permukaan putih. Mereka melipat sepotong kain dengan pola kotak-kotak bernuansa biru dan putih. Kain dilipat menjadi bentuk yang lebih kecil dan kompak. Kuku orang tersebut dicat merah, dan mereka mengenakan pakaian hitam dan merah. Ada juga penggaris dan pensil di permukaan, menunjukkan bahwa pengukuran dan presisi terlibat dalam proses tersebut.
./environment_setup.sh vila
Pelatihan VILA berisi tiga langkah, untuk hyperparameter tertentu, silakan periksa folder scripts/v1_5:
Kami menggunakan kumpulan data LLaVA-CC3M-Pretrain-595K untuk menyelaraskan modalitas tekstual dan visual.
Skrip tahap 1 menggunakan dua parameter dan dapat dijalankan pada satu node 8xA100. BASE_MODEL_PATH
menunjuk ke repositori online atau lokal, seperti NousResearch/Llama-2-7b-hf
. OUTPUT_NAME
menunjuk ke direktori target di bawah checkpoints
, yang kemudian akan menyimpan proyektor multimoda terlatih.
skrip bash/v1_5/paper/1_mm_align.sh [BASE_MODEL_PATH] [OUTPUT_NAME]
Kami menggunakan kumpulan data MMC4 dan Coyo untuk melatih VLM dengan pasangan gambar-teks yang disisipkan.
skrip bash/v1_5/paper/2_pretrain_mmc4_coyo.sh [CODE_PATH] [BASE_MODEL_PATH] [STAGE1_PATH] [OUTPUT_NAME]
Skrip tahap 2 mengambil empat argumen. CODE_PATH
adalah jalur absolut ke basis kode VILA kami, BASE_MODEL_PATH
memiliki arti yang mirip dengan apa yang disajikan dalam skrip tahap 1. STAGE1_PATH
menunjuk ke OUTPUT_NAME
tahap 1 (yaitu tempat pos pemeriksaan tahap 1 disimpan). OUTPUT_NAME
adalah nama folder yang diinginkan di bawah checkpoints
yang menyimpan pos pemeriksaan prapelatihan. Skrip yang kami sediakan untuk tahap ini dijalankan pada slurm, dan kami mengharapkannya dijalankan pada 16 node (128 GPU).
Ini adalah tahap terakhir dari pelatihan VILA, di mana kami menyesuaikan model untuk mengikuti instruksi multimodal pada subset M3IT, FLAN, dan ShareGPT4V. Tahap ini berjalan pada node 8xA100.
skrip bash/v1_5/paper/3_sft.sh [STAGE2_PATH] [OUTPUT_NAME]
Skrip tahap 3 mengambil dua argumen. STAGE2_PATH
menunjuk ke OUTPUT_NAME
skrip tahap 2 (yaitu tempat pos pemeriksaan tahap 2 disimpan). OUTPUT_NAME
adalah nama folder yang diinginkan di bawah checkpoints
yang menyimpan pos pemeriksaan terakhir.
Anda dapat mengikuti Llava1.5 eval untuk mengunduh semua kumpulan data. Setelah mendownload semua dataset, harap letakkan di bawah playground/data/eval
.
Silakan lakukan perubahan berikut pada skrip evaluasi MME. Silakan cari:
data_path = "MME_Benchmark_release_version"
dan ganti dengan:
data_path = os.path.join(script_dir, "MME_Benchmark_release_version")
Kami menyediakan skrip tekan tombol untuk melakukan evaluasi pada 10 set data yang tidak memerlukan evaluasi berbantuan GPT:
./scripts/v1_5/eval/eval_all.sh [CHECKPOINT_PATH] [MODEL_NAME] [CONV_MODE]
Skrip ini mengambil dua parameter, CHECKPOINT_PATH
menunjuk ke pos pemeriksaan model tahap 3, dan MODEL_NAME
akan menjadi nama hasil evaluasi.
Evaluasi VQAv2 dan Vizwiz dihosting di eval.ai. Anda perlu mendaftarkan akun dan membuat tim untuk dapat mengirimkan eval.
Evaluasi MMBench dan MMBench_CN dihosting di server evaluasi lain. Pastikan Anda mengubah nama file sebelum mengirimkannya, jika tidak, server akan menyimpan hasil dalam cache dan akan selalu memberikan hasil yang salah kepada Anda.
Kami menyediakan skrip cepat untuk secara otomatis mengatur file prediksi yang perlu dikirimkan ke server:
skrip python/v1_5/eval/copy_predictions.py [MODEL_NAME]
Anda akan dapat menemukan prediksi di bawah playground/data/predictions_upload/[MODEL_NAME]
setelah menjalankan skrip ini.
Silakan ikuti langkah-langkah evaluasi di Video-LLaVA untuk persiapan kumpulan data.
./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]
Kami menyediakan cuplikan untuk inferensi cepat dengan perintah dan gambar pengguna.
Kesimpulan Llama-3-VILA1.5-8B:
python -W abaikan llava/eval/run_vila.py --model-path Efisien-Besar-Model/Llama-3-VILA1.5-8b-Fix --mode konv llama_3 --query "<image>n Tolong jelaskan kondisi lalu lintasnya." --file-gambar "av.png"
Kesimpulan VILA1.5-40B:
python -W abaikan llava/eval/run_vila.py --model-jalur Model-Besar Efisien/VILA1.5-40b --mode konv hermes-2 --query "<image>n Tolong jelaskan kondisi lalu lintasnya." --file-gambar "av.png"
Inferensi video VILA1.5-3B:
python -W abaikan llava/eval/run_vila.py --model-jalur Model-Besar Efisien/VILA1.5-3b --mode konv vicuna_v1 --query "<video>n Tolong jelaskan video ini." --file video "demo.mp4"
Model VILA kami dikuantisasi oleh AWQ menjadi 4 bit untuk inferensi edge yang efisien. Kami menyediakan skrip tombol untuk mengkuantisasi VILA dengan AWQ.
Kami mendukung VILA 4bit terkuantisasi AWQ pada platform GPU melalui TinyChat. Kami menyediakan tutorial untuk menjalankan model dengan TinyChat setelah kuantisasi. Kami juga memberikan instruksi untuk meluncurkan server Gradio (didukung oleh TinyChat dan AWQ) untuk melayani model VILA terkuantisasi 4-bit.
Kami selanjutnya mendukung model VILA 4bit terkuantisasi AWQ kami pada berbagai platform CPU dengan arsitektur x86 dan ARM dengan TinyChatEngine kami. Kami juga menyediakan tutorial terperinci untuk membantu pengguna menerapkan VILA pada CPU yang berbeda.
Server API sederhana telah disediakan untuk melayani model VILA. Server dibangun di atas FastAPI dan Huggingface Transformers. Server dapat dijalankan dengan perintah berikut:
python -W abaikan server.py --pelabuhan 8000 --model-jalur Model-Besar Efisien/VILA1.5-3B --mode konv vicuna_v1
docker build -t vila-server: .docker run terbaru --gpus all --ipc=host --ulimit memlock=-1 --ulimit stack=67108864 -v ./hub:/root/.cache/huggingface/hub -itu --rm -p 8000:8000 -e VILA_MODEL_PATH=Model-Besar-Efisien/VILA1.5-3B -e VILA_CONV_MODE=vicuna_v1 vila-server:terbaru
Kemudian Anda dapat memanggil titik akhir dengan OpenAI SDK sebagai berikut:
dari openai import OpenAIclient = OpenAI(base_url="http://localhost:8000",api_key="fake-key", )response = klien.chat.completions.create(messages=[ {"peran": "pengguna","konten": [ {"type": "text", "text": "Apa yang ada di gambar ini?"}, {"type": "image_url","image_url": {"url": "https://blog.logomyway.com/wp-content/uploads/2022/01/NVIDIA-logo.jpg",# Atau Anda bisa meneruskan gambar yang dikodekan base64# "url": "data:image/png;base64,<base64_encoded_image>",}, }, ], } ],max_tokens=300,model="VILA1.5-3B",# Anda dapat memasukkan parameter tambahan sebagai berikutextra_body={"num_beams": 1, "use_cache": False}, )print(response.choices[0].message.content)
CATATAN: Server API ini dimaksudkan untuk tujuan evaluasi saja dan belum dioptimalkan untuk penggunaan produksi. Ini hanya diuji pada GPU A100 dan H100.
Kami merilis VILA1.5-3B, VILA1.5-3B-S2, Llama-3-VILA1.5-8B, VILA1.5-13B, VILA1.5-40B dan model terkuantisasi AWQ 4-bit VILA1.5- 3B-AWQ, VILA1.5-3B-S2-AWQ, Llama-3-VILA1.5-8B-AWQ, VILA1.5-13B-AWQ, VILA1.5-40B-AWQ.
Kode ini dirilis di bawah lisensi Apache 2.0 seperti yang ditemukan dalam file LICENSE.
Anak timbangan yang telah dilatih sebelumnya dirilis di bawah lisensi CC-BY-NC-SA-4.0.
Layanan ini merupakan pratinjau penelitian yang ditujukan untuk penggunaan non-komersial saja, dan tunduk pada lisensi dan ketentuan berikut:
Lisensi Model LLaMA. Untuk ketentuan penggunaan pos pemeriksaan LLAMA3-VILA, silakan merujuk ke Lisensi LLAMA3 untuk detail tambahan.
Ketentuan Penggunaan data yang dihasilkan oleh OpenAI
Lisensi Kumpulan Data untuk masing-masing yang digunakan selama pelatihan.
*Yao Lu: Nvidia | *Hongxu Yin: Nvidia | *Ji Lin: OpenAI (pekerjaan dilakukan di Nvidia dan MIT) |
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 | Lagu 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: basis kode yang kami bangun. Terima kasih atas kerja luar biasa mereka.
InternVL: untuk InternViT sumber terbuka (digunakan di VILA1.5-40b) dan campuran data InternVL-SFT (terinspirasi oleh LLaVA-1.6) yang digunakan di semua model VILA1.5.
Vicuna: model bahasa besar bersumber terbuka yang menakjubkan!
Video-ChatGPT: kami meminjam skrip evaluasi video dari repositori ini.
MMC4, COYO-700M, M3IT, OpenORCA/FLAN, ShareGPT4V, WIT, GSM8K-ScRel, VisualGenome, VCR, ScienceQA, Shot2Story, Youcook2, Vatex, ShareGPT-Video untuk menyediakan dataset yang digunakan dalam penelitian ini.