Eine Open-Source-Implementierung der Llava-Next -Serie zur Erleichterung der großen multimodalen Modellgemeinschaft.
Ressourcen: [? Umarmung]
Weitere Informationen finden Sie in modelzoo.md.
| Name | Vit | Llm | Gewichte | Mme | SAMEN | 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 | LAMA3-8B | Sft | 1591 | 72.7 | 73.4 | 72.6 | 69.0 | 65.0 | 65,5 |
| Open-Llava-Next-Llama3-8b | Clip-L-336 | LAMA3-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
Sie sollten diese Anweisungsdaten befolgen . MD , um die Trainingsdatensätze zu verwalten.
Open-Llava-Next-Training besteht aus zwei Phasen: (1) Feature-Ausrichtungsstufe: Verwenden Sie eine 558K-Untergruppe des Laion-CC-SBU-Datensatzes, um einen gefrorenen, vorab vorbereiteten Vision-Encoder mit einem gefrorenen LLM zu verbinden. (2) Visuelle Anweisungsstufe: Fintune das gesamte Modell mit 1 m vollständig Open Source -Daten. In der visuellen Anweisungsabstimmung werden detaillierte Datenstatik bereitgestellt. Wir nehmen die Variante Vicuna-V1.5-7b als Beispiel, um die Schulungs- und Bewertungsdetails vorzustellen.
Open-Llava-Next-Serien werden auf A100 GPUs mit 80-GB-Speicher geschult. Um auf weniger GPUs zu trainieren, können Sie die per_device_train_batch_size reduzieren und die gradient_accumulation_steps entsprechend erhöhen. Die Verwendung von DeepSpeed Zero-3 kann die Speicheranforderungen weiter verringern. Halten Sie immer die globale Batch -Größe gleich: per_device_train_batch_size x gradient_accumulation_steps x num_gpus .
Wir verwenden einen Satz von Hyperparametern wie Llava bei der Finetuning. Beide Hyperparameter, die bei Vorab- und Finetuning verwendet werden, sind unten bereitgestellt.
| Hyperparameter | Globale Chargengröße | Projektor LR | Epochen | Maximale Länge | Gewichtsverfall |
|---|---|---|---|---|---|
| Open-Llava-Next-7b | 256 | 1e-3 | 1 | 4096 | 0 |
| Hyperparameter | Globale Chargengröße | LLM LR | Projektor LR | Vision Tower LR | Epochen | Maximale Länge | Gewichtsverfall |
|---|---|---|---|---|---|---|---|
| Open-Llava-Next-7b | 128 | 2E-5 | 2E-5 | 2E-6 | 1 | 4096 | 0 |
Bitte laden Sie hier die 558K-Teilmenge des Laion-CC-SBU-Datensatzes herunter.
Pretrain dauert ungefähr 5 Stunden für Open-Llava-Next-7b auf 16 x A100 (80 g).
Trainingsskript mit DeepSpeed Zero-2: pretrain.sh .
--mm_projector_type mlp2x_gelu : Der zweischichtige MLP-Visionsprachanschluss.--vision_tower openai/clip-vit-large-patch14-336 : Clip Vit-L/14 336px. Trainingsskript mit DeepSpeed Zero-2: finetune.sh .
Neue Optionen zu beachten:
--unfreeze_mm_vision_tower True : Finetune Vision Tower.--mm_vision_tower_lr 2e-6 : Lernrate des Vision Tower.--image_aspect_ratio anyres : Verarbeiten Sie ein Bild mit variablen Auflösungen.--mm_patch_merge_type spatial_unpad : Dadurch wird ein Pytorch-Tensor eines gepolsterten und gepolsterten Bildes abgelöst und durch Einfügen von lernbaren Newline-Vektoren in Bildtoken eingebracht. Dies wird verwendet, um Bildtoken zu verarbeiten. Siehe Evaluation.md.
Wenn Sie dieses Projekt in Ihrer Forschung nützlich finden, sollten Sie zitieren:
@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 }
}