AIパーソナル・ラーニング
と実践的なガイダンス
ビーンバッグ・マースコード1

MiniMind-V:26Mパラメトリック視覚言語モデルの1時間トレーニング

はじめに

MiniMind-Vは、GitHubでホストされているオープンソースプロジェクトで、わずか2600万個のパラメータを持つ軽量な視覚言語モデル(VLM)を1時間以内に学習できるように設計されています。MiniMind言語モデル、新しい視覚コーダーと特徴投影モジュール、画像とテキストの共同処理のサポートに基づいています。このプロジェクトは、データセットのクリーニングからモデルの推論までの完全なコードを提供し、GPU(NVIDIA 3090など)1台で〜1.3人民元という低い学習コストを実現している。 MiniMind-Vは、コードの変更が50行未満というシンプルさと使いやすさを重視しており、開発者が視覚言語モデルの構築プロセスを実験し、学ぶのに適したツールとなっている。

MiniMind-V:26Mパラメータ視覚言語モデルの1時間トレーニング-1


 

機能一覧

  • 2600万パラメータ視覚言語モデルの完全なトレーニングコードを提供し、シングルGPUでの高速トレーニングをサポートします。
  • CLIPビジュアルコーダーを使って、224x224ピクセルの画像を処理し、196個のビジュアルトークンを生成した。
  • 対話、画像説明、Q&A用のテキストと組み合わせて、単一画像および複数画像の入力をサポートします。
  • データセットのクリーニング、事前学習、教師あり微調整(SFT)のための完全なプロセススクリプトが含まれています。
  • PyTorchネイティブ実装を提供し、マルチカードアクセラレーションをサポートし、互換性が高い。
  • モデルの重みのダウンロードを含み、Hugging FaceとModelScopeプラットフォームをサポートします。
  • モデルの効果を簡単にテストするためのウェブインターフェースとコマンドライン推論を提供します。
  • トレーニング中のロスとパフォーマンスを記録するwandbツールをサポート。

 

ヘルプの使用

MiniMind-V の使用プロセスには、環境設定、データ準備、モデルトレーニング、効果測定が含まれます。各ステップについて、以下に詳しく説明する。

環境設定

MiniMind-VにはPython環境とGPUサポートが必要です。以下はインストール手順です:

  1. クローンコード
    ターミナルで以下のコマンドを実行し、プロジェクト・コードをダウンロードする:

    git clone https://github.com/jingyaogong/minimind-v
    cd minimind-v
    
  2. 依存関係のインストール
    プロジェクト・オファー 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が使用可能であることを示す。

  3. 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
    
  4. ベース言語モデルの重みをダウンロードする
    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である:

  1. データセットカタログの作成
    プロジェクトのルート・ディレクトリに ./dataset フォルダー

    mkdir dataset
    
  2. データセットをダウンロード
    を含むデータセットを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
    
  3. 検証データセット
    セキュア ./dataset 以下のファイルが含まれる:

    • pretrain_vlm_data.jsonlトレーニング前のデータ、約57万件。
    • sft_vlm_data.jsonlシングルフィギュアのファインチューニングデータ、約30万件。
    • sft_vlm_data_multi.jsonlマルチマップ微調整データ、約13,600件。
    • Imageフォルダ:事前学習と微調整のための画像ファイルが含まれています。

モデルトレーニング

MiniMind-Vのトレーニングは、事前トレーニングと教師ありの微調整に分けられ、シングルまたはマルチカードのアクセラレーションをサポートする。

  1. 設定パラメータ
    コンパイラ ./model/LMConfig.pyモデルのパラメータを設定する。例

    • ミニチュアdim=512n_layers=8
    • ミディアムモデル:dim=768n_layers=16
      これらのパラメータがモデルのサイズと性能を決定する。
  2. 事前トレーニング
    事前学習スクリプトを実行し、画像の説明機能を学習します:

    python train_pretrain_vlm.py --epochs 4
    

    出力重みは ./out/pretrain_vlm_512.pth(または 768.pthCLIPモデルはフリーズする)。単一のNVIDIA 3090は、1エポックを完了するのに約1時間かかります。CLIPモデルはフリーズし、投影層と言語モデルの最後の層のみを学習します。

  3. スーパーバイズド・ファイン・チューニング(SFT)
    対話能力を最適化するために、事前に訓練された重みを使用して微調整を行う:

    python train_sft_vlm.py --epochs 4
    

    出力重みは ./out/sft_vlm_512.pth.このステップでは、投影層と言語モデルをすべてのパラメータで学習する。

  4. Dokaトレーニング(オプション)
    N枚のグラフィックカードがある場合は、以下のコマンドでアクセラレーションを行う:

    torchrun --nproc_per_node N train_pretrain_vlm.py --epochs 4
    

    相互互換性 train_pretrain_vlm.py 他のトレーニングスクリプト(例えば train_sft_vlm.py).

  5. モニタートレーニング
    トレーニングの損失はwandbを使って記録することができる:

    python train_pretrain_vlm.py --epochs 4 --use_wandb
    

    wandb公式サイトでリアルタイムデータを見る。

効果テスト

学習が完了したら、モデルの画像対話能力をテストすることができる。

  1. コマンドライン推論
    以下のコマンドを実行してモデルをロードする:

    python eval_vlm.py --load 1 --model_mode 1
    
    • --load 1Hugging Faceのトランスフォーマーモデルを読み込みます。
    • --load 0より ./out PyTorchのウェイトをロードする。
    • --model_mode 1微調整されたモデルのテスト0 事前に訓練されたモデルをテストする。
  2. ウェブ・インターフェース・テスト
    ウェブインターフェースを起動する:

    python web_demo_vlm.py
    

    インタビュー http://localhost:8000画像をアップロードし、テキストを入力してテストする。

  3. 入力フォーマット
    MiniMind-Vは196を使用 @@@ プレースホルダーは画像を表します。例

    @@@...@@@\n这张图片是什么内容?
    

    複数画像の入力例:

    @@@...@@@\n第一张图是什么?\n@@@...@@@\n第二张图是什么?
    
  4. トレーニング前のウエイトをダウンロードする
    トレーニングをしていない場合は、公式ウエイトを直接ダウンロードすることができる:

ほら

  • 推奨ビデオメモリ 24GB(例:RTX 3090)。ビデオメモリが不足する場合は、バッチサイズ (batch_size).
  • データセットのパスが正しいことを確認する。*.jsonl と画像ファイルは ./dataset.
  • トレーニング中にCLIPモデルをフリーズさせることで、必要な演算量を減らすことができる。
  • 複数画像によるダイアログの効果は限定的であり、単一画像によるシナリオを優先的にテストすることが推奨される。

 

アプリケーションシナリオ

  1. AIアルゴリズム学習
    MiniMind-Vは、クロスモーダルモデリングの原理を理解する学生に適した、簡潔なビジュアル言語モデリングコードを提供します。ユーザーはコードを修正して、異なるパラメータやデータセットで実験することができる。
  2. ラピッドプロトタイピング
    開発者は、MiniMind-Vをベースとした画像対話アプリケーションのプロトタイプを作成することができます。MiniMind-Vは軽量で効率的であり、PCや組み込みシステムのような低消費電力デバイスに適しています。
  3. 教育・訓練ツール
    大学や専門学校では、AIコースでMiniMind-Vを使用してモデルトレーニングの全プロセスを示すことができます。コードは明確にコメントされており、教室での実習に適しています。
  4. 低コスト実験
    プロジェクトのトレーニングコストは低く、予算が限られているチームが高性能サーバーを必要とせずにマルチモーダルモデルの効果をテストするのに適している。

 

品質保証

  1. MiniMind-Vはどのようなサイズの画像をサポートしていますか?
    デフォルトの処理は、CLIPモデルによって制限された224x224ピクセルの画像です。データセット画像は、スペースを節約するために128x128に圧縮されることがあります。より大きな解像度のCLIPモデルが将来試されるかもしれません。
  2. トレーニングにはどのくらいの時間がかかりますか?
    シングルNVIDIA 3090では、1エポックのプリトレーニングに約1時間かかり、微調整はもう少し早い。正確な時間はハードウェアやデータ量によって異なる。
  3. 事前トレーニングなしで微調整を行うことはできますか?
    できる。オフィシャル・プレトレーニング・ウェイトを直接ダウンロードして走る train_sft_vlm.py 微調整。
  4. 対応言語は?
    主に中国語と英語をサポートし、効果はデータセットに依存します。ユーザが微調整することにより、他の言語を拡張することができます。
  5. マルチイメージ・ダイアログの効果は?
    現在の複数画像の対話機能は限られており、単一画像のシナリオを優先して使用することが推奨される。将来的には、より大きなモデルやデータセットで改良が可能である。
無断転載を禁じます:チーフAIシェアリングサークル " MiniMind-V:26Mパラメトリック視覚言語モデルの1時間トレーニング
ja日本語