本リポジトリは、Vision-Language Model(VLM)のファインチューニングを行うための軽量なコードベースです。 モデル読み込み・データコレーション等の構成要素を抽象化し、Hugging Face の公式実装に沿った形で学習・推論を進められることを目的としています。
基盤モデルとして LLaVA-OneVision を使用しており、train.py(stage1)に加えて、train_add_head*.py など 2段階学習(stage1 → stage2) を想定したスクリプト群が含まれています。
ds_configs/)や補助モジュール(collators/, loaders/, models/ 等)を同梱train.py / train_add_head*.py)が存在infer.py, merge_lora_weights.py, webui.py 等).
├── collators/ # データコレーター
├── loaders/ # データ読み込み関連
├── models/ # モデル関連
├── ds_configs/ # DeepSpeed 設定
├── scripts/ # スクリプト類
├── example_scripts/ # 実行例スクリプト
├── example_data/ # サンプルデータ
├── jsons/ # JSON 設定/テンプレート
├── docs/ # ドキュメント
├── results/ # 実験結果(フォルダが存在)
├── train.py # 学習(stage1)
├── train_add_head.py # 学習(stage2 系)
├── train_add_head_alltoken.py # 学習(stage2 亜種)
├── infer.py # 推論
├── webui.py # Web UI
├── merge_lora_weights.py # LoRA 重みマージ
├── requirements.txt
└── supported_models.py # 対応モデル確認
一般的なセットアップ例です(環境に合わせて調整してください)。
git clone https://github.com/otake-code/lmms-finetune
cd lmms-finetune
conda create -n lmms-finetune python=3.10 -y
conda activate lmms-finetune
python -m pip install -r requirements.txt
# 任意: flash-attn(環境により導入方法が異なるため、必要に応じて)
python -m pip install --no-cache-dir --no-build-isolation flash-attn
動作環境:
対応モデル一覧は supported_models.py から確認できます。
python supported_models.py
本リポジトリは LLaVA-OneVision を基盤としていますが、他の VLM にも対応可能な設計となっています。
本フォークでは、概ね以下の流れを想定します。
train.py)- LLaVA-OneVision の基本的なファインチューニングtrain_add_head*.py)python train.py \
--config <YOUR_CONFIG_OR_ARGS>
python train_add_head.py \
--config <YOUR_CONFIG_OR_ARGS>
(必要に応じて train_add_head_alltoken.py 等のバリエーションを利用)
python infer.py \
--config <YOUR_CONFIG_OR_ARGS>
python webui.py
python merge_lora_weights.py \
--base_model <BASE_MODEL_PATH> \
--lora_path <LORA_PATH> \
--output_path <OUTPUT_MODEL_PATH>
本手法は LLaVA-OneVision を基盤として以下の構成要素から成ります:
example_scripts/ や example_data/ が同梱されているため、最初はそれらを起点に引数やデータ形式を合わせる形が分かりやすいです。ds_configs/ を参照して実行環境に合わせた設定にできます。本リポジトリは以下のプロジェクトに基づいています:
本プロジェクトのライセンスについては、LICENSE ファイルを参照してください。使用する基盤モデル(LLaVA-OneVision等)のライセンスにも従ってください。
本リポジトリは、Vision-Language Model(VLM)のファインチューニングを行うための軽量なコードベースです。 モデル読み込み・データコレーション等の構成要素を抽象化し、Hugging Face の公式実装に沿った形で学習・推論を進められることを目的としています。
基盤モデルとして LLaVA-OneVision を使用しており、train.py(stage1)に加えて、train_add_head*.py など 2段階学習(stage1 → stage2) を想定したスクリプト群が含まれています。
ds_configs/)や補助モジュール(collators/, loaders/, models/ 等)を同梱train.py / train_add_head*.py)が存在infer.py, merge_lora_weights.py, webui.py 等).
├── collators/ # データコレーター
├── loaders/ # データ読み込み関連
├── models/ # モデル関連
├── ds_configs/ # DeepSpeed 設定
├── scripts/ # スクリプト類
├── example_scripts/ # 実行例スクリプト
├── example_data/ # サンプルデータ
├── jsons/ # JSON 設定/テンプレート
├── docs/ # ドキュメント
├── results/ # 実験結果(フォルダが存在)
├── train.py # 学習(stage1)
├── train_add_head.py # 学習(stage2 系)
├── train_add_head_alltoken.py # 学習(stage2 亜種)
├── infer.py # 推論
├── webui.py # Web UI
├── merge_lora_weights.py # LoRA 重みマージ
├── requirements.txt
└── supported_models.py # 対応モデル確認
一般的なセットアップ例です(環境に合わせて調整してください)。
git clone https://github.com/otake-code/lmms-finetune
cd lmms-finetune
conda create -n lmms-finetune python=3.10 -y
conda activate lmms-finetune
python -m pip install -r requirements.txt
# 任意: flash-attn(環境により導入方法が異なるため、必要に応じて)
python -m pip install --no-cache-dir --no-build-isolation flash-attn
動作環境:
対応モデル一覧は supported_models.py から確認できます。
python supported_models.py
本リポジトリは LLaVA-OneVision を基盤としていますが、他の VLM にも対応可能な設計となっています。
本フォークでは、概ね以下の流れを想定します。
train.py)- LLaVA-OneVision の基本的なファインチューニングtrain_add_head*.py)python train.py \
--config <YOUR_CONFIG_OR_ARGS>
python train_add_head.py \
--config <YOUR_CONFIG_OR_ARGS>
(必要に応じて train_add_head_alltoken.py 等のバリエーションを利用)
python infer.py \
--config <YOUR_CONFIG_OR_ARGS>
python webui.py
python merge_lora_weights.py \
--base_model <BASE_MODEL_PATH> \
--lora_path <LORA_PATH> \
--output_path <OUTPUT_MODEL_PATH>
本手法は LLaVA-OneVision を基盤として以下の構成要素から成ります:
example_scripts/ や example_data/ が同梱されているため、最初はそれらを起点に引数やデータ形式を合わせる形が分かりやすいです。ds_configs/ を参照して実行環境に合わせた設定にできます。本リポジトリは以下のプロジェクトに基づいています:
本プロジェクトのライセンスについては、LICENSE ファイルを参照してください。使用する基盤モデル(LLaVA-OneVision等)のライセンスにも従ってください。