メモ書きブログ

日々の覚書

stable diffusion を ローカルで動かす

まずpythonを入手してパスを通しておきます。
3系でないといけないので、最新版を入手しました。(3.11)
pipもインストールしておく必要があります。

git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui.git cd .\stable-diffusion-webui\ .\webui-user.bat

とします。
ここでwebui-user.batを実行するのですが、 GPUを積んでないので色々とエラーが出ました。

具体的には、

AssertionError: Torch is not able to use GPU;

とか、

RuntimeError: "LayerNormKernelImpl" not implemented for 'Half'

です。

対策として、webui-user.batエディタで開くと、set COMMANDLINE_ARGS= という欄があるので、オプションを追記します。

set COMMANDLINE_ARGS=--skip-torch-cuda-test --precision full --no-half

こんな感じでした。

これで起動すると、ローカルホストのURLが表示されるので、アクセスしてみると使えるようになりました。

ところがどっこい、1枚生成するのに5分以上かかるのです。
CPUで処理するのは遅すぎるか・・・とダメもとで、 --use-cpu all のオプションをつけてみましたが無駄でした。

Google Collabで試したらすぐに容量制限にひっかかってしもうた。

ちなみに、 stable-diffusion そのままを落としてきたところ、
txt2img.pyにckptモデルではなくてsafetensorsモデルを食わせる方法が分からず詰んだ

!python scripts/txt2img.py --prompt="Horse" --plms --ckpt /content/drive/MyDrive/Models/MyModel_01.safetensors --skip_grid --n_samples 1

上記の様に、ckptオプションに、safetensorsを指定すると当然のごとくエラーを吐いて終了する。

これが回避する方法が分からなかったので、stable-diffusion-webUIを使うようにした

!python launch.py --share --xformers --enable-insecure-extension-access