概要
SuperAdapters はどのモデルでもどのデータセットでもどのプラットフォームでも Fine-Tuning を実現することができるクロスプラットフォームツールです
今回は M2 mac mini 上で LLaMA の日本語モデルを Fine-tuning してみました
環境
- macOS 14.4.1
- SuperAdapters 30ef7d3
- Python 3.11.8
準備
- pyenv install 3.11.8
プロジェクト準備
M2 の GPU が使えるようにします
- git clone https://github.com/cckuailong/SuperAdapters.git
- cd SuperAdapters
- pyenv local 3.11.8
- brew install llvm libomp
-
pip install --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cpu
- pip install -r requirements.txt
tokenizers でコンフリクトエラーが出る場合は requirements.txt を以下のように修正します
-tokenizers==0.15.0
+tokenizers==0.19.1
モデルのダウンロード
モデルはこちらを使います
LLaMA ベースの日本語特化モデルになります
fast 版には SuperAdapters が対応していないので普通の instruct 版を使います
モデルサイズは15GB ほどあります
- brew install git-lfs
- cd SuperAdapters/LLMs
-
git clone https://huggingface.co/elyza/ELYZA-japanese-Llama-2-7b-instruct
データセットのダウンロード
データセットはこちらを使います
- cd SuperAdapters/data/train
- rm example.json
- git lfs install
-
git clone https://huggingface.co/datasets/bbz662bbz/databricks-dolly-15k-ja-ojousama
学習 Fine-Tuning
-
PYTORCH_MPS_HIGH_WATERMARK_RATIO=0.0 python finetune.py --model_type llama --data "data/train/databricks-dolly-15k-ja-ojousama" --model_path "LLMs/ELYZA-japanese-Llama-2-7b-instruct" --adapter "lora" --output_dir "output/llama"
W&B アカウントがあるかないか求められるのでない場合は
3 を入力します
学習が完了すると output/llama に作成されます
推論 Inference
-
PYTORCH_MPS_HIGH_WATERMARK_RATIO=0.0 python inference.py --model_type llama --instruction "こんにちわ" --model_path "LLMs/ELYZA-japanese-Llama-2-7b-instruct" --adapter_weights "output/llama" --max_new_tokens 32
これで Fine-Tuning したモデルの結果が表示されます
トラブルシューティング
PYTORCH_MPS_HIGH_WATERMARK_RATIO=0.0 に設定していてもメモリサイズが足りない場合強制終了してしまいます
こうなると物理的にメモリを増設するしかないようです
最後に
SuperAdapters を使って M2 mac mini で LLaMA モデルの Fine-Tuning を試してみました
GPU は使ってくれるようですメモリサイズが小さすぎると動作しないようです
0 件のコメント:
コメントを投稿