このプロジェクトは、MosaicML社が開発したmosaicml/mpt-7b-instructモデルをベースに、独自のデータセットでファインチューニングを行い、対話形式の推論を実行するためのリポジトリです。
- データ生成: Gemini APIを利用して、質問リストから独自のQ&Aデータセットを生成します。
- ファインチューニング: PEFT(LoRA)を用いて、効率的にモデルの追加学習を行います。
- CPU実行対応: GPUがない環境でも、CPUオフロードを利用してモデルの学習と推論が可能です。(※非常に時間がかかります)
git clone https://github.com/hrnk420/AiV2.git
cd AiV2ファインチューニングの土台となるmpt-7b-instructモデル(約14GB)をダウンロードします。
# Git LFSがインストールされている必要があります
git clone https://huggingface.co/mosaicml/mpt-7b-instruct ./mpt-7b-instructPython 3.9環境での動作を確認しています。
# 仮想環境の作成
python -m venv venv
# 仮想環境のアクティベート (Windowsの場合)
.\venv\Scripts\Activate.ps1
# 必要なライブラリをインストール
pip install -r requirements.txt-
questions.txtファイルに、学習させたいQ&Aの「質問」を1行ずつ記述します。 -
datacreate.pyを実行する環境で、GEMINI_API_KEYという名前の環境変数を設定します。 -
以下のコマンドを実行すると、Gemini APIが各質問に対する回答を生成し、
data.jsonというファイルに保存します。python datacreate.py
data.jsonを使って、ベースモデルの追加学習を行います。学習が完了すると、モデルの差分データがlora_outputフォルダに保存されます。
python finetuning.py注意: CPUでの実行には、数時間単位の非常に長い時間がかかります。
ファインチューニングしたモデルと対話します。
python inference.pyスクリプトが起動し、「入力してください:」と表示されたら、質問を入力してモデルの応答を確認できます。CPUでの応答生成には数分かかることがあります。
##謝辞
このプロジェクトは、以下の素晴らしい技術を利用しています。
- モデル: MosaicML MPT-7B-Instruct
- データ生成: Google Gemini
- ライブラリ: Hugging Face Transformers, PEFT, PyTorch