VILA arxiv / VILA Demo / VILA Huggingface
VILA é um modelo de linguagem visual (VLM) pré-treinado com dados de imagem-texto intercalados em escala, permitindo a compreensão de vídeo e capacidades de compreensão de múltiplas imagens . VILA pode ser implantado no limite por meio de quantização AWQ de 4 bits e estrutura TinyChat. Descobrimos: (1) os pares imagem-texto não são suficientes, a intercalação de imagem-texto é essencial; (2) descongelar o LLM durante o pré-treinamento de imagem-texto intercalado permite a aprendizagem no contexto; (3) a recombinação de dados de instrução somente texto é crucial para impulsionar o desempenho do VLM e somente texto; (4) a compactação de token estende #video frames. VILA revela recursos atraentes, incluindo: raciocínio em vídeo, aprendizagem em contexto, cadeia visual de pensamento e melhor conhecimento do mundo.
[2024/10] VILA-M3, um VLM médico SOTA ajustado em VILA1.5 é lançado! VILA-M3 supera significativamente o Llava-Med e está no mesmo nível do Med-Gemini e é totalmente de código aberto! modelo de código
[2024/10] Lançamos o VILA-U: um modelo de base unificado que integra compreensão e geração de vídeo, imagem e linguagem.
[2024/08] Lançamos o LongVILA que oferece suporte à compreensão de vídeos longos (legendas, controle de qualidade, agulha no palheiro) de até 1.024 quadros.
[2024/07] VILA1.5 também ocupa o 1º lugar (modelo OSS) na tabela de classificação dos testes MLVU.
[2024/06] VILA1.5 é agora o melhor VLM de código aberto na tabela de classificação MMMU e na tabela de classificação Video-MME!
[2024/05] Lançamos o VILA-1.5, que oferece capacidade de compreensão de vídeo . VILA-1.5 vem com quatro tamanhos de modelo: 3B/8B/13B/40B.
[2024/05] Lançamos modelos VILA-1.5 de 4 bits quantizados por AWQ. VILA-1.5 pode ser implantado com eficiência em diversas GPUs NVIDIA (A100, 4090, 4070 Laptop, Orin, Orin Nano) por back-ends TinyChat e TensorRT-LLM.
[2024/03] VILA foi aceita pelo CVPR 2024!
[2024/02] Lançamos modelos VILA de 4 bits quantizados por AWQ, implantáveis em Jetson Orin e laptops por meio de TinyChat e TinyChatEngine.
[2024/02] VILA é lançada. Propomos o pré-treinamento imagem-texto intercalado que permite VLM multi-imagem . VILA vem com impressionantes capacidades de aprendizagem contextual. Abrimos tudo em código: incluindo código de treinamento, código de avaliação, conjuntos de dados, modelos de checkpts.
[2023/12] O artigo está no Arxiv!
Prec. | VQAv2 | GQG | VizWiz | SQA-I | VQA-T | PAPA | MME | MMB | MMB-CN | SEMENTE | SEMENTE-I | MMMU (valor) | MMMU (teste) | banco de llava | MM-Vet | Média | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 |
Lhama-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 |
Lhama-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 |
NOTA: VQAV2 e VizWiz são test-dev, a precisão média é calculada sobre todos os conjuntos de dados e os números MME são divididos por 20.
Prec. | Teste de Percepção | AtividadeNet | MSVD | MSRVTT | TGIF | EgoSchema (teste) | 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 | ||
Lhama-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 |
Precisão | 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 |
Lhama-3-VILA1.5-8B | fp16 | 74,9 | 57,4 | 10.2 |
Lhama-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 | -- |
NOTA: Medido usando o backend do TinyChat em tamanho de lote = 1.
Dica: explique detalhadamente os elementos visuais e narrativos do vídeo.
Legenda: O vídeo mostra as mãos de uma pessoa trabalhando em uma superfície branca. Eles estão dobrando um pedaço de tecido com estampa xadrez em tons de azul e branco. O tecido está sendo dobrado em um formato menor e mais compacto. As unhas da pessoa estão pintadas de vermelho e ela usa uma roupa preta e vermelha. Há também uma régua e um lápis na superfície, sugerindo que medidas e precisão estão envolvidas no processo.
./environment_setup.sh vila
O treinamento VILA contém três etapas, para hiperparâmetros específicos, confira a pasta scripts/v1_5:
Utilizamos o conjunto de dados LLaVA-CC3M-Pretrain-595K para alinhar as modalidades textuais e visuais.
O script do estágio 1 leva dois parâmetros e pode ser executado em um único nó 8xA100. BASE_MODEL_PATH
aponta para um repositório huggingface online ou local, como NousResearch/Llama-2-7b-hf
. OUTPUT_NAME
aponta para um diretório de destino em checkpoints
, que salvará o projetor multimodal treinado posteriormente.
bash scripts/v1_5/paper/1_mm_align.sh [BASE_MODEL_PATH] [OUTPUT_NAME]
Usamos o conjunto de dados MMC4 e Coyo para treinar VLM com pares imagem-texto intercalados.
bash scripts/v1_5/paper/2_pretrain_mmc4_coyo.sh [CODE_PATH] [BASE_MODEL_PATH] [STAGE1_PATH] [OUTPUT_NAME]
O script do estágio 2 leva quatro argumentos. CODE_PATH
é o caminho absoluto para nossa base de código VILA, BASE_MODEL_PATH
tem um significado semelhante ao que é apresentado no script do estágio 1. STAGE1_PATH
aponta para OUTPUT_NAME
do estágio 1 (ou seja, onde o ponto de verificação do estágio 1 está armazenado). OUTPUT_NAME
é o nome da pasta desejada nos checkpoints
que salva o ponto de verificação de pré-treinamento. O script que fornecemos para este estágio é executado em slurm e esperamos que seja executado em 16 nós (128 GPUs).
Esta é a última etapa do treinamento VILA, na qual ajustamos o modelo para seguir instruções multimodais em um subconjunto de M3IT, FLAN e ShareGPT4V. Este estágio é executado em um nó 8xA100.
bash scripts/v1_5/paper/3_sft.sh [STAGE2_PATH] [OUTPUT_NAME]
O script do estágio 3 leva dois argumentos. STAGE2_PATH
aponta para OUTPUT_NAME
do script do estágio 2 (ou seja, onde o ponto de verificação do estágio 2 está armazenado). OUTPUT_NAME
é o nome da pasta desejada nos checkpoints
que armazena o ponto de verificação final.
Você pode seguir a avaliação Llava1.5 para baixar todos os conjuntos de dados. Depois de baixar todos os conjuntos de dados, coloque-os em playground/data/eval
.
Faça as seguintes alterações no roteiro de avaliação do MME. Por favor procure por:
data_path = "MME_Benchmark_release_version"
e substitua-o por:
data_path = os.path.join(script_dir, "MME_Benchmark_release_version")
Fornecemos um script de apertar o botão para realizar a avaliação em todos os 10 conjuntos de dados que não requerem avaliação assistida por GPT:
./scripts/v1_5/eval/eval_all.sh [CHECKPOINT_PATH] [MODEL_NAME] [CONV_MODE]
Este script leva dois parâmetros, CHECKPOINT_PATH
aponta para o ponto de verificação do modelo do estágio 3 e MODEL_NAME
será o nome dos resultados da avaliação.
As avaliações VQAv2 e Vizwiz estão hospedadas em eval.ai. Você precisa registrar uma conta e criar uma equipe para poder enviar avaliações.
MMBench e MMBench_CN eval estão hospedados em outro servidor de avaliação. Certifique-se de alterar o nome do arquivo antes de enviar, caso contrário, o servidor armazenará os resultados em cache e sempre retornará resultados errados para você.
Fornecemos um script rápido para organizar automaticamente os arquivos de previsão que precisam ser enviados aos servidores:
scripts python/v1_5/eval/copy_predictions.py [MODEL_NAME]
Você poderá encontrar as previsões em playground/data/predictions_upload/[MODEL_NAME]
após executar este script.
Siga as etapas de avaliação no Video-LLaVA para preparação do conjunto de dados.
./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]
Fornecemos snippets para inferência rápida com solicitações e imagens do usuário.
Inferência Llama-3-VILA1.5-8B:
python -W ignorar llava/eval/run_vila.py --model-path Eficiente-Large-Model/Llama-3-VILA1.5-8b-Fix --conv-mode chama_3 --query "<image>n Por favor, descreva a condição do tráfego." --arquivo de imagem "av.png"
Inferência VILA1.5-40B:
python -W ignorar llava/eval/run_vila.py --model-path Eficiente-Large-Model/VILA1.5-40b --conv-mode hermes-2 --query "<image>n Por favor, descreva a condição do tráfego." --arquivo de imagem "av.png"
Inferência de vídeo VILA1.5-3B:
python -W ignorar llava/eval/run_vila.py --model-path Eficiente-Large-Model/VILA1.5-3b --conv-mode vicunha_v1 --query "<video>n Por favor, descreva este vídeo." --arquivo de vídeo "demo.mp4"
Nossos modelos VILA são quantizados por AWQ em 4 bits para inferência eficiente no limite. Fornecemos um script de apertar o botão para quantizar VILA com AWQ.
Oferecemos suporte a VILA de 4 bits quantizado por AWQ em plataformas GPU via TinyChat. Fornecemos um tutorial para executar o modelo com TinyChat após a quantização. Também fornecemos instruções para iniciar um servidor Gradio (desenvolvido por TinyChat e AWQ) para servir modelos VILA quantizados de 4 bits.
Oferecemos ainda suporte aos nossos modelos VILA de 4 bits quantizados por AWQ em várias plataformas de CPU com arquiteturas x86 e ARM com nosso TinyChatEngine. Também fornecemos um tutorial detalhado para ajudar os usuários a implantar o VILA em diferentes CPUs.
Um servidor API simples foi fornecido para atender modelos VILA. O servidor é construído sobre FastAPI e Huggingface Transformers. O servidor pode ser executado com o seguinte comando:
python -W ignorar server.py --porta 8000 --model-path Eficiente-Large-Model/VILA1.5-3B --conv-mode vicunha_v1
docker build -t vila-server: mais recente .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=Modelo Grande Eficiente/VILA1.5-3B -e VILA_CONV_MODE=vicunha_v1 vila-servidor:mais recente
Em seguida, você pode chamar o endpoint com o OpenAI SDK da seguinte maneira:
de importação openai OpenAIclient = OpenAI(base_url="http://localhost:8000",api_key="fake-key", )resposta = client.chat.completions.create(messages=[ {"role": "usuário","conteúdo": [ {"type": "text", "text": "O que há nesta imagem?"}, {"type": "image_url","image_url": {"url": "https://blog.logomyway.com/wp-content/uploads/2022/01/NVIDIA-logo.jpg",# Ou você pode passe uma imagem codificada em base64# "url": "data:image/png;base64,<base64_encoded_image>",}, }, ], } ],max_tokens=300,model="VILA1.5-3B",# Você pode passar parâmetros extras como segueextra_body={"num_beams": 1, "use_cache": False}, )imprimir(response.choices[0].message.content)
NOTA: Este servidor API destina-se apenas a fins de avaliação e não foi otimizado para uso em produção. Ele só foi testado em GPUs A100 e H100.
Lançamos VILA1.5-3B, VILA1.5-3B-S2, Llama-3-VILA1.5-8B, VILA1.5-13B, VILA1.5-40B e os modelos quantizados por AWQ de 4 bits VILA1.5- 3B-AWQ, VILA1.5-3B-S2-AWQ, Lhama-3-VILA1.5-8B-AWQ, VILA1.5-13B-AWQ, VILA1.5-40B-AWQ.
O código é lançado sob a licença Apache 2.0 conforme encontrado no arquivo LICENSE.
Os pesos pré-treinados são liberados sob a licença CC-BY-NC-SA-4.0.
O serviço é uma prévia de pesquisa destinada apenas para uso não comercial e está sujeito às seguintes licenças e termos:
Licença Modelo do LLaMA. Para obter os termos de uso dos pontos de verificação LLAMA3-VILA, consulte a licença LLAMA3 para obter detalhes adicionais.
Termos de Uso dos dados gerados pela OpenAI
Licenças de conjunto de dados para cada um usado durante o treinamento.
*Yao Lu: Nvidia | *Hongxu Yin: Nvidia | *Ji Lin: OpenAI (trabalho realizado na Nvidia e 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, Universidade da Califórnia em 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: a base de código sobre a qual construímos. Obrigado pelo seu maravilhoso trabalho.
InternVL: para InternViT de código aberto (usado no VILA1.5-40b) e a combinação de dados InternVL-SFT (inspirado no LLaVA-1.6) usado em todos os modelos VILA1.5.
Vicuna: o incrível modelo de linguagem grande e de código aberto!
Video-ChatGPT: pegamos emprestado o script de avaliação de vídeo deste repositório.
MMC4, COYO-700M, M3IT, OpenORCA/FLAN, ShareGPT4V, WIT, GSM8K-ScRel, VisualGenome, VCR, ScienceQA, Shot2Story, Youcook2, Vatex, ShareGPT-Video por fornecer conjuntos de dados usados nesta pesquisa.