【Stable Diffusion】M1 macで、LoRAを作成する拡張機能、「Train Tools」を動かす方法
M1のmacだとGPUが内臓のため、Stable Diffusion Web UIのツールである「Train Tools」が動かなくて、LoRA作成を諦めてしまった方に、無理やり起動する方法を見つけましたので、共有します
注意事項
あくまでも、自己責任の範囲で実施してください。直接pythonのコードを修正するので、アップデートしたら動かなくなったとか、生成が失敗したとか、環境が壊れたとしても、責任を負いません。
エラー内容を把握できて、自己修復できる方のみ、この先を読み進めてください。
なぜ動かなかったのか?
元々のLoRA作成ツールには、コマンドラインによるオプション指定で、CPUのみでの学習を行える機能を具備しておりますが、Train Toolsの画面(UI)は、GPUが存在している前提でパラメタを生成して動作するため、GPUがデフォルトになっています
(自己解析なので、勝手な解釈です)
どうやるのか?
画面から「Mixed precision」の指定に”no"の選択肢を追加するだけ!
・train_toolsの生成パラメタ設定画面で「Mixed precision (If your graphics card supports bf16 better)」を選択するのですが、fp16かbp16しか選べない
CPUで学習させるには、「no」の選択肢が必要であり、train_toolsの画面を生成しているpythonコードを変更してあげれば良い
[変更するpythonのコード]
stable-diffusion-webui/extensions/sd-webui-train-tools/liasece_sd_webui_train_tools/ui.py
・エディタで開き編集します
[変更前]
choices=["fp16", "bf16"]
[変更後]
choices=["no","fp16", "bf16"]
[エディタを使えない方のため]
cd /(インストールdir)/stable-diffusion-webui
sed -i -e 's/choices=\["fp16", "bf16"\]/choices=\["no","fp16", "bf16"\]/g' extensions/sd-webui-train-tools/liasece_sd_webui_train_tools/ui.py
たったのこれだけ…CPUでLoRA作成ができますが、異常に遅いですw
生成時のパラメタ設定について
・xformersは、記事作成時点では使えないので、チェックを外す
・Mixed precision (If your graphics card supports bf16 better)の選択をnoにする
・その他のパラメタ設定は、LoRA作成に関する内容なので省略します
内臓GPUで動かせないのか?
前回の記事を適用すると、画像生成時もLoRA作成時も内臓GPUを使ってくれます
LoRA作成が爆速になりますw
GPUを使う設定にした時に、webui起動時に、diffusersモジュールでエラー吐く時があります
File "/インストールdir/stable-diffusion-webui/venv/lib/pythonの環境名/site-packages/diffusers/utils/import_utils.py", line 207, in <module>
if torch.__version__ < version.Version("1.12"):
TypeError: '<' not supported between instances of 'str' and 'Version'
こんな時は、「import_utils.py」をコードをエディタで開き、エラーとなっているコードをコメントにする
バージョンチェックをしているのですが、torchのバージョンは、前回の記事では開発バージョンを入れているため、下記の様に、1.12以下ではないので、コメントにしても問題ない
コメントにするのは、先頭に「#」記号を入れて、保存する
# if torch.__version__ < version.Version("1.12"):
# raise ValueError("PyTorch should be >= 1.12")
LoRAをmacで生成して、快適な画像生成ライフを楽しんでください