大規模なマルチモーダルモデルコミュニティを促進するためのLLAVA-Nextシリーズのオープンソース実装。
リソース: [?Huggingface]
modelzoo.mdの詳細をご覧ください。
| 名前 | vit | LLM | ウェイト | mme | シード | 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
この命令データに従って、トレーニングデータセットを管理する必要があります。
オープンラバネクストトレーニングは、次の2つの段階で構成されています。(1)機能アライメント段階:LAION-CC-SBUデータセットの558Kサブセットを使用して、凍結された前提型の視力エンコーダーを冷凍LLMに接続します。 (2)視覚命令チューニング段階:1M完全にオープンソースデータでモデル全体を微調整します。詳細なデータ統計は、視覚命令の調整で提供されています。 vicuna-v1.5-7bバリアントを例として、トレーニングと評価の詳細を提示します。
Open-Llava-Nextシリーズは、80GBメモリを備えたA100 GPUでトレーニングされています。より少ないGPUでトレーニングするには、 per_device_train_batch_sizeを削減し、それに応じてgradient_accumulation_stepsを増やすことができます。 Deepspeed Zero-3を使用すると、メモリ要件をさらに削減できます。常にグローバルバッチサイズを同じに保ちます: per_device_train_batch_size x gradient_accumulation_steps x num_gpus 。
FinetuningでLlavaと同じハイパーパラメーターのセットを使用します。以下に、事前トレーニングと微調整で使用されるハイパーパラメーターを以下に示します。
| ハイパーパラメーター | グローバルバッチサイズ | プロジェクターLR | エポック | 最大長 | 重量減衰 |
|---|---|---|---|---|---|
| Open-Llava-Next-7B | 256 | 1E-3 | 1 | 4096 | 0 |
| ハイパーパラメーター | グローバルバッチサイズ | LLM LR | プロジェクターLR | ビジョンタワーLR | エポック | 最大長 | 重量減衰 |
|---|---|---|---|---|---|---|---|
| Open-Llava-Next-7B | 128 | 2E-5 | 2E-5 | 2E-6 | 1 | 4096 | 0 |
LAION-CC-SBUデータセットの558Kサブセットをここからダウンロードしてください。
プレレインは、16 x A100(80g)でオープンラバネクティ7Bに約5時間かかります。
Deepspeed Zero-2を使用したトレーニングスクリプト: pretrain.sh 。
--mm_projector_type mlp2x_gelu :2層MLPビジョン言語コネクタ。--vision_tower openai/clip-vit-large-patch14-336 :クリップvit-l/14 336px。 Deepspeed Zero-2を使用したトレーニングスクリプト: finetune.sh 。
注意すべき新しいオプション:
--unfreeze_mm_vision_tower True :Finetune Vision Tower。--mm_vision_tower_lr 2e-6 :ビジョンタワーの学習率。--image_aspect_ratio anyres :可変解像度で画像を処理します。--mm_patch_merge_type spatial_unpad :これは、パッド入りおよびサイズの画像のPytorchテンソルを貼り付け、学習可能なNewline Vectorを画像トークンに挿入することにより、モデルは2次元空間情報を認識します。これは、画像トークンを処理するために使用されます。 evaluation.mdを参照してください。
このプロジェクトがあなたの研究で役立つと思う場合は、引用を検討してください。
@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 }
}