Stable Diffusionで画像が生成されないなどエラーへの対処法まとめ

Stable diffusionで画像生成を行う際に、様々な原因でエラーが発生してしまう場合があります。今回PROMPTYでは、使用している環境などからよく発生してしまうエラーとその対処法を紹介します。

様々な環境で共通して起きてしまうエラー

原因①:突如画像が生成できなくなってしまう

画像生成を行っている際に、下記のように、突如画像が生成できなくなってしまう場合があります。

こういったエラーが起きている場合は、Stable Diffusionの再起動を試してみましょう。

原因②:VRAM不足で画像が生成できない

Stable Diffusionで画像を生成する際に、VRAMの容量はとても重要です。Stable DiffusionはオープンソースのソフトウェアでありVRAMの容量は最低でも4GB以上は必要とされるでしょう。

また、VRAMの容量が不足していると、下記のようなエラーが表示されます。

Not enough memory,use lower resolution(max approx,解像度).
Need:要求されるVRAMの容量,Have:現在のVRAMの容量

VRAMの使用容量を抑える方法の一つとして、Stable DiffusionのWeb UI(AUTOMATIC1111)の起動バッチファイル(webui-user.bat)内に『–medvram』と書き込む方法があります。

これによって、VRAMが行う作業の一部をCPUによって行うことが出来ます。その一方で、画像生成スピードは低下してしまうので、注意が必要です。

さらにこれでも解消されない場合は、『–lowvram』と記入しましょう。画像生成のスピードはさらに遅くなってしまいますが、VRAMの負担を減らすことが出来ます。

Google Colabを使用している際のエラー

Stable DiffusionをGoogle Colabで使用していると、エラーが発生して突然画像が生成できなくなってしまう場合があります。この場合、様々な可能性が考えられます。

原因①:無料版のGoogle Colabを使用している

Stable Diffusionを無料のGoogle Colabで動かそうとすると、サーバーが過負荷になってしまい、下の画像のように突如使用できなくなってしまいます。

対処法①:プロンプトをなるべく簡単なものにする

複雑なプロンプトを入力すると、エラーが発生しやすい傾向にあります。そのため、複雑なポーズやネガティブプロンプトなどの指定はなるべく避けるようにしましょう。

対処法②:Google Colabの有料版を購入する

それでも、複雑なプロンプトなどを使用して画像を生成したい場合は、有料版のGoogle Colabに加入するようにしましょう。有料版であれば、突如画像が生成できなくなることもありません。

また、使用できるGPUの種類も増えるので、画像生成のスピードも上がります。

原因②:Pythonを起動せずにStable Diffusionを起動している

Stable Diffusion WebUIを使用するにはPythonの起動が必要です。

Pythonの起動には、WebUIをダウンロードする前に以下のコードを入力する必要があります。

%pip install torch==2.0.0+cu118 torchvision==0.15.1+cu118 torchtext torchaudio torchdata==0.6.0 --index-url https://download.pytorch.org/whl/cu118

これを実行した後に、Stable Diffusion WebUIをダウンロードしてみましょう。

AUTOMATIC1111を使用している際に起こってしまうエラー

原因:Prunedを使用している際に画像が生成できない

Prunedのfp16というモデルを使用して画像を生成する際に、特定のエラーが出て画像が生成できなくなってしまうエラーが発生してしまう場合があります。エラー内容は以下の通りです。

modules.devices.NansException: A tensor with all NaNs was produced in Unet. This could be either because there’s not enough precision to represent the picture, or because your video card does not support half type. Try setting the “Upcast cross attention layer to float32” option in Settings > Stable Diffusion or using the –no-half commandline argument to fix this. Use –disable-nan-check commandline argument to disable this check.

このエラーに関して、settings>stable diffusion>Upcast cross attention layer to float32にチェックを入れ、この設定を適用すると改善される場合があります。

NMKD Stable Diffusion GUI を使用する際に起こってしまうエラー

原因①:生成される画像が緑一色または黒一色になってしまう

使用しているグラフィックボードがGeForce GTX16系(1660、1660 Super、1660 Ti)である場合、この問題が発生することがあります。

対処法①:Use Full Precisionにチェックを入れる

ウィンドウ右上の歯車アイコンをクリックし、Settings(設定)画面を開いてください。そこで、「Use Full Precision」にチェックを入れてください。

これにより、画像生成が正常に行われるはずです。

対処法②:低メモリモードに切り替える

上の対処を行って解決しない場合、VRAMの不足により画像が生成できない場合があります。その場合は、設定を調整して低メモリモードに切り替える必要があります。

※ Settings 画面の一番上の「Image Generation Implementation」の設定項目を「Stable Diffusion(OptimizedSD – CUDA – Low Memory Mode)」に変更することで、低メモリモードに切り替えることができます。

これによって画像が正常に生成されるようになるでしょう。(一部の環境ではうまくいかない可能性もあります)

※もしも低メモリモードを使用したくない場合は、生成する画像のサイズ(Resolution)を最小の320×320に設定することで、低VRAMモードを使用せずに画像を生成することが出来ることもあります。

原因②:Error failed to load model と表示され、何も画像が生成されない

画像生成する際に Error failed to load model と表示され、何も画像が生成されない場合があります。これはモデル読み込みの失敗を意味します。これらはVRAMの容量不足によるものです。

エラー内容①

Canceling. Reason: Process has errored: - Implementation: InvokeAi - Force Kill: False
Killing current task's processes.
ExportLoop END
No images generated.

エラー内容②

** model sd-v1-5-fp16.ckpt-vae-ft-mse-840000-ema-pruned.ckpt could not be loaded: CUDA out of memory. Tried to allocate ○○ MiB (GPU 0; ○○ GiB total capacity; ○○ GB already allocated; 0 bytes free; ○○ GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF

対処法①:生成する画像のサイズを小さいものにする

Resolution (解像度) を一番小さい 320×320 にして画像を生成すると解決することが出来ます。

対処法②:VRAM使用量を減らす 低メモリモード を使用する

画面右上にある歯車アイコンをクリックし、Settings(設定)画面に移動します。そして、設定項目の一番上にある「Image Generation Implementation」を「Stable Diffusion(OptimizedSD – CUDA – Low Memory Mode)」に変更することで、低メモリモードを有効にできます。

このモードを有効にすると、一部の機能が制限され、画像生成にかかる時間が増加することがあります。しかしこのモードでは、4 GBなどの少ないVRAM容量でも、大きめのサイズで画像を生成することが可能になります。

まとめ

Stable Diffusionで画像生成が出来ない原因の多くは、VRAMの容量不足によるものであることが分かりました。こういった問題は、低メモリモードを使用することによって解決が出来ます。

解像度の大きい画像を生成したい際には、使用しているグラフィックボードのスペックなどをアップグレードするなどする必要があります。

~Stable Diffusionで素早く画像生成するには~

Stable Diffusionの画像生成スピードや画像サイズは、グラフィックボード(GPU)の性能によって大きく変わります。

このため、より効率的かつ快適な画像生成を望むユーザーにとって、最適なグラフィックボードの選択が重要となります。

推論処理やLoRAなどの追加学習処理といった大量の計算を効率よく行うためには、12GB以上のVRAMを持つグラフィックボードを選ぶことを強くおすすめします。

2GBや4GBのVRAMを持つグラフィックボードでは、学習プロセスや高解像度の画像生成に支障が出る可能性が高いです。

コスパを重視する方は、RTX 3060を選ぶと良いでしょう。

このグラフィックボードを使えば、Stable Diffusionの画像生成機能を最大限に活用することが可能となります。