はじめに
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以上の空き容量をお勧めします)
参考元
- Installing SDXL 1.0 on Local Computer | Weird Wonderful AI Art
- Stable Diffusion XL 1.0 model | Stable Diffusion Art
- How-To-Use-SDXL-Locally-With-Automatic1111-SD-Web-UI | GitHub
おすすめ環境
🔧 快適な開発環境のために
本記事の手順をスムーズに進めるために、以下のスペックを推奨します。
- GPU: NVIDIA RTX 4070 Ti Super(AI開発のコスパ最強GPU)
- メモリ: DDR5 64GB(LLMのローカル推論に必須)