クリエイティブ実践ガイド

ComfyUIで画像が真っ黒になる・NaNが出るときの切り分け方

ComfyUIで画像が真っ黒になる・NaNが出るときの切り分け方
目次

ComfyUIで処理は最後まで進んだのに画像が真っ黒になる、あるいはコンソールにNaN関連のエラーが出ることがある。

この症状は、見た目だけでは原因を一つに決められない。VAEが原因のこともあれば、モデルとの組み合わせ、数値精度、バックエンドなど別の条件が関係する場合もある。

最初にやるべきなのは設定を手当たり次第に変えることではなく、どの段階から出力がおかしくなるかを特定することだ。

まず、失敗した状態をそのまま残す

修正を始める前に、再現条件を保存する。

ComfyUIのバージョン:
GPU / ドライバー:
モデル:
VAE:
数値精度に関する設定:
ワークフローJSON:
シード:
解像度:
コンソールログ:

毎回モデルやシードまで変えてしまうと、何を直した結果が変わったのか分からなくなる。

中間出力を見て、最初に壊れる場所を探す

ワークフローに中間プレビューを置けるなら、どこまで正常で、どこから真っ黒になるのかを見る。

確認の例は次のとおり。

  • 潜在表現を作る前から異常なのか
  • サンプラーの出力から異常なのか
  • VAEで画像へ戻す段階で黒くなるのか
  • 画像自体は正常で、保存処理だけがおかしいのか

最初に異常が出る場所が分かれば、確認する範囲をかなり狭められる。

VAEとモデルの組み合わせを確認する

別のモデル系列向けVAEや、ワークフローが想定していない部品を使っていないか確認する。

ファイルの拡張子が同じでも互換性があるとは限らない。まず配布元や公式ワークフローで指定されている構成へ戻し、そこで正常に動くかを見る。

別VAEへ差し替えることを「高画質化の定番」と考えず、必要な互換性があるかを先に確認する方がよい。

数値精度を変えるなら一項目だけ

NaNは数値計算の異常として現れるため、数値精度や計算経路が関係する場合もある。

ただし、複数の精度設定をまとめて変更すると、どれが効いたのか分からなくなる。現在の設定を残したうえで、一項目だけ変え、同じシードで再実行する。

VRAM不足と同じものだと決めつけない

VRAM不足ではCUDA out of memoryのようにメモリ確保で処理が止まる場合がある。一方、黒画像やNaNは別の失敗経路でも起こりうる。

そのため、タスクマネージャーやnvidia-smiの一瞬の数値だけを見て「VRAM不足が原因」と断定しない方がよい。PyTorchが示す使用中メモリと予約済みメモリも、同じ意味の値ではない。

更新する前に現在のバージョンを残す

ドライバーやComfyUIを更新して直る場合もあるが、現在の状態を記録せず更新すると比較できなくなる。

  1. 現在のバージョンを記録する
  2. 公式の互換情報や既知の問題を確認する
  3. 一項目だけ更新する
  4. 同じワークフローで再実行する
  5. 結果を残し、必要なら元へ戻せるようにする

黒画像やNaNは、決まった一つの設定で必ず直る種類の症状ではない。最初に異常が出る場所を見つけ、VAE、モデル、数値精度、バックエンドを順番に切り分ける方が、遠回りを減らせる。

まとめ

  • 黒画像やNaNという症状だけで、VAE・VRAM・ドライバーのどれかに原因を決めつけない
  • どのノードから出力がおかしくなるかと、コンソールの最初の異常を確認する
  • モデル、VAE、数値精度、バックエンドを一度に変更せず、一項目ずつ比べる
  • 同じシードとワークフローを基準にして、変更前後の結果を比較する
同じテーマから

サイト内検索