2024年5月24日金曜日

LLaMA-Factory を m2 mac mini 上で動作させる方法

LLaMA-Factory を m2 mac mini 上で動作させる方法

概要

LLaMA-Factory は簡単に Fine-Tuning を実現できるツールです
今回は M2 mac mini 上に構築してみました
CLI でも学習できますが今回は WebUI モードを試します

なお Python は 3.8系 を使います

環境

  • macOS 14.4.1
  • LLaMA-Factory 0.7.1
  • Python 3.8.18

準備

  • pyenv install 3.8.18

プロジェクトセットアップ

  • git clone --depth 1 https://github.com/hiyouga/LLaMA-Factory.git
  • cd LLaMA-Factory
  • pyenv local 3.8.18
  • pip install -e '.[torch,metrics]'

WebUI の起動

  • CUDA_VISIBLE_DEVICES=0 GRADIO_SHARE=0 llamafactory-cli webui

これで http://localhost:7860/ で起動します

ちょっと試す

とりあえずデフォルトで準備されているモデルやデータセットを使って Fine-Tuning してみます
最低限の Fine-Tuning に必要な設定は2つだけです

  • 事前学習済みモデルの指定 (huggyllama/llama-7b)
  • データセットの指定 (lima)

llama の事前モデルと llma のデータセットなのであまり効果がない Fine-Tuning になりそうですが今回はテストでとりあえず試したいので良しとします

あとは画面下部にある「Start」をクリックすれば学習が始まります

初回実行時にモデルのダウンロードが入ります
今回のモデル (model-00001-of-00002.safetensors/model-00002-of-00002.safetensors) は 15GB ほどあるのでディスクの容量には注意しましょう

ダウンロードに失敗した場合は結果のディレクトリを一度削除して再度実行すればモデルのダウンロードも再開します

ちなみに今回のモデルとデータセット+パラメータでだいたい 107 x 3 = 321 時間ほど学習に時間がかかりそうです

学習したモデルを試すには Refresh Adapters を押しモデルを指定します
そして Chat タブに移動しプロンプトにメッセージを入力することで Fine-Tuning したモデルを試すことができます

fp16 mixed precision requires a GPU (not ‘mps’) 対策

まず transformers を 4.38.1 にします

  • pip install 'transformers==4.38.1'

https://github.com/hiyouga/LLaMA-Factory/issues/2812

そして Train タブの Compute type を fp32 にします

https://github.com/hiyouga/LLaMA-Factory/issues/2329

更に MPS backend out of memory (MPS allocated: 18.09 GB, other allocations: 384.00 KB, max allowed: 18.13 GB) 対策として PYTORCH_MPS_HIGH_WATERMARK_RATIO を 0.0 にして webui を再起動します

https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/9133

  • PYTORCH_MPS_HIGH_WATERMARK_RATIO=0.0 CUDA_VISIBLE_DEVICES=0 GRADIO_SHARE=0 llamafactory-cli webui

ちなみにこの設定を行うとメモリを無限に使用するので 16GB しかない M2 mac mini だとスワップが発生しまくります (自分の環境だと約 20GB ほどスワップ領域を使っていました)

最後に

LLaMA-Factory を M2 mac mini 上で動作させてみました
起動まではかなり簡単に行えます
デフォルトだと学習にかなり時間がかかるのでその場合は Max samples = 1Epochs = 1 などの数値を下げて学習してください
ちなみに上記設定であれば 7 分ほどで学習が完了しました (テストには良いと思います

機会があればオリジナルのデータセットを使って Fine-Tuning してみたいと思います

参考サイト

0 件のコメント:

コメントを投稿