はじめに
MiniMindは、開発者のjingyaogong氏によって作成されたオープンソースプロジェクトです。MiniMindの主な特徴は、NVIDIA 3090グラフィックカード1枚で、26MパラメータのGPTモデルをゼロから訓練するのに2時間かかり、そのコストはわずか約3元である。このプロジェクトでは、データセットのクリーニング、プリトレーニング、コマンドによるファインチューニング、LoRA、DPO、モデル蒸留を含む、プリトレーニングからファインチューニングまでのフルフローコードを提供しており、ビジュアルマルチモーダル拡張MiniMind-Vのサポートも行っています。すべてのコードは、サードパーティの抽象化インターフェースに依存することなく、PyTorchをベースに一からリファクタリングされています。2025年2月現在、MiniMindは複数のバージョンでリリースされており、最小モデルサイズは25.8Mパラメータで、コミュニティから圧倒的な反響を得ています。
機能一覧
- 3090グラフィックスカード1枚で、26MパラメータのGPTモデルを2時間以内にゼロからトレーニング可能。
- プリトレーニング、命令微調整、LoRA、DPO、モデル蒸留のためのフルフローコードを提供します。
- 画像およびテキスト処理用のビジュアル・マルチモーダル拡張機能MiniMind-Vを搭載。
- シングルカードおよびマルチカードのトレーニングをサポートし、DeepSpeedおよびwandbビジュアライゼーションと互換性があります。
- サードパーティのチャットインターフェースに簡単にアクセスできるOpenAI APIプロトコルサーバーを提供します。
- 高品質のデータセットとモデルウェイトをオープンソースで提供。
- トークナイザーのトレーニングやカスタム単語リストをサポートし、モデルの構造を柔軟に調整。
ヘルプの使用
MiniMind の使用は、インストール、トレーニング、推論の 3 つのステップに分かれています。以下は、ユーザーがすぐに使い始められるよう、詳細なガイドです。
設置プロセス
- 環境準備
- Python 3.10以降が必要。
- 以下のコードを実行して、グラフィックカードがCUDAをサポートしていることを確認する:
import torch print(torch.cuda.is_available())
リターン
True
そうでない場合は、対応するPyTorchのバージョンをインストールする必要があります。 - コードをクローンするためにGitをインストールする。
- クローンプロジェクト
それをターミナルに入力する:
git clone https://github.com/jingyaogong/minimind.git
cd minimind
- 依存関係のインストール
清華ミラーを使用した高速インストール:
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
問題が発生した場合は、手動でインストールしてください。 torch
もしかしたら flash_attn
.
- データセットをダウンロード
- データセットはGitHub READMEまたはhttps://www.modelscope.cn/datasets/gongjy/minimind_dataset/files。
- 確立
./dataset
フォルダにファイルを解凍してください。 - 推奨ダウンロード
pretrain_hq.jsonl
(1.6GB)とsft_mini_512.jsonl
(1.2GB)。
トレーニングモデル
- 事前トレーニング
- スクリプトを実行して事前トレーニングを開始します:
python train_pretrain.py
- デフォルト使用
pretrain_hq.jsonl
出力重みはpretrain_*.pth
. - マルチカード・アクセラレーション:
torchrun --nproc_per_node 2 train_pretrain.py
- コマンド微調整
- 微調整スクリプトを実行する:
python train_full_sft.py
- デフォルト使用
sft_mini_512.jsonl
出力重みはfull_sft_*.pth
. - マルチカードのサポートも同様だ。
- LoRAの微調整
- ドメインデータを用意する(例
lora_medical.jsonl
)、走れ:python train_lora.py
- 出力重みは
lora_xxx_*.pth
.
- DPO強化学習
- 利用する
dpo.jsonl
データ、実行python train_dpo.py
- 出力重みは
rlhf_*.pth
.
- 視覚化トレーニング
- パラメータの追加
--use_wandb
例えばpython train_pretrain.py --use_wandb
- wandbの公式サイトでトレーニングカーブをチェックしよう。
モデルによる推論
- コマンドライン推論
- モデルウェイト(MiniMind2など)をダウンロードする:
git clone https://huggingface.co/jingyaogong/MiniMind2
- 走る推理:
python eval_model.py --load 1 --model_mode 2
- パラメータの説明
--load 1
トランスフォーマーでは--model_mode 2
MiniMind2を使って。
- ウェブチャット
- Streamlitをインストールする:
pip install streamlit
- 起動インターフェース:
cd scripts streamlit run web_demo.py
- ブラウザからアクセス
localhost:8501
対話はできる。
- APIサービス
- サーバーを起動します:
python serve_openai_api.py
- インターフェイスをテストする:
curl http://localhost:8000/v1/chat/completions -H "Content-Type: application/json" -d '{"model": "MiniMind2", "messages": [{"role": "user", "content": "你好"}], "max_tokens": 512}'
注目の機能操作
- ビジュアル・マルチモダリティ(MiniMind-V)
- MiniMind-Vモデルをダウンロードする:
git clone https://huggingface.co/jingyaogong/MiniMind2-V
- CLIPビジュアライゼーション・モデルのダウンロード
./model/vision_model
::
git clone https://huggingface.co/openai/clip-vit-base-patch16
- 走っている:
python eval_vlm.py --load 1
- テキストと画像を入力すると、モデルが説明を生成する。
- カスタマイズ・トレーニング
- データを次のように整理する。
.jsonl
フォーマットを./dataset
. - 修正
./model/LMConfig.py
パラメーター(例d_model
もしかしたらn_layers
). - 上記の手順でトレーニングする。
ほら
- ビデオメモリが足りない場合は、以下のように調整します。
batch_size
または増やすaccumulation_steps
. - データセットが大きい場合は、メモリのオーバーフローを避けるためにバッチで処理する。
- 超長コンテキストはRoPEパラメータを最大2048まで調整可能。
アプリケーションシナリオ
- AI学習
MiniMindは、初心者が大規模なモデルのトレーニングプロセスを研究するためのコードとデータの完全なセットを提供します。 - ドメインのカスタマイズ
医療Q&Aやカスタマーサービスの対話のようなプライベートデータを使ってモデルをトレーニングする。 - 低コストでの展開
26Mパラメトリックモデルは、スマートホームなどの組み込み機器に適している。 - ティーチング・デモンストレーション
教師はAIのトレーニングプロセスを実演し、生徒は練習するために使うことができる。
品質保証
- MiniMindにはどのくらいのハードウェアが必要ですか?
トレーニングにはNVIDIA 3090グラフィックカード1枚で十分で、CPUでも動かせるが遅い。 - 2時間のトレーニングは信頼できるか?
はい、3090のシングルカードテストに基づいて、26Mのパラメトリックモデルをゼロからトレーニングするのに約2時間しかかかりません。 - 市販されていますか?
はい、このプロジェクトはApache 2.0ライセンスでライセンスされており、自由な使用と改変が認められています。 - コンテキストの長さを延長するには?
RoPEパラメータを調整したり、より長いデータで微調整することで、最大2048まで対応。