はじめに
MiniMind-Vは、GitHubでホストされているオープンソースプロジェクトで、わずか2600万個のパラメータを持つ軽量な視覚言語モデル(VLM)を1時間以内に学習できるように設計されています。MiniMind言語モデル、新しい視覚コーダーと特徴投影モジュール、画像とテキストの共同処理のサポートに基づいています。このプロジェクトは、データセットのクリーニングからモデルの推論までの完全なコードを提供し、GPU(NVIDIA 3090など)1台で〜1.3人民元という低い学習コストを実現している。 MiniMind-Vは、コードの変更が50行未満というシンプルさと使いやすさを重視しており、開発者が視覚言語モデルの構築プロセスを実験し、学ぶのに適したツールとなっている。
機能一覧
- 2600万パラメータ視覚言語モデルの完全なトレーニングコードを提供し、シングルGPUでの高速トレーニングをサポートします。
- CLIPビジュアルコーダーを使って、224x224ピクセルの画像を処理し、196個のビジュアルトークンを生成した。
- 対話、画像説明、Q&A用のテキストと組み合わせて、単一画像および複数画像の入力をサポートします。
- データセットのクリーニング、事前学習、教師あり微調整(SFT)のための完全なプロセススクリプトが含まれています。
- PyTorchネイティブ実装を提供し、マルチカードアクセラレーションをサポートし、互換性が高い。
- モデルの重みのダウンロードを含み、Hugging FaceとModelScopeプラットフォームをサポートします。
- モデルの効果を簡単にテストするためのウェブインターフェースとコマンドライン推論を提供します。
- トレーニング中のロスとパフォーマンスを記録するwandbツールをサポート。
ヘルプの使用
MiniMind-V の使用プロセスには、環境設定、データ準備、モデルトレーニング、効果測定が含まれます。各ステップについて、以下に詳しく説明する。
環境設定
MiniMind-VにはPython環境とGPUサポートが必要です。以下はインストール手順です:
- クローンコード
ターミナルで以下のコマンドを実行し、プロジェクト・コードをダウンロードする:git clone https://github.com/jingyaogong/minimind-v cd minimind-v
- 依存関係のインストール
プロジェクト・オファーrequirements.txt
ファイルには必要なライブラリが含まれている。以下のコマンドを実行する:pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
Python 3.9以上を推奨。PyTorchがCUDAをサポートしていることを確認してください(GPUを持っている場合)。これは以下のコードを実行することで確認できます:
import torch print(torch.cuda.is_available())
輸出
True
GPUが使用可能であることを示す。 - CLIPモデルのダウンロード
MiniMind-VはCLIPモデル(clip-vit-base-patch16
)をビジュアル・エンコーダとして使用します。以下のコマンドを実行して./model/vision_model
::git clone https://huggingface.co/openai/clip-vit-base-patch16 ./model/vision_model
ModelScopeからもダウンロードできます:
git clone https://www.modelscope.cn/models/openai-mirror/clip-vit-base-patch16 ./model/vision_model
- ベース言語モデルの重みをダウンロードする
MiniMind-VはMiniMind言語モデルに基づいているため、言語モデルの重みをダウンロードする必要がある。./out
カタログ例wget https://huggingface.co/jingyaogong/MiniMind2-V-PyTorch/blob/main/lm_512.pth -P ./out
またはダウンロード
lm_768.pth
モデル構成による。
データ準備
MiniMind-Vは、約57万枚の事前学習画像と約30万コマンドの微調整データを使用し、ストレージ容量は約5GBである:
- データセットカタログの作成
プロジェクトのルート・ディレクトリに./dataset
フォルダーmkdir dataset
- データセットをダウンロード
を含むデータセットをHugging FaceまたはModelScopeからダウンロードする。*.jsonl
Q&Aデータと*images
画像データ:- ハグ顔:https://huggingface.co/datasets/jingyaogong/minimind-v_dataset
- モデルスコープ:https://www.modelscope.cn/datasets/gongjy/minimind-v_dataset
画像データをダウンロードして解凍し./dataset
::
unzip pretrain_images.zip -d ./dataset unzip sft_images.zip -d ./dataset
- 検証データセット
セキュア./dataset
以下のファイルが含まれる:pretrain_vlm_data.jsonl
トレーニング前のデータ、約57万件。sft_vlm_data.jsonl
シングルフィギュアのファインチューニングデータ、約30万件。sft_vlm_data_multi.jsonl
マルチマップ微調整データ、約13,600件。- Imageフォルダ:事前学習と微調整のための画像ファイルが含まれています。
モデルトレーニング
MiniMind-Vのトレーニングは、事前トレーニングと教師ありの微調整に分けられ、シングルまたはマルチカードのアクセラレーションをサポートする。
- 設定パラメータ
コンパイラ./model/LMConfig.py
モデルのパラメータを設定する。例- ミニチュア
dim=512
,n_layers=8
- ミディアムモデル:
dim=768
,n_layers=16
これらのパラメータがモデルのサイズと性能を決定する。
- ミニチュア
- 事前トレーニング
事前学習スクリプトを実行し、画像の説明機能を学習します:python train_pretrain_vlm.py --epochs 4
出力重みは
./out/pretrain_vlm_512.pth
(または768.pth
CLIPモデルはフリーズする)。単一のNVIDIA 3090は、1エポックを完了するのに約1時間かかります。CLIPモデルはフリーズし、投影層と言語モデルの最後の層のみを学習します。 - スーパーバイズド・ファイン・チューニング(SFT)
対話能力を最適化するために、事前に訓練された重みを使用して微調整を行う:python train_sft_vlm.py --epochs 4
出力重みは
./out/sft_vlm_512.pth
.このステップでは、投影層と言語モデルをすべてのパラメータで学習する。 - Dokaトレーニング(オプション)
N枚のグラフィックカードがある場合は、以下のコマンドでアクセラレーションを行う:torchrun --nproc_per_node N train_pretrain_vlm.py --epochs 4
相互互換性
train_pretrain_vlm.py
他のトレーニングスクリプト(例えばtrain_sft_vlm.py
). - モニタートレーニング
トレーニングの損失はwandbを使って記録することができる:python train_pretrain_vlm.py --epochs 4 --use_wandb
wandb公式サイトでリアルタイムデータを見る。
効果テスト
学習が完了したら、モデルの画像対話能力をテストすることができる。
- コマンドライン推論
以下のコマンドを実行してモデルをロードする:python eval_vlm.py --load 1 --model_mode 1
--load 1
Hugging Faceのトランスフォーマーモデルを読み込みます。--load 0
より./out
PyTorchのウェイトをロードする。--model_mode 1
微調整されたモデルのテスト0
事前に訓練されたモデルをテストする。
- ウェブ・インターフェース・テスト
ウェブインターフェースを起動する:python web_demo_vlm.py
インタビュー
http://localhost:8000
画像をアップロードし、テキストを入力してテストする。 - 入力フォーマット
MiniMind-Vは196を使用@@@
プレースホルダーは画像を表します。例@@@...@@@\n这张图片是什么内容?
複数画像の入力例:
@@@...@@@\n第一张图是什么?\n@@@...@@@\n第二张图是什么?
- トレーニング前のウエイトをダウンロードする
トレーニングをしていない場合は、公式ウエイトを直接ダウンロードすることができる:
ほら
- 推奨ビデオメモリ 24GB(例:RTX 3090)。ビデオメモリが不足する場合は、バッチサイズ (
batch_size
). - データセットのパスが正しいことを確認する。
*.jsonl
と画像ファイルは./dataset
. - トレーニング中にCLIPモデルをフリーズさせることで、必要な演算量を減らすことができる。
- 複数画像によるダイアログの効果は限定的であり、単一画像によるシナリオを優先的にテストすることが推奨される。
アプリケーションシナリオ
- AIアルゴリズム学習
MiniMind-Vは、クロスモーダルモデリングの原理を理解する学生に適した、簡潔なビジュアル言語モデリングコードを提供します。ユーザーはコードを修正して、異なるパラメータやデータセットで実験することができる。 - ラピッドプロトタイピング
開発者は、MiniMind-Vをベースとした画像対話アプリケーションのプロトタイプを作成することができます。MiniMind-Vは軽量で効率的であり、PCや組み込みシステムのような低消費電力デバイスに適しています。 - 教育・訓練ツール
大学や専門学校では、AIコースでMiniMind-Vを使用してモデルトレーニングの全プロセスを示すことができます。コードは明確にコメントされており、教室での実習に適しています。 - 低コスト実験
プロジェクトのトレーニングコストは低く、予算が限られているチームが高性能サーバーを必要とせずにマルチモーダルモデルの効果をテストするのに適している。
品質保証
- MiniMind-Vはどのようなサイズの画像をサポートしていますか?
デフォルトの処理は、CLIPモデルによって制限された224x224ピクセルの画像です。データセット画像は、スペースを節約するために128x128に圧縮されることがあります。より大きな解像度のCLIPモデルが将来試されるかもしれません。 - トレーニングにはどのくらいの時間がかかりますか?
シングルNVIDIA 3090では、1エポックのプリトレーニングに約1時間かかり、微調整はもう少し早い。正確な時間はハードウェアやデータ量によって異なる。 - 事前トレーニングなしで微調整を行うことはできますか?
できる。オフィシャル・プレトレーニング・ウェイトを直接ダウンロードして走るtrain_sft_vlm.py
微調整。 - 対応言語は?
主に中国語と英語をサポートし、効果はデータセットに依存します。ユーザが微調整することにより、他の言語を拡張することができます。 - マルチイメージ・ダイアログの効果は?
現在の複数画像の対話機能は限られており、単一画像のシナリオを優先して使用することが推奨される。将来的には、より大きなモデルやデータセットで改良が可能である。