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)ではうまくいきませんでした。どうやらバグがあるようで、もう少し経って安定してから再トライしてみたいと思います。