Stable Diffusionを使用していると発生することのあるエラーについての対処方法です。自作のモデルで発生することも多く、もしここで紹介する方法で解決しないならモデルを疑ってください。
エラーの内容
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.
解決方法
xformersを使用している場合はここで紹介する方法が使えません。起動オプションから「--xformers」を外してお試しください。
起動オプションまたはWeb UIのSettingsタブいずれかで設定変更してください。
起動オプション1
webui-user.batをテキストエディタで開き、COMMANDLINE_ARGS空にしてバッチファイルを実行します。もちろん「--autolaunch」は残しておいて問題ありません。
「--xformers」や「--medvram」を外した状態にすることを目的としています。
@echo off
set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--autolaunch
call webui.bat
起動オプション2
webui-user.batをテキストエディタで開き、COMMANDLINE_ARGSの行に「--no-half」を追加してバッチファイルを実行します。
@echo off
set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=--no-half
call webui.bat
Web UIで設定変更
Settingsタブの左側にある「Stable Diffusion」を開きます。
1番下までスクロールし「Upcast cross attention layer to float32」にチェックします。1番上に戻り[Apply settings]ボタンをクリックし完了です。
コメント