Published on

macでAI絵を生成したときのメモ

macbook(M1 or M2)で AI 絵が生成できるか試したく、実際に生成するまでのメモ。 結論から言うと生成できました。

stable diffusion は聞いたことがある人も多いかと思います。 テキストを入力すると画像を作ってくれるもので、狙った画像を出すためのテキストを呪文って言ったりします。

でもこれ基本的にはごりごりに cuda というものを使っていくので強い GPU、特に NVIDIA のグラフィックボードありきの世界のようです。 今は 3060 or 3060Ti のメモリ 12G が人気の様子。メモリが特に重要でメモリ 12G 積んでる GPU でコスパがいいってのがポイントのようです。

一方で Apple はどうなの?というとml-stable-diffusionというものを Apple がだしています。

これは stable diffusion をもとに mac や iphone?でも使えるようにしたもので違いはモデルの使い方のようです。モデルの ckpt や safetensor の拡張子のファイルをそのまま使うことができず、Apple 独自の Core ML モデルに変換する必要があります。

なぜ変換するかっていうと apple silicon の性能を最大限使えるようにするための処理のようですね。

モデル探しはhuggingfacecivitaiが有名です。 使いたいモデルを見つけてダウンロードして使うのですが、 apple が提供している ml-stable-diffusion ではそのままモデルが使えないので、diffusers というモデル変換スクリプトを使って変換する手間があります。 ただ、モデル変換も私が試したときは変換元が LoRa モデルだ weight のパラメータの関係なのかエラーがでて変換できなかったです。

すでに core ml に変換済みのモデルもありまして、こちらになります。 ページの下に models という項目があるのでそこからダウンロードできます。 そして、生成自体はターミナルから行います。事前のインストール手順などの詳細は省きますがこんなかんじ

python -m python_coreml_stable_diffusion.torch2coreml --convert-unet --convert-text-encoder --convert-vae-decoder --convert-safety-checker -o <output-mlpackages-directory>

んで、コマンドいちいち打ってらんないっす。 ってなると思うので画面で操作できるやつが以下。

MochiDiffusion を試す

Swift Core ML Diffusers というものや、MochiDiffusion がありまして、MochiDiffusionの方は試しました。ダウンロードしたCore MLのモデルを指定のディレクトリにいれるだけで使えまして、プロンプトとstep,seedの設定をするだけでそれなりの生成が可能でした。 ただ、プロンプトの文字数制限と参考画像を指定する際のサイズが固定されている点と生成される画像のサイズが変えられませんでした。(HDのチェックボックスはある)

stable-diffusion-webui を mac で試す

そして、王道と言われている AUTOMATIC1111 のstable-diffusion-webuiを使ってみました。

こちらは基本的に windows 向けで Nvidia の GPU で性能が発揮できまして、ありがたいことに apple silicon ユーザー用の使い方を用意してくれています。

Installation on Apple Silicon

注意点として解像度あげるとめちゃ時間かかったり、エラーで止まる、真っ黒になるといったことがあります。

私がエラーがでたときにやったのは web-ui.sh に

export COMMANDLINE_ARGS="--skip-torch-cuda-test --no-half --disable-nan-check"

と追加してなんとか対処しました。

ちなみに colab という無料で使えるやつがあるのですが、それで使えるように有名モデルでセットアップしてくれてるものもありました。

stable-diffusion-webui-colab 各モデルの左のアイコンのリンクに飛んで、再生ボタン押すだけで仮想環境にもろもろインストールして起動までしてくれます。

mac で stablediffusion web ui を起動するまで

補足としてかいておきます。

以下ターミナルでの作業

  • mac に brew が入ってるとこからスタート
  • 必要なものをインストールする
  • 本体 stablediffusion web ui を落とす
  • model を用意する
  • 起動

mac に brew がはいっているか確認する。 brew -v でバージョンが表示されれば OK。 入ってない場合、brew.shのコマンドいれる。

//公式のコマンド
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

次に 必要なものを入れます。python のバージョン指定しているので他のバージョンではエラーでるかもです。

brew install cmake protobuf rust python@3.10 git wget

次は本体をダウンロード

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui

ここで model を設定しますが、あとから追加もできます。 model の設置場所は stable-diffusion-webui/models/にいれるだけで、起動時に自動で種類別で振り分けてくれます。 checkpoint や LoRa など。 なにもいれなければデフォルト用のやつがダウンロードされます。

そして、ターミナルでディレクトリを移動。

cd stable-diffusion-webui

最後に起動。

./webui.sh

起動に成功した場合、少し待つと Running on local URL: http://127.0.0.1:7860 といった表示がでてると思うので http://127.0.0.1:7860 にブラウザからアクセスすると使えるようになります。

こんなのもあるみたいです。

画像からプロンプトを探すサイト

まとめ

個人的には stable-diffusion-webui がいい。 モデル探しはcivitaiいいね。 とりあえず生成するといった使い方はできるが学習となるとおそらくスペックの限界で厳しい。 生成も解像度をいじるとめちゃめちゃ遅かったり、真っ黒になるので注意。

とんでもない世界だわ。。。

GPU NVIDIA 3060 12G