Strong and Open Vision Language Assistant for Mobile Devices
Strong and Open Vision Language Assistant for Mobile Devices
MobileVLM V2: Faster and Stronger Baseline for Vision Language Model
MobileVLM V2’s architecture. Xv and Xq indicate image and language instruction, respectively, and Ya refers to the text response from the language model MobileLLaMA. The diagram in the lower right corner is a detailed description of LDPv2, i.e., the lightweight downsample projector v2.
MobileVLM: A Fast, Strong and Open Vision Language Assistant for Mobile Devices
The MobileVLM architecture (right) utilizes MobileLLaMA as its language model, intakes Xv and Xq which are image and language instructions as respective inputs and gives Ya as the output language response. LDP refers to a lightweight downsample projector.
Feb. 26th, 2024: MobileVLM V2 training data and code are available now! Follow the instructions below to train your own mobileVLM V2 model !Feb. 06th, 2024: MobileVLM V2 is out! Paper here! The inference code of MobileVLM V2 is available now! Our MobileVLM V2 weights are publicly available on the HuggingFace website. Enjoy them !Feb. 06th, 2024: The SFT code and dataset of MobileLLaMA are released now! You can train your own chat model.Jan. 23rd, 2024: MobileVLM is officially supported by llama.cpp now ! Have a try !Jan. 15th, 2024: Customized llama.cpp for MobileVLM and its deployment instruction on mobile devices.Jan. 11st, 2024: The training and evaluation codes of MobileVLM are available now! Follow these step-by-step instructions below to easily train your own mobileVLM in 5 hours ⚡️ !Dec. 31st, 2023: Our MobileVLM weights are uploaded on the HuggingFace website. We also provide inference examples for the MobileLLaMA/MobileVLM model so that anyone can enjoy them early.Dec. 29th, 2023: Our MobileLLaMA weights are uploaded on the HuggingFace website. Enjoy them !Dec. 28th, 2023: We release MobileVLM: A Fast, Strong and Open Vision Language Assistant for Mobile Devices on arxiv. Refer to our paper for more details !| Model | LLM | GQA | SQAI | VQAT | POPE | MMEP | MMBdev | Avg. |
|---|---|---|---|---|---|---|---|---|
| 56.1 | 57.3 | 41.5 | 84.5 | 1196.2 | 53.2 | 58.7 | ||
| MobileVLM V2 1.7B | MobileLLaMA 1.4B | 59.3 | 66.7 | 52.1 | 84.3 | 1302.8 | 57.7 | 64.2 |
| MobileVLM-3B | MobileLLaMA 2.7B | 59.0 | 61.2 | 47.5 | 84.9 | 1288.9 | 59.6 | 62.8 |
| MobileVLM V2 3B | MobileLLaMA 2.7B | 61.1 | 70.0 | 57.5 | 84.7 | 1440.5 | 63.2 | 68.1 |
| MobileVLM V2 7B | Vicuna-7B | 62.6 | 74.8 | 62.3 | 85.3 | 1560.7 | 69.2 | 72.1 |
Usage and License Notices: This project utilizes certain datasets and checkpoints that are subject to their respective original licenses. Users must comply with all terms and conditions of these original licenses. This project is licensed permissively under the Apache 2.0 license and does not impose any additional constraints. LLaVA
Clone this repository and navigate to MobileVLM folder
git clone https://github.com/Meituan-AutoML/MobileVLM.git
cd MobileVLMInstall Package
conda create -n mobilevlm python=3.10 -y
conda activate mobilevlm
pip install --upgrade pip
pip install -r requirements.txtimport torch
from transformers import LlamaTokenizer, LlamaForCausalLM
model_path = 'mtgv/MobileLLaMA-1.4B-Chat'
tokenizer = LlamaTokenizer.from_pretrained(model_path)
model = LlamaForCausalLM.from_pretrained(
model_path, torch_dtype=torch.float16, device_map='auto',
)
prompt = 'Q: What is the largest animal?\nA:'
input_ids = tokenizer(prompt, return_tensors="pt").input_ids
generation_output = model.generate(
input_ids=input_ids, max_new_tokens=32
)
print(tokenizer.decode(generation_output[0]))…The training process of MobileVLM V2 is divided into two stages:
Similar to MobileVLM, please firstly download MobileLLaMA chatbot checkpoints from huggingface website ( 1.7B, 2.7B). Please note that this is optional (it depends on your working environment), run the training script we provide below and the model will be automatically downloaded by the transformers library.
For convenience, assume your working directory /path/to/project/mobilevlm as work_dir:
cd ${work_dir} && mkdir -p data/pretrain_data data/finetune_data data/benchmark_dataprepare pre-training data
cd ${work_dir}/data/pretrain_dataprepare multi-task training data
cd ${work_dir}/data/finetune_dataprepare benchmark data
We evaluate models on a diverse set of 6 benchmarks, i.e. GQA, MMBench, MME, POPE, SQA, TextVQA. We do not evaluate using beam search to make the inference process consistent with the chat demo of real-time outputs. You should follow these instructions to manage the datasets.
unzip benchmark_data.zip && cd benchmark_databmk_dir=${work_dir}/data/benchmark_datacd ${bmk_dir}/gqa && ln -s /path/to/gqa/images imagesNo open issues yet, or sync has not completed.