VILA arxiv / VILA Демо / VILA Huggingface
VILA — это модель визуального языка (VLM), предварительно обученная с помощью чередующихся данных изображения и текста в масштабе, обеспечивающая понимание видео и понимание нескольких изображений . VILA можно развернуть на периферии с помощью 4-битного квантования AWQ и платформы TinyChat. Мы обнаруживаем: (1) пар изображение-текст недостаточно, необходимо чередование изображения-текста; (2) размораживание LLM во время предварительного обучения чередующегося изображения и текста обеспечивает контекстное обучение; (3) повторное смешивание данных только текстовых инструкций имеет решающее значение для повышения производительности как VLM, так и только текстовых команд; (4) сжатие токенов расширяет #videoframes. VILA представляет привлекательные возможности, в том числе: видеорассуждение, контекстное обучение, визуальную цепочку мыслей и лучшее знание мира.
[2024/10] Выпущен VILA-M3, медицинский VLM SOTA, настроенный на VILA1.5! VILA-M3 значительно превосходит Llava-Med и находится на одном уровне с Med-Gemini и имеет полностью открытый исходный код! модель кода
[2024/10] Мы выпускаем VILA-U: унифицированную базовую модель, которая объединяет понимание и генерацию видео, изображения, языка.
[2024/08] Мы выпускаем LongVILA, который поддерживает понимание длинных видео (субтитры, контроль качества, «Иголка в стоге сена») до 1024 кадров.
[2024/07] VILA1.5 также занимает 1-е место (модель OSS) в таблице лидеров тестов MLVU.
[2024/06] VILA1.5 теперь является лучшим VLM с открытым исходным кодом в таблицах лидеров MMMU и Video-MME!
[2024/05] Мы выпускаем VILA-1.5, которая обеспечивает возможность понимания видео . VILA-1.5 поставляется в четырех типоразмерах: 3B/8B/13B/40B.
[2024/05] Мы выпускаем 4-битные модели VILA-1.5 с квантованием AWQ. VILA-1.5 эффективно развертывается на различных графических процессорах NVIDIA (A100, 4090, 4070 Laptop, Orin, Orin Nano) с помощью серверных частей TinyChat и TensorRT-LLM.
[2024/03] VILA принята на CVPR 2024!
[2024/02] Мы выпускаем 4-битные модели VILA с квантованием AWQ, которые можно развернуть на Jetson Orin и ноутбуках через TinyChat и TinyChatEngine.
[2024/02] Выходит VILA. Мы предлагаем предварительное обучение чередующегося изображения и текста, которое позволяет использовать VLM с несколькими изображениями . VILA обладает впечатляющими возможностями контекстного обучения. Мы открываем исходный код всего: включая обучающий код, оценочный код, наборы данных, модели ckpts.
[2023/12] Статья на Arxiv!
Prec. | VQAv2 | GQA | ВизВиз | СКА-I | ВКА-Т | ПОПА | ММЕ | ММБ | ММБ-CN | СЕМЯ | СЕМЕНА-I | МММУ (вал) | МММУ (тест) | лава-скамейка | ММ-Вет | Средний | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ВИЛА1.5-3Б | фп16 | 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 |
ВИЛА1.5-3B-S2 | фп16 | 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-ВИЛА1.5-8Б | фп16 | 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 |
ВИЛА1.5-13Б | фп16 | 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 |
ВИЛА1.5-40Б | фп16 | 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.
Prec. | Тест на восприятие | Активнетет | МСВД | МСРВТТ | ТГИФ | ЭгоСхема (тест) | КиноПайл | |
---|---|---|---|---|---|---|---|---|
ВИЛА1.5-3Б | фп16 | 47 | 50,2 | 76,6 | 57,5 | 51,7 | 42,6 | 37,9 |
ВИЛА1.5-3B-S2 | фп16 | 49,7 | 50,7 | 76,9 | 57,6 | 51,7 | ||
Лама-3-ВИЛА1.5-8Б | фп16 | 54,1 | 54,3 | 78,3 | 60,1 | 54,1 | 50,4 | 48,7 |
ВИЛА1.5-13Б | фп16 | 53,6 | 54,7 | 77,9 | 60,2 | 56 | 52,2 | 50,1 |
ВИЛА1.5-40Б | фп16 | 54 | 58 | 80,1 | 63 | 58,2 | 58,7 | 51,3 |
Точность | А100 | 4090 | Орин | |
---|---|---|---|---|
ВИЛА1.5-3Б | фп16 | 104,6 | 137,6 | 25,4 |
VILA1.5-3B-AWQ | int4 | 182,8 | 215,5 | 42,5 |
ВИЛА1.5-3B-S2 | фп16 | 104,3 | 137,2 | 24,6 |
VILA1.5-3B-S2-AWQ | int4 | 180,2 | 219,3 | 40,1 |
Лама-3-ВИЛА1.5-8Б | фп16 | 74,9 | 57,4 | 10.2 |
Лама-3-VILA1.5-8B-AWQ | int4 | 168,9 | 150,2 | 28,7 |
ВИЛА1.5-13Б | фп16 | 50,9 | ООМ | 6.1 |
VILA1.5-13B-AWQ | int4 | 115,9 | 105,7 | 20,6 |
ВИЛА1.5-40Б | фп16 | ООМ | ООМ | -- |
VILA1.5-40B-AWQ | int4 | 57,0 | ООМ | -- |
ПРИМЕЧАНИЕ. Измерено с использованием серверной части TinyChat при размере пакета = 1.
Подсказка: подробно продумайте визуальные и повествовательные элементы видео.
Подпись: На видео показаны руки человека, работающие на белой поверхности. Они складывают кусок ткани с клетчатым узором в оттенках синего и белого. Ткань складывается в меньшую и более компактную форму. Ногти человека окрашены в красный цвет, и он носит черно-красную одежду. На поверхности также присутствуют линейка и карандаш, что говорит о том, что в процессе участвуют измерения и точность.
./environment_setup.sh вилла
Обучение VILA состоит из трех шагов. Для конкретных гиперпараметров посетите папку scripts/v1_5:
Мы используем набор данных LLaVA-CC3M-Pretrain-595K для согласования текстовых и визуальных модальностей.
Сценарий этапа 1 принимает два параметра и может выполняться на одном узле 8xA100. BASE_MODEL_PATH
указывает на онлайн- или локальный репозиторий HuggingFace, например NousResearch/Llama-2-7b-hf
. OUTPUT_NAME
указывает на целевой каталог в checkpoints
, в котором впоследствии будет сохранен обученный мультимодальный проектор.
bash scripts/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 принимает четыре аргумента. CODE_PATH
— это абсолютный путь к нашей кодовой базе VILA, BASE_MODEL_PATH
имеет значение, аналогичное тому, что представлено в сценарии этапа 1. STAGE1_PATH
указывает на OUTPUT_NAME
этапа 1 (т. е. там, где хранится контрольная точка этапа 1). OUTPUT_NAME
— это желаемое имя папки под checkpoints
, в которой сохраняется контрольная точка перед обучением. Сценарий, который мы предоставили для этого этапа, выполняется на slurm, и мы ожидаем, что он будет выполняться на 16 узлах (128 графических процессоров).
Это последний этап обучения VILA, на котором мы настраиваем модель для выполнения мультимодальных инструкций на подмножестве M3IT, FLAN и ShareGPT4V. Этот этап выполняется на узле 8xA100.
bash scripts/v1_5/paper/3_sft.sh [STAGE2_PATH] [OUTPUT_NAME]
Сценарий этапа 3 принимает два аргумента. STAGE2_PATH
указывает на OUTPUT_NAME
сценария этапа 2 (т. е. там, где хранится контрольная точка этапа 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 [ПУТЬ_ПРОВЕРКИ] [ИМЯ_МОДЕЛИ] [CONV_MODE]
Этот сценарий принимает два параметра: CHECKPOINT_PATH
указывает на контрольную точку модели этапа 3, а MODEL_NAME
будет именем результатов оценки.
Оценки VQAv2 и Vizwiz размещаются на сайте eval.ai. Вам необходимо зарегистрировать учетную запись и создать команду, чтобы иметь возможность отправлять оценку.
MMBench и MMBench_CN eval размещаются на другом оценочном сервере. Обязательно измените имя файла перед отправкой, иначе сервер кэширует результаты и всегда будет возвращать вам неверный результат.
Мы предоставляем быстрый скрипт для автоматической организации файлов прогнозов, которые необходимо отправить на серверы:
скрипты Python/v1_5/eval/copy_predictions.py [ИМЯ_МОДЕЛИ]
Вы сможете найти прогнозы в 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 [ИМЯ_МОДЕЛИ]
Мы предоставляем фрагменты для быстрого вывода с подсказками для пользователя и изображениями.
Вывод Ламы-3-VILA1.5-8B:
python -W игнорировать llava/eval/run_vila.py --model-path Efficient-Large-Model/Llama-3-VILA1.5-8b-Fix --conv-mode llama_3 --query "<изображение>n Пожалуйста, опишите ситуацию на дорогах." --image-файл "av.png"
Вывод VILA1.5-40B:
python -W игнорировать llava/eval/run_vila.py --model-path Эффективная-большая-модель/VILA1.5-40b --conv-mode гермес-2 --query "<изображение>n Пожалуйста, опишите ситуацию на дорогах." --image-файл "av.png"
Видеовывод VILA1.5-3B:
python -W игнорировать llava/eval/run_vila.py --model-path Эффективная-большая-модель/VILA1.5-3b --conv-mode vicuna_v1 --query "<video>n Пожалуйста, опишите это видео." --видео-файл "demo.mp4"
Наши модели VILA квантуются с помощью AWQ в 4 бита для эффективного вывода на границе. Мы предоставляем скрипт для квантования VILA с помощью AWQ.
Мы поддерживаем 4-битный VILA с квантованием AWQ на платформах графических процессоров через TinyChat. Мы предоставляем руководство по запуску модели с помощью TinyChat после квантования. Мы также предоставляем инструкцию по запуску сервера Gradio (на базе TinyChat и AWQ) для обслуживания 4-битных квантованных моделей VILA.
Мы также поддерживаем наши 4-битные модели VILA с квантованием AWQ на различных платформах ЦП с архитектурой x86 и ARM с помощью нашего TinyChatEngine. Мы также предоставляем подробное руководство, которое поможет пользователям развернуть VILA на разных процессорах.
Для обслуживания моделей VILA предусмотрен простой сервер API. Сервер построен на основе FastAPI и Huggingface Transformers. Сервер можно запустить следующей командой:
python -W игнорировать server.py --порт 8000 --model-path Эффективная-большая-модель/VILA1.5-3B --conv-mode vicuna_v1
docker build -t vila-server: последний запуск .docker --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 следующим образом:
из импорта 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.
Мы выпускаем 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 | *Джи Линь: OpenAI (работа выполнена в Nvidia и MIT) |
Вэй Пин: Nvidia | Павел Молчанов: Nvidia | Эндрю Тао: Nvidia |
Хаотянь Тан: Массачусетский технологический институт | Шан Ян: Массачусетский технологический институт | Лигэн Чжу: Nvidia, Массачусетский технологический институт |
Вэй-Чен Ван: Массачусетский технологический институт | Фучжао Сюэ: Nvidia, NUS | Юнхао Фан: Nvidia, UCSD |
Юкан Чен: 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: для InternViT с открытым исходным кодом (используется в VILA1.5-40b) и смеси данных InternVL-SFT (на основе LLaVA-1.6), используемой во всех моделях VILA1.5.
Vicuna: потрясающая модель большого языка с открытым исходным кодом!
Video-ChatGPT: мы позаимствовали сценарий оценки видео из этого репозитория.
MMC4, COYO-700M, M3IT, OpenORCA/FLAN, ShareGPT4V, WIT, GSM8K-ScRel, VisualGenome, VCR, ScienceQA, Shot2Story, Youcook2, Vatex, ShareGPT-Video за предоставление наборов данных, использованных в этом исследовании.