クリエイティブ実践ガイド
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を更新して直る場合もあるが、現在の状態を記録せず更新すると比較できなくなる。
- 現在のバージョンを記録する
- 公式の互換情報や既知の問題を確認する
- 一項目だけ更新する
- 同じワークフローで再実行する
- 結果を残し、必要なら元へ戻せるようにする
黒画像やNaNは、決まった一つの設定で必ず直る種類の症状ではない。最初に異常が出る場所を見つけ、VAE、モデル、数値精度、バックエンドを順番に切り分ける方が、遠回りを減らせる。
まとめ
- 黒画像やNaNという症状だけで、VAE・VRAM・ドライバーのどれかに原因を決めつけない
- どのノードから出力がおかしくなるかと、コンソールの最初の異常を確認する
- モデル、VAE、数値精度、バックエンドを一度に変更せず、一項目ずつ比べる
- 同じシードとワークフローを基準にして、変更前後の結果を比較する