【M1 Mac】Stable Diffusion環境の構築

M1 ProのMacBook Proを購入したのは、強力なM1 Proプロセッサを使いたかったからというのがあります。実際、intel Macとの差は歴然です。Stable Diffusionでイラストを自動生成させてみると、M1 Proのパワーが実感できます。

AIイラストでは、いろいろなサービスが登場していますが、商用利用の場合は有料など制約があります。また、有料サービスでも生成枚数に制限があったりします。AIイラストを使ってみるとわかりますが、本当にガチャガチャのようです。

どのようなイラストを生成したいか、文字で指定するのですが、その文字は「呪文」と言われているように、綺麗な絵を生成するためには文字の組み合わせに工夫が必要です。しかも、同じ呪文にも関わらず、毎回まったく異なるイラストが生成されます。ちょっとここを直したい、という使い方はできません。なので、イメージに合ったイラストが出てくるまで、ボタンを押し続けることになります。まさにガチャガチャと同じです。そうなると、どんどん生成するイラストの枚数が増えていきますので、できれば上限なしで生成したくなります。

自分のPCでローカル環境で開発環境を構築できれば、無制限にAIイラストを自由に生成できるようになります。

AIイラストとのコラボで新しい作品を作ることも可能になります。

今回、ローカル環境に開発環境を構築しました。ところが、同じStable Diffusionでも環境構築の方法によって、M1 Proへの負荷のかかり方がかなり違うことがわかってきましたので、以下にまとめてみたいと思います。

目次

DiffusionBee

これが最も簡単です。しかも無料です。アプリをインストールするようにできるので、ほとんど手間がかかりません。ローカルで動かすことができます。最初だけ、モデルデータのダウンロードに時間がかかります。

これはmacOS限定なので、使いたい人はMacが必要になります。

生成スピードがとても速いです。512サイズなら20秒ほどで生成してくれます。intel版だと、本体が熱くなり、ファンが稼働し始め、しかも時間も結構かかります。しかし、M1 Macであれば、ファンが稼働することもなく、本体が熱くなることもありません。パワーの差は歴然です。

M1、M2 Macを持っている方はこれを使わない手はありません。

モデルもデフォルト以外にも入れ替えて使うことができるので、汎用性が高いアプリです。waifu-diffusionのモデルが使えなかったのが残念ですが、結構使えるモデルがあるので、大変便利なアプリです。バージョンアップによってwaifuも使えるようになるとありがたいです。

生成した画像をヒストリーとして一覧できるのも便利です。

Stable Diffusionの環境構築

本家、Stable Diffusionを使う方法です。ターミナルを使って仮想環境上にインストールしていきますので、難易度は高めです。

こちらも完全無料で使えます。

この方法だと、waifu-diffusionモデルも使うことができ、Pythonコードもいじれますので、もっとも自由度が高いです。

ただし、生成にはマシンパワーがかなり必要になります。このMacBook Pro M1 Pro メモリ16GBでも、メモリが不足し、スワップが発生します。ファンも稼働し、熱くなっているのが感じられます。GPUを使っているにもかかわらず、生成に2分ほどかかります。DiffusionBeeの場合は、使用メモリは多くても12GB程度で、スワップは発生しませんし、ファンももちろん稼働しません。

この点からも、waifu-diffusion(アニメ風に特化)を使わなければ、DiffusionBeeの方が快適です。

ここからは、Stable Diffusionの環境構築方法を記載したいと思います。(Homebrewがあること前提です。)

Stable Diffusionのコードをクローンし、ローカルに保存します。

%git clone -b apple-silicon-mps-support https://github.com/bfirsh/stable-diffusion.git

ユーザーフォルダにstable-diffusionフォルダができていると思いますので、そこの中のldmフォルダ内に、stable-diffusion-v1フォルダを作成します。

%Users/ユーザー名/stable-diffusion/models/ldm/stable-diffusion-v1

学習モデル(チェックポイントファイル「.ckpt」)ファイルをダウンロードします。これはHugging Faceからダウンロードできます。検索窓から、「stable diffsion」や「waifu diffusion」と検索して、ページ内に拡張子が「.ckpt」となっているファイルをダウンロードします。

使いたいモデルをダウンロードしたら、名前を「model.ckpt」に変更して、「stable-diffusion-v1」フォルダ内に入れます。

次に仮想環境を作ります。わたしは、”sd15″という環境を作りました。

%conda create -n sd15 python=3.10

アクティベイトし、フォルダを移動します。

%conda activate sd15
%cd stable-diffusion

依存関係をインストールします。

%pip install -r requirements.txt

これで環境構築は完了です。

試しに、以下のコマンドを入力すると、「outputs」フォルダが生成され、そこに画像データが保存されます。promptには好きな言葉を入れて、いろいろ試してみるとよいと思います。

%python scripts/txt2img.py \
  --prompt "a fairy in the forest" \
  --n_samples 1 --n_iter 1 --plms

このような感じの画像が生成されました。

Stable Diffusion WebUI

これは現時点(2023.1.7)ではうまくいきませんでした。どうやらバグがあるようで、もう少し経って安定してから再トライしてみたいと思います。

目次