概要
Stable Diffusion WebUIをMac(M1チップ)にインストールしました。
実行にあたって遭遇したエラーの解決方法を記載します。
前提(Mac環境)
- 機種ID:MacBookPro18,3
- macOS:Monterey
- チップ:Apple M1 Pro
- メモリ:16GB
①RuntimeError: "upsample_nearest2d_channels_last" not implemented for 'Half'
まずは以下のエラーに遭遇しました。
RuntimeError: "upsample_nearest2d_channels_last" not implemented for 'Half'
解決方法は、webui-macos-env.sh
のCOMMANDLINE_ARGS
に--no-half
を追加すると解決しました。
export COMMANDLINE_ARGS="--skip-torch-cuda-test --upcast-sampling --no-half-vae --no-half --use-cpu interrogate"
特定のプログラムまたはライブラリ(おそらくPyTorchや関連するライブラリ)でHalf
(16ビット浮動小数点数)データ型に対してNearest Neighbor
アップサンプリング操作を実行しようとした場合に発生しているらしい。
以下のissuecomment通りにしたら解決しました。
[Bug]: Remove of --no-half cause errors under MacOS with any Torch version, but almost all samplers produce only noise with it and latest nightly builds
②RuntimeError: MPS backend out of memory
modelによっては実行後に以下のエラーになりました。
RuntimeError: MPS backend out of memory (MPS allocated: 17.21 GB, other allocations: 290.12 MB, max allowed: 18.13 GB). Tried to allocate 720.00 MB on private pool. Use PYTORCH_MPS_HIGH_WATERMARK_RATIO=0.0 to disable upper limit for memory allocations (may cause system failure).
--medvram
オプションを追加すると改善される場合があるとのことで、追加。
上述のものも含めてCOMMANDLINE_ARGS
は以下になりました。
export COMMANDLINE_ARGS="--skip-torch-cuda-test --upcast-sampling --no-half-vae --no-half --use-cpu interrogate --medvram"
これで実行中に上記エラーが出ることは無くなりました。
まだエラーがでている場合は、一度バッチを閉じてから、再度開くと直ることもあります。
(自分の場合はサイズを一定以上大きくしすぎるとこのエラーになったりしました)