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 프레임까지 긴 영상 이해(Captioning, 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의 네 가지 모델 크기가 있습니다.
[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] TinyChat 및 TinyChatEngine을 통해 Jetson Orin 및 노트북에 배포할 수 있는 AWQ 양자화 4비트 VILA 모델을 출시합니다.
[2024/02] VILA가 출시됩니다. 우리는 다중 이미지 VLM을 가능하게 하는 인터리브된 이미지-텍스트 사전 학습을 제안합니다. VILA에는 인상적인 상황별 학습 기능이 제공됩니다. 우리는 훈련 코드, 평가 코드, 데이터 세트, 모델 ckpt를 포함한 모든 것을 오픈 소스로 제공합니다.
[2023/12] Arxiv에 논문이 올라왔습니다!
Prec. | VQAv2 | GQA | 비즈위즈 | SQA-I | VQA-T | 로마 교황 | MME | MMB | MMB-CN | 씨앗 | SEED-I | 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 | 정수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 |
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 | 정수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 |
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 | 정수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으로 나뉩니다.
Prec. | 인지 테스트 | 액티비티넷 | 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 | 정수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 |
VILA1.5-13B | fp16 | 50.9 | OOM | 6.1 |
VILA1.5-13B-AWQ | 정수4 | 115.9 | 105.7 | 20.6 |
VILA1.5-40B | fp16 | OOM | OOM | -- |
VILA1.5-40B-AWQ | 정수4 | 57.0 | OOM | -- |
참고: 배치 크기 = 1에서 TinyChat 백엔드를 사용하여 측정되었습니다.
프롬프트: 비디오의 시각적 요소와 내러티브 요소를 자세히 설명합니다.
캡션: 영상은 흰색 표면에서 작업하는 사람의 손을 보여줍니다. 그들은 파란색과 흰색 색조의 체크 무늬 천 조각을 접고 있습니다. 직물은 더 작고 더 컴팩트한 형태로 접혀지고 있습니다. 그 사람의 손톱은 빨간색으로 칠해져 있고, 검은색과 빨간색의 옷을 입고 있습니다. 표면에는 눈금자와 연필도 그려져 있어 측정과 정밀도가 공정에 포함되어 있음을 나타냅니다.
./environment_setup.sh 빌라
VILA 교육에는 세 단계가 포함되어 있습니다. 특정 하이퍼파라미터에 대해서는 scripts/v1_5 폴더를 확인하세요.
우리는 LLaVA-CC3M-Pretrain-595K 데이터 세트를 활용하여 텍스트 양식과 시각적 양식을 정렬합니다.
1단계 스크립트는 두 개의 매개변수를 사용하며 단일 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
1단계 스크립트에 표시된 것과 비슷한 의미를 갖습니다. STAGE1_PATH
1단계의 OUTPUT_NAME
(즉, 1단계 체크포인트가 저장되는 위치)을 가리킵니다. OUTPUT_NAME
은 사전 훈련 체크포인트를 저장하는 checkpoints
아래에 원하는 폴더 이름입니다. 이 단계를 위해 우리가 제공한 스크립트는 slurm에서 실행되며 16개 노드(128 GPU)에서 실행될 것으로 예상됩니다.
이는 M3IT, FLAN 및 ShareGPT4V의 하위 집합에 대한 다중 모드 지침을 따르도록 모델을 조정하는 VILA 교육의 마지막 단계입니다. 이 단계는 8xA100 노드에서 실행됩니다.
bash 스크립트/v1_5/paper/3_sft.sh [STAGE2_PATH] [OUTPUT_NAME]
3단계 스크립트는 두 가지 인수를 사용합니다. STAGE2_PATH
2단계 스크립트의 OUTPUT_NAME
(즉, 2단계 체크포인트가 저장된 위치)을 가리킵니다. OUTPUT_NAME
은 최종 체크포인트를 저장하는 checkpoints
아래에 원하는 폴더 이름입니다.
Llava1.5 평가판을 따라 모든 데이터 세트를 다운로드할 수 있습니다. 모든 데이터세트를 다운로드한 후, 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 [CHECKPOINT_PATH] [MODEL_NAME] [CONV_MODE]
이 스크립트는 두 개의 매개변수를 사용합니다. CHECKPOINT_PATH
3단계 모델 체크포인트를 가리키고 MODEL_NAME
평가 결과의 이름이 됩니다.
VQAv2 및 Vizwiz 평가는 eval.ai에서 호스팅됩니다. 평가를 제출하려면 계정을 등록하고 팀을 만들어야 합니다.
MMBench 및 MMBench_CN 평가는 다른 평가 서버에서 호스팅됩니다. 제출하기 전에 파일 이름을 변경했는지 확인하십시오. 그렇지 않으면 서버가 결과를 캐시하고 항상 잘못된 결과를 반환합니다.
우리는 서버에 제출해야 하는 예측 파일을 자동으로 구성하는 빠른 스크립트를 제공합니다.
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 [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 무시 --model-path 효율적-대형-모델/Llama-3-VILA1.5-8b-Fix --conv 모드 llama_3 --query "<image>n 교통 상황을 설명해 주세요." --이미지 파일 "av.png"
VILA1.5-40B 추론:
python -W llava/eval/run_vila.py 무시 --model-path 효율적-대형-모델/VILA1.5-40b --conv-모드 헤르메스-2 --query "<image>n 교통 상황을 설명해 주세요." --이미지 파일 "av.png"
VILA1.5-3B 비디오 추론:
python -W llava/eval/run_vila.py 무시 --model-path 효율적-대형-모델/VILA1.5-3b --conv 모드 vicuna_v1 --query "<video>n 이 비디오에 대해 설명해주세요." --비디오 파일 "demo.mp4"
VILA 모델은 에지에서의 효율적인 추론을 위해 AWQ에 의해 4비트로 양자화됩니다. 우리는 AWQ로 VILA를 양자화하기 위한 푸시 버튼 스크립트를 제공합니다.
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 server.py 무시 --포트 8000 --model-path 효율적-대형-모델/VILA1.5-3B --conv 모드 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 import OpenAIclient = OpenAI(base_url="http://localhost:8000",api_key="fake-key", )응답 = 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}, )인쇄(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에서 생성된 데이터 이용 약관
훈련 중에 사용되는 각 데이터세트 라이선스.
*야오루: 엔비디아 | *홍수 인(Hongxu Yin): 엔비디아 | *지린: OpenAI(Nvidia 및 MIT에서 수행한 작업) |
웨이 핑: 엔비디아 | 파블로 몰차노프(Pavlo Molchanov): 엔비디아 | 앤드류 타오: 엔비디아 |
하오티안 탕: MIT | 상양: MIT | Ligeng Zhu: 엔비디아, MIT |
왕 웨이첸: MIT | 푸자오 쉬에(Fuzhao Xue): 엔비디아, NUS | 윤하오 팡: Nvidia, UCSD |
Yukang Chen: 엔비디아 | Zhuoyang Zhang: 엔비디아 | Yue Shen: 엔비디아 |
첸 웨이밍: 엔비디아 | 후이지 마오: 엔비디아 | Baifeng Shi: Nvidia, UC Berkeley |
얀 카우츠: 엔비디아 | 모하마드 쇼이비: 엔비디아 | 송한: 엔비디아, 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: 모든 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는 본 연구에 사용된 데이터 세트를 제공합니다.