LLaVA-JPに変更を加えたリポジトリです。tosiyuki様に感謝します。
主な変更点は以下のとおりです。
- データ準備用スクリプト追加
- wandbとの連携
- docker関連ファイルの追加
- データ読み込みの周りの調整
git clone https://github.com/hibikaze-git/LLaVA-JP.git
- docker-compose.ymlのenvironmentとdevice_idsを環境に合わせて変更し、以下を実行
- WANDB_API_KEYは必須
docker compose build
docker compose up -d
docker compose exec ubuntu-cuda bash
- ./docker/Dockerfileを参照して環境構築
- wandb loginしておく必要があります
以下で指定しているjson・画像が保存されているディレクトリを準備する必要があります。
configs/dataset/v1_stage_1.json
configs/dataset/v4_stage_2.json
stair
bash prepare_datasets/v0.sh
cc300k
python tools/commoncatalog_300k
commoncatalog-cc-by-sa-ja
tools/commoncatalog-cc-by-sa-ja/README.md参照
ja-vg-vqa
v1_stage_1のstairと一緒に準備される
commoncatalog-cc-by-sa-ja_detail
commoncatalog-cc-by-sa-ja_predict
v1_stage_1のcommoncatalog-cc-by-sa-jaと一緒に準備される
commoncatalog-cc-by-ext
bash prepare_datasets/commoncatalog-cc-by-ext.sh
anime-with-caption-cc0
bash prepare_datasets/anime-with-caption-cc0.sh
commoncatalog-cc-by-sa-ja-complex
tools/commoncatalog-cc-by-sa-ja-complex/README.md参照
list_items_one_by_one_ja_detailed
tools/list_items_one_by_one_ja/README.md参照
commoncatalog-cc-by-recap-diverse_questions
python tools/commoncatalog-cc-by-recap-diverse_questions/download_images.py
bash prepare_datasets/commoncatalog-cc-by-recap-diverse_questions.sh
wit_base
tools/wit_base/README.md参照
ner-wikipedia-dataset
wikipedia-22-12-ja-embeddings
bash prepare_datasets/Synthetic-TextWebImages.sh
TextOCR
bash prepare_datasets/TextOCR.sh
Tanuki-8B
bash scripts/pretrain/pretrain_accelerate.sh \
./configs/train/pretrain/base.json \
./configs/image_encoder/siglip-so400m-patch14-384.json \
./configs/dataset/v1_stage_1.json \
./configs/model/tanuki-8b.json \
./output_llava/checkpoints/pretrain-llava-jp-Tanuki-8B-vision-v1 \
llava-jp-stage1 \
Tanuki-8B-vision-v1
Tanuki-8x8B
bash scripts/pretrain/pretrain_deepspeed_zero3_multinode.sh \
./configs/train/pretrain/base_tanuki_moe.json \
./configs/image_encoder/siglip-so400m-patch14-384.json \
./configs/dataset/v1_stage_1.json \
./configs/model/tanuki-moe.json \
./output_llava/checkpoints/pretrain-llava-jp-Tanuki-moe-vision-zero3-multinode \
llava-jp-stage1 \
Tanuki-moe-vision-zero3-multinode
Tanuki-8B
bash scripts/finetune/finetune_accelerate.sh \
./configs/train/finetune/batch_128.json \
./configs/image_encoder/siglip-so400m-patch14-384.json \
./configs/dataset/v4_stage_2.json \
./configs/model/tanuki-8b.json \
./output_llava/checkpoints/finetune-llava-jp-Tanuki-8B-vision-v4 \
llava-jp-stage2 \
Tanuki-8B-vision-v4 \
./output_llava/checkpoints/pretrain-llava-jp-Tanuki-8B-vision-v1/mm_projector.bin
Tanuki-8x8B
bash scripts/finetune/finetune_deepspeed_zero3_multinode.sh \
./configs/train/finetune/base_tanuki_moe.json \
./configs/image_encoder/siglip-so400m-patch14-384.json \
./configs/dataset/v4_stage_2.json \
./configs/model/tanuki-moe.json \
./output_llava/checkpoints/finetune-llava-jp-Tanuki-moe-vision-zero3-multinode \
llava-jp-stage2 \
Tanuki-moe-vision-zero3-multinode \
./output_llava/checkpoints/pretrain-llava-jp-Tanuki-moe-vision-zero3-multinode/mm_projector.bin
- HuggingFaceにモデル用のリポジトリを新規作成したあと、以下を実行
python upload_model.py ./path/to/local/folder your-username/your-repo-id
Tanuki-8B
以下をgoogle colabで実行
demo_llava_gradio.ipynb
ローカルの場合は以下も使用可能
python demo_llava_gradio.py
以下、LLaVA-JPのREADME原文です。
LLaVAの手法を使用してllm-jp/llm-jp-1.3b-v1.0のような軽量なLLMをベースに画像に対応したマルチモーダルなLVLMを学習させるためのコードです。
LLaVA-JPの学習はRTX4090(24GB)一台で行われています。
English document is here.
- [4/20] v1.1を公開: scaling_on_scalesを使用して768x768の高解像度画像を入力可能にしました。また、事前学習データをLLaVA-Pretrain-JA、ファインチューニングデータをLLaVA-v1.5-Instruct-620K-JAに変更しました。モデルはllava-jp-1.3b-v1.1で公開しています。
- [2/13] llava-jp-1.3b-v1.0-siglip-so400m-patch14-384を公開: Image Encoderにgoogle/siglip-so400m-patch14-384を使用してLLaVA-1.5の手法で学習させています。
Model | Train Data | Ver |
---|---|---|
llava-jp-1.3b-v1.1-pretrain | LLaVA-Pretrain-JA | v1.1 |
llava-pretrain-jp-1.3b-v1.0 | STAIR Captions, LLaVA-CC3M-Pretrain-595K-JA | v1.0 |
Model | JA-VG-VQA-500 (ROUGE-L) |
JA-VLM-Bench-In-the-Wild (ROUGE-L) |
Heron-Bench(Detail) | Heron-Bench(Conv) | Heron-Bench(Complex) | Heron-Bench(Average) |
---|---|---|---|---|---|---|
Japanese Stable VLM | - | 40.50 | 25.15 | 51.23 | 37.84 | 38.07 |
EvoVLM-JP-v1-7B | 19.70 | 51.25 | 50.31 | 44.42 | 40.47 | 45.07 |
Heron BLIP Japanese StableLM Base 7B llava-620k | 14.51 | 33.26 | 49.09 | 41.51 | 45.72 | 45.44 |
Heron GIT Japanese StableLM Base 7B | 15.18 | 37.82 | 42.77 | 54.20 | 43.53 | 46.83 |
llava-jp-1.3b-v1.0-620k | 12.69 | 44.58 | 51.21 | 41.05 | 45.95 | 44.84 |
llava-jp-1.3b-v1.1 | 13.33 | 44.40 | 50.00 | 51.83 | 48.98 | 50.39 |
モデル名 | 出力 |
---|---|
llava-jp-1.3b-v1.1 | 猫の隣にはノートパソコンがあります。 |
llava-jp-1.3b-v1.0-620k | 猫の隣にはノートパソコンがあります。 |
turing-motors/heron-chat-blip-ja-stablelm-base-7b-v0 | 猫はノートパソコンの上に座っている。 |
stabilityai/japanese-stable-vlm | ノートパソコン |
モデル名 | 出力 |
---|---|
llava-jp-1.3b-v1.1 | この画像の面白い点は、黄色いタクシーの荷台に置かれた、服を脱いだままの洗濯機の上に立つ男性です。この男性は、おそらく洗濯物を乾燥させるために、この型破りな場所にいるようです。このシーンは、日常生活の中で型破りな場所に身を置くことの意外性と面白さを強調しています。 |
llava-jp-1.3b-v1.0-620k | この画像の興味深い点は、黄色い車の荷台に置かれた洗濯機の上に立つ男性です。この珍しい配置は、洗濯機の上に立つ男性の姿を見ることができるため、興味深く、型破りなものとなっています。この男性は、洗濯機の上に立つことで、洗濯機の機能を妨げることなく、洗濯機の上に立っているように見えるのです。 |
turing-motors/heron-chat-blip-ja-stablelm-base-7b-v0 | 画像では、黄色いトラックの荷台で洗濯物を干している男性が描かれている。彼はトラックに寄りかかり、洗濯物を取り込んでいる。このシーンは、男性がトラックで仕事をしているか、トラックを運転していることを示唆している。トラックは、このシーンの中心的な焦点であり、男性の作業スペースを提供しているように見える。背景には、道路を走る複数の車が見え、おそらくこの地域で交通渋滞が発生している可能性がある。 |
stabilityai/japanese-stable-vlm | 男は車の上で洗濯をしている |
git clone https://github.com/tosiyuki/LLava-JP.git
bash scripts/pretrain/pretrain_llm_jp_1.3b_v1.1.sh
bash scripts/finetune/finetune_llm-jp-1.3b-v1.1.sh
bash scripts/finetune/finetune_lora_llm_jp.sh
- LLaVA: LLaVA-JPを学習させるに当たりほとんどのコードがこの素晴らしいプロジェクトがベースとなっています。
- llm-jp: llm-jpが大規模なモデルだけではなく1.3Bという小規模で高性能なベースモデルを開発しているおかげでLLaVA-JPの学習は成功しています
- scaling_on_scales: 高解像度画像入力の対応はscaling_on_scalesの簡潔かつ分かりやすいコードのおかげで行えています。