東大 生物情報学科、学部生の備忘録

東京大学の学生です。日々の気づき、学び、つまづいたことをメモにします。

MENU

Stable Diffusion for M2 mac (in Japanese)

はじめに

M2(/M1) Mac における "Stable Diffusion" の環境構築について、説明する。 この方法に辿り着くまで、数日ほど費やした。 まだ最適解かはわからないが、局所最適解にはたどり着いたと思う。 ある程度 PC の知識があり、ここまでで試行錯誤し、苦しんだ人向けの内容になると思われる。私がここまで到達するのに苦しんだ過程を共有したい。 あまり知識がない or Lora を使用しないライトユーザは、 DiffusionBee についての記事を参考にしてもらいたい。 かなり熱いアプリであり、2週間ほど前に .safetensors が使えるようになり、今後は Lora の利用もできることになる見込みである。そちらが発展していけば、わざわざ面倒な環境構築を行う必要はなくなる。

English version is available here: ut-bioinformatic.hatenablog.jp

環境

Automatic1111

installation

"M2 Automatic1111 installation" でググればわかる。

Errors about xformers and torch

Automatic1111 は local で実行できるのだが、Mac は cuda に対応していないので、 torch.cuda.* で必ずエラーが発生する。 このための解決策が

などで提示されているのだが、どうも うまくいかない。 --xformers を COMMANDLINE_ARGS に追加することや、 文字列 "cuda" を全て"mps" にするといった方法があったのだが、この方法は「torch.mps.empty_cache() が存在しない」ということなど、正確な書き換えとは言えないだろう。 そして、次に続くようなエラー文が一向に消えない。

これを解決するために色々な対策を講じたが、このエラー分を消去することはできなかった。 しかし、Mac の Application の Activity Monitor から GPU の使用履歴を確認すると、Stable Diffusion で画像を生成している際に GPU 使用率が 100 % になっていたので、MacGPU が使われているとわかった。要は、xformers や torch のエラー文が出てきたとしても、GPU 使用率が 100 % に近くなっていれば特に気にす ることはないのである。 最終的には Commandline_args の --xformers を取り除いた。 注意: --skip-torch-cuda-test を指定する等の必要はある。

Usage for Automatic1111

Automatic1111 には多くの有用な拡張機能が存在している。それを確実に利用するのが良い。 ControlNet, Adetailer, Openpose-editor and sd-dynamic-prompts は便利なので、オススメ。

Training Lora (How to create Lora) with M2/M1 mac

M2

はじめに、Automatic1111 にて Extensions の一つである sd-webui-train-tools を install し、

に示されるような方法で training を開始したのだが、信じられないほど遅い。 それもそのはず、GPU 使用率が 30% 程度に過ぎず、GPU が利用されていなかったのだ。 GPU を利用するための方法を探り、いくつかの文献を見つけたのだが、

ここに示されているように、 kohya_ss/library/train_util.py に含まれるすべての "cuda" を "mps" に書き換えているだけである。 この方法は先ほど述べたように怪しい点があるし、Lora の学習はそもそもかなり時間と計算リソースがかかることから、Local での作業は諦めた。

colab

以下の動画を参考にするとすぐに学習ができるだろう。 youtu.be

colab notebook の URL は

https://github.com/Linaqruf/kohya-trainer/blob/main/README.md

に記載されている。 しかし Google Colab の無料版では、リソースに限界があり、また数時間に及ぶような学習は途中でランタイムが途切れてしまう。 そのことから、Google Colab pro を契約してしまうのが良い。 また、Google Drive の容量もある程度拡張しておくのが望ましい。Google Colab には使ったリソース分だけ支払うというオンデマンドな支払い体系があるようだが、詳しく調べるのが面倒だったので、月ごとのサブスクリプションにした。(ここは改善の余地があるだろう。しかしまだ使用し始めて 1ヶ月経っていないので、理想がどうかわからない。) Lora の学習一回でコンピューティングユニット数が 6.0 ほど減少してしまうのだが、colab pro では1ヶ月あたりの使用可能なコンピューティングユニット数が 100.0 であるので、1ヶ月に 20 回以上 Lora の学習を行う人には向いていないと考えられる。これ以上使う方は Pro+ にするか、私が断念した "training Lora in M2 Mac" を行う以外術はない。

Conclusion

M2 Mac StableDiffusion Decision Tree

これが今の時点の答えだ。 異論は、もちろん認める。というか、教えていただきたい。

関連記事

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp

ut-bioinformatic.hatenablog.jp