Stable Diffution実行時に "NansException: A tensor with all NaNs was produced in Unet." エラーが発生する場合の対処法を紹介します。
Stable Diffutionを実行すると実行途中で、次のエラーメッセージが表示されます。
直前までは、実行できていた状況でも、パラメーターや設定を変更しただけで上記のエラーが発生する場合もあります。
エラーメッセージより以下のどちらかの原因である可能性が高いです。
Stable Diffusion Web UIを起動します。[Settings]タブをクリックします。下図の画面が表示されます。
左側のメニューの[Stable Diffusion]の項目をクリックします。
下図の画面に切り替わります。右側のエリアを下にスクロールします。ページの一番下に[Upcast cross attention layer to float32]チェックボックスがあります。
[Upcast cross attention layer to float32]チェックボックスをクリックしてチェックをつけます。
チェック後ページ上部に戻り、[Apply settings]ボタンをクリックします。
再度、画像生成を実行して、"NansException: A tensor with all NaNs was produced in Unet." エラーが解消されるか確認します。
別の対処法として、--no-half-vae
オプションを指定して起動する方法があります。
webui-user.batのファイルを以下に変更します。
@echo off
set GIT_PYTHON_REFRESH=quiet
set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=
call webui.bat
COMMANDLINE_ARGS=--no-half-vae
または COMMANDLINE_ARGS=--no-half
を追加します。
@echo off
set GIT_PYTHON_REFRESH=quiet
set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--no-half-vae
call webui.bat
以下の設定で、--precision half
と --no-half-vae
を指定すると、設定が競合して起動できないです。
set COMMANDLINE_ARGS=--xformers --precision half --no-half-vae --opt-sdp-attention
以下のエラーが発生します。
--precision half
を使用する場合は、--disable-nan-check
を使用する方法があります。
@echo off
set GIT_PYTHON_REFRESH=quiet
set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--xformers --precision half --disable-nan-check --opt-sdp-attention
call webui.bat