【Stable Diffusion SDXL】NansExceptionエラーの解決法

はじめに

Stable Diffusion XL(SDXL)1.0をAutomatic1111のWeb UIで使用している方で、画像を生成しようとした際に「NansException: A tensor with all NaNs was produced in Unet」というエラーに遭遇方も多いのではないでしょうか。このエラーは、VAE(Variational Autoencoder)の処理過程でNaN(Not a Number)が発生することで起きる問題です。SDXLでは従来のSD 1.5とは異なる設定が必要となり、特にVAEの処理方法を正しく指定しないとこのエラーが発生しやすくなります。

結論

SDXL使用時にNansExceptionエラーが発生する際は、起動オプションに「–no-half-vae」フラグを追加することで解決できます。これはSDXLのVAEが16ビット浮動小数点(half precision)をサポートしていないための対処療法です。

具体的な解決手順

Step 1: Web UIの起動スクリプトを編集

Automatic1111 Web UIを使用している場合、起動用バッチファイル(webui-user.bat)をテキストエディタで開きます。Windowsの場合、インストールフォルダ内にあるはずです。

Step 2: COMMANDLINE_ARGSに設定を追加

set COMMANDLINE_ARGS=の行を見つけ、以下のように編集します:

set COMMANDLINE_ARGS=--no-half-vae --xformers

もしVRAMが少ない環境(8GB以下)の場合は、代わりに以下のように設定してください:

set COMMANDLINE_ARGS=--no-half-vae --xformers --lowvram

Step 3: Web UIを再起動

設定を保存したら、Web UIを再起動します。コマンドプロンプトまたはPowerShellでバッチファイルを実行し直してください。

Step 4: モデルの再読み込み

Web UIが起動したら、左上のモデル選択ドロップダウンからSDXLモデルを再選択してください。これで新しい設定でモデルが読み込まれます。

補足・注意点

–no-half-vaeフラグについて

このフラグはVAEの計算に完全な32ビット浮動小数点を使用することを指定します。SDXLのVAEはhalf precision(16ビット)に対応していないため、この設定が必須となります。

  • SDXL使用時:必ず–no-half-vaeを使用
  • SD 1.5使用時:VAEエラーが発生しない限り、使用不必要的

xformersの併用

–xformersフラグはVRAM使用量を削減し、高速化する役割を果たします。NVIDIA GPUユーザーは導入を検討してください。インストールされていない場合は、以下のコマンドでインストール可能です:

pip install xformers

VRAM容量による推奨設定

  • 12GB以上:–no-half-vae –xformers
  • 8GB程度:–no-half-vae –xformers –medvram
  • 6GB以下:–no-half-vae –xformers –lowvram

その他の確認事項

もし上記の方法で解決しない場合は、以下の点を確認してください:

  • Web UIが最新バージョン(1.6.0以上)であること
  • GPUドライバが最新であること
  • достаточноеディスク空き容量があること(SDXLは大きなモデルなので少なくとも20GB以上の空き容量をお勧めします)

参考元

おすすめ環境

🔧 快適な開発環境のために

本記事の手順をスムーズに進めるために、以下のスペックを推奨します。

この記事は役に立ちましたか?