Stable Diffusionを起動できなくなった時の対処法

生成AI(イラスト・歌)

結論から申し上げると、私の場合「sd.webui」>「webui」>「extensions」とフォルダを降りて行った先にある「sd-webui-train-tools」が原因で起動できなくなっていたようです。

これはLoRA学習させるための拡張機能で、これをフォルダごと削除することで問題なく起動できるようになりました。

ただ、この結論に辿り着く前に色々と試行錯誤していたので、そちらも問題解決に影響したかもしれません。
一応以下に詳細を記載しておきます。

NVIDIAのドライバーをバージョンアップする

RuntimeError: Torch is not able to use GPU; add –skip-torch-cuda-test to COMMANDLINE_ARGS variable to disable this check

上記のエラーメッセージが表示される場合はGPUドライバーが最新ではない可能性があります。
GPUドライバーを更新しましょう。
私はNVIDIAのGPU:RTX3060 Tiを使用しているので、NVIDIAドライバの更新方法を記載しておきます。

①GeForce Experienceをダウンロード&インストールする。
②GeForce Experienceを起動し、アカウントを作成する。
※アカウント作成の際Appleアカウントを使用できますが、「メールアドレスを非公開」にすると@privaterelay.appleid.comというランダム生成されたアドレスにメールが送信されてしまいます。
色々と調べてみたんですが、ここに送信されたメールを確認するにはiCloud+に加入するしかなさそうです。
メンドクサイので「メールを公開」設定にして普通にcloudメールから確認した方が良いと思います。
③GeForce Experienceにログインしたら、ドライバータブをクリックしてGeForce Game Readyドライバーをインストールしてください。下の画像はインストール後の物なので再インストールと表示されています。
これでドライバーの更新は完了です。

以下のサイトが分かりやすかったです。ありがとうございます。🙏
https://pickvalue.net/stable-diffusion-error/

Pytorchをアップデートする

You are running torch 1.13.1+cu117.
The program is tested to work with torch 2.1.2.
To reinstall the desired version, run with commandline flag –reinstall-torch.
Beware that this will cause a lot of large files to be downloaded, as well as
there are reports of issues with training tab on the latest version.

Use –skip-version-check commandline argument to disable this check.

上記のエラーメッセージが表示される場合はPytorchが最新ではない可能性があります。
Pytorchをアップデートしましょう。

①普段Stable Diffusionを起動する際は「sd.webui」>「webui」フォルダの中にある「webui-user.bat」をダブルクリックして起動していると思います。これを同じフォルダ内にコピーします。
ファイル名は「webui-user-update.bat」などで良いでしょう。
②「webui-user-update.bat」を右クリックして編集をクリックします。

③するとメモ帳で以下のコードが表示されるはずです。

@echo off

set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=

call webui.bat

このコードに以下のように赤字部分を追記します。
追記出来たら上書き保存してメモ帳は閉じてしまって構いません。

@echo off

set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=–xformers –precision full –no-half –reinstall-torch –reinstall-xformers
set PYTORCH_CUDA_ALLOC_CONF=garbage_collection_threshold:0.6, max_split_size_mb:128

call webui.bat

※各コードの意味(別に読む必要はありません。興味のない方は④まで飛ばしてください。)
–xformers
xformersというライブラリを有効化します。
xformersは効率的なメモリ管理やモデルのスピードアップを目的としたライブラリです。
この引数を使うと、プログラムがxformersを利用するようになります。

–precision full
計算精度を「フル精度(通常は32ビット浮動小数点)」に設定します。
デフォルトでは「半精度(16ビット浮動小数点)」が使用されることが多いですが、フル精度にすることで精度を重視します。
メモリ使用量が増える代わりに、計算結果の安定性が向上する可能性があります。

–no-half
半精度(16ビット浮動小数点)を無効化します。
半精度はモデルを高速化しメモリを節約しますが、環境によっては非推奨の場合や動作が不安定になることがあります。このフラグはそれを防ぎます。

–reinstall-torch
実行時にPyTorchを再インストールします。
バージョンの不一致や環境の問題が発生している場合に、これを使って問題を解消します。

–reinstall-xformers
実行時にxformersを再インストールします。
xformersライブラリの問題を解決するために利用されます。

set PYTORCH_CUDA_ALLOC_CONF=
PyTorchのCUDAメモリ管理に関する環境変数を設定しています。
この設定はGPUメモリの利用効率や安定性を改善するためのものです。

garbage_collection_threshold:0.6
CUDAメモリの「ガベージコレクション(不要になったメモリの解放)」をトリガーするしきい値を指定します。
値が0.6なので、使用済みメモリが60%に達した時点でガベージコレクションが発生します。
この設定を行うことで、メモリ不足が発生しにくくなります。

max_split_size_mb:128
メモリ割り当て時の最大分割サイズを128MBに設定します。
GPUメモリを効率的に割り当てるために、割り当て単位を指定します。
サイズが小さいと細かくメモリを管理できますが、オーバーヘッドが増える可能性があります。

以上のコードによって以下のような効果が期待できます。
・高精度で安定したモデルの実行を目的とする。
・PyTorchやXformersの再インストールを行い、依存関係の問題を解決する。
・CUDAメモリ管理を最適化して、GPUリソースの利用効率を向上させる。

しかしPytorchをアップデートした後はなくても問題ないので、いつも通り「webui-user.bat」で起動できます。

④先ほど編集した「webui-user-update.bat」をダブルクリックします。
するとコマンドプロンプトが起動し、アップデートが始まります。
問題なくアップデートが完了すれば自動的にStable Diffusionが起動するはずです。

先述した通りアップデート後はいつも通り「webui-user.bat」で起動しても問題ありません。

以下のサイトが分かりやすかったです。ありがとうございます。🙏
https://www.fujimiya-san.com/archives/2533

以上、Stable Diffusionを起動できなくなった時の対処法でした。
参考になれば幸いです。