Una implementación de código abierto de la serie Llava-Next para facilitar la gran comunidad de modelos multimodal.
Recursos: [? Huggingface]
Vea más detalles en Modelzoo.md.
| Nombre | Vit | LLM | Pesas | Mete | SEMILLA | SQA | MMB | MMB-CN | Textvqa | GQA |
|---|---|---|---|---|---|---|---|---|---|---|
| llava-next-vicuna-7b | Clip-l-336 | Vicuna-7b | Sft | 1519 | 70.2 | 70.1 | 67.4 | 60.6 | 64.9 | 64.2 |
| Open-Llava-Next-Vicuna-7b | Clip-l-336 | Vicuna-7b | PT, SFT | 1540 | 71.1 | 70.7 | 68.5 | 60.7 | 67.2 | 64.3 |
| llava-next-llama3-8b | Clip-l-336 | Llama3-8b | Sft | 1591 | 72.7 | 73.4 | 72.6 | 69.0 | 65.0 | 65.5 |
| Open-llava-next-llama3-8b | Clip-l-336 | Llama3-8b | PT, SFT | 1552 | 74.4 | 77.3 | 74.4 | 70.4 | 69.8 | 65.9 |
git clone https://github.com/xiaoachen98/Open-LLaVA-NeXT.git
cd Open-LLaVA-NeXTconda create -n llava-next python=3.10 -y
conda activate llava-next
pip install --upgrade pip # enable PEP 660 support
pip install -e . pip install -e ".[train]"
pip install flash-attn --no-build-isolation
Debe seguir estos datos de instrucciones . MD para administrar los conjuntos de datos de capacitación.
El entrenamiento Open-Llava-Next consta de dos etapas: (1) Etapa de alineación de características: Use un subconjunto de 558k del conjunto de datos Laion-CC-SBU para conectar un codificador de visión de pretrada congelada a un LLM congelado ; (2) Etapa de sintonización de instrucciones visuales: Finetune todo el modelo con 1M Datos de código abierto completamente abierto . La estadística de datos detallada se proporciona en el ajuste de instrucciones visuales. Tomamos la variante Vicuna-V1.5-7b como ejemplo para presentar los detalles de capacitación y evaluación.
Las series Open-Llava-Next están entrenadas en GPU A100 con memoria de 80 GB. Para entrenar en menos GPU, puede reducir el per_device_train_batch_size y aumentar el gradient_accumulation_steps en consecuencia. Y la utilización de Deepspeed cero-3 puede reducir aún más los requisitos de memoria. Siempre mantenga el tamaño de lotes global igual: per_device_train_batch_size x gradient_accumulation_steps x num_gpus .
Utilizamos un mismo conjunto de hiperparámetros que Llava en Finetuning. A continuación se proporcionan tanto los hiperparámetros utilizados en el pretratamiento como la delicadeza de la pinza.
| Hiperparámetro | Tamaño de lote global | Proyector LR | Épocas | Longitud máxima | Descomposición de peso |
|---|---|---|---|---|---|
| Open-llava-next-7b | 256 | 1e-3 | 1 | 4096 | 0 |
| Hiperparámetro | Tamaño de lote global | LLM LR | Proyector LR | Torre de visión LR | Épocas | Longitud máxima | Descomposición de peso |
|---|---|---|---|---|---|---|---|
| Open-llava-next-7b | 128 | 2E-5 | 2E-5 | 2E-6 | 1 | 4096 | 0 |
Descargue el subconjunto 558K del conjunto de datos Laion-CC-SBU con subtítulos de BLIP aquí.
El pretratado toma alrededor de 5 horas para Open-Llava-Next-7B en 16 x A100 (80 g).
Script de entrenamiento con Deepspeed Zero-2: pretrain.sh .
--mm_projector_type mlp2x_gelu : el conector del idioma de visión MLP de dos capas.--vision_tower openai/clip-vit-large-patch14-336 : Clip Vit-L/14 336px. Script de entrenamiento con DeepSpeed Zero-2: finetune.sh .
Nuevas opciones para tener en cuenta:
--unfreeze_mm_vision_tower True : Finetune Vision Tower.--mm_vision_tower_lr 2e-6 : tasa de aprendizaje de la torre de visión.--image_aspect_ratio anyres : procesar una imagen con resoluciones variables.--mm_patch_merge_type spatial_unpad : esto no lo hará un tensor de pytorch de una imagen acolchada y redimensionada, e al insertar vectores de Newline aprendibles en tokens de imagen, el modelo se da cuenta de la información espacial bidimensional. Esto se utiliza para procesar el token de imagen. Ver evaluación. MD.
Si encuentra útil este proyecto en su investigación, considere citar:
@misc { chen2024open ,
title = { Open-LLaVA-NeXT: An open-source implementation of LLaVA-NeXT series for facilitating the large multi-modal model community. } ,
author = { Chen, Lin and Xing, Long } ,
howpublished = { url{https://github.com/xiaoachen98/Open-LLaVA-NeXT} } ,
year = { 2024 } ,
doi = { 10.5281/zenodo.13935471 }
}