Stable Diffution実行時に "NansException: A tensor with all NaNs was produced in Unet." エラーが発生する

Stable Diffution実行時に "NansException: A tensor with all NaNs was produced in Unet." エラーが発生する場合の対処法を紹介します。

現象

Stable Diffutionを実行すると実行途中で、次のエラーメッセージが表示されます。
エラーメッセージ
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.

直前までは、実行できていた状況でも、パラメーターや設定を変更しただけで上記のエラーが発生する場合もあります。

原因

エラーメッセージより以下のどちらかの原因である可能性が高いです。
  • 画像を表現するのに十分な精度がない
  • ビデオ カードがハーフ タイプをサポートしていない

対処法: Stable Diffusion Web UIの場合

Stable Diffusion Web UIを起動します。[Settings]タブをクリックします。下図の画面が表示されます。
Stable Diffution実行時に

左側のメニューの[Stable Diffusion]の項目をクリックします。
Stable Diffution実行時に

下図の画面に切り替わります。右側のエリアを下にスクロールします。ページの一番下に[Upcast cross attention layer to float32]チェックボックスがあります。
Stable Diffution実行時に

[Upcast cross attention layer to float32]チェックボックスをクリックしてチェックをつけます。
Stable Diffution実行時に

チェック後ページ上部に戻り、[Apply settings]ボタンをクリックします。
Stable Diffution実行時に

再度、画像生成を実行して、"NansException: A tensor with all NaNs was produced in Unet." エラーが解消されるか確認します。

別の対処法: Stable Diffusion Web UIの場合

別の対処法として、--no-half-vaeオプションを指定して起動する方法があります。
webui-user.batのファイルを以下に変更します。
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 を追加します。
webui-user.bat 変更後 (例)
@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 を利用する場合

以下の設定で、--precision half--no-half-vae を指定すると、設定が競合して起動できないです。
set COMMANDLINE_ARGS=--xformers --precision half --no-half-vae --opt-sdp-attention 
以下のエラーが発生します。
エラーメッセージ
AssertionError: --no-half and --no-half-vae conflict with --precision half

--precision halfを使用する場合は、--disable-nan-check を使用する方法があります。
webui-user.bat 変更後 (例)
@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

AuthorPortraitAlt
著者
iPentecのメインデザイナー
Webページ、Webクリエイティブのデザインを担当。PhotoshopやIllustratorの作業もする。 最近は生成AIの画像生成の沼に沈んでいる。
作成日: 2023-05-20
Copyright © 1995–2025 iPentec all rights reserverd.