Stable Diffusion 生成图片报错 NaN 出现黑屏是什么原因

文章导读
Stable Diffusion 生成图片报错 NaN 并出现黑屏,通常是因为显存计算精度不足、插件兼容性冲突或硬件过热导致。最推荐的处理方向是关闭半精度计算、排查插件兼容性或检查硬件散热状态。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 常见问题
  7. 参考来源
A A

Stable Diffusion 生成图片报错 NaN 并出现黑屏,通常是因为显存计算精度不足、插件兼容性冲突或硬件过热导致。最推荐的处理方向是关闭半精度计算、排查插件兼容性或检查硬件散热状态。

先说结论:NaN 报错本质是计算过程中产生了无效数值,导致图像数据丢失或硬件保护性黑屏。

  • 先确认:控制台是否显示"A tensor with all NaNs was produced in Unet"或是否有过热警告。
  • 先处理:添加启动参数`--no-half`关闭半精度,或暂时禁用 ADetailer 等插件。
  • 再验证:重新生成图片,观察控制台日志是否仍有 NaN 警告且图片是否正常显示。

命令速用版

在启动脚本中添加以下参数尝试绕过精度检查或强制全精度计算:

python3 launch.py `--xformers` `--disable-nan-check`
python3 launch.py `--no-half`

注意:使用`--disable-nan-check`后若不报错但图片仍为黑色,说明模型文件本身可能存在错误。

为什么会这样

核心原因是计算过程中产生了无效数值(NaN),导致图像数据丢失。

Stable Diffusion 默认使用半精度浮点数(float16)加速计算。部分显卡架构不支持半精度,或在复杂计算步骤(如 Unet 交叉注意力层)中数值超出范围变成 NaN。插件(如 ADetailer)在新版 WebUI 中可能存在兼容性冲突,批量生成时触发维度不匹配。硬件过热也会导致计算错误引发黑屏。

Stable Diffusion 生成图片报错 NaN 出现黑屏是什么原因

分步处理

步骤 1:检查控制台报错信息

查看终端日志,确认是否出现"A tensor with all NaNs was produced in Unet"字样。如果是批量生成时第一张图黑屏,可能是 TensorRT 维度匹配问题。

步骤 2:调整精度参数

在启动命令中加入`--no-half`参数,强制使用全精度计算。这会增加显存占用,但能避免半精度溢出。

Stable Diffusion 生成图片报错 NaN 出现黑屏是什么原因

步骤 3:排查插件兼容性

暂时禁用 AfterDetailer (ADetailer) 等后处理插件。若关闭插件后生成正常,说明是插件与当前 WebUI 版本不兼容。

步骤 4:检查硬件散热

若生成过程中电脑突然黑屏死机,检查显卡和 CPU 温度。笔记本散热相对较差,长时间跑图可能导致过热保护。

怎么验证是否生效

观察生成的图片是否全黑或噪点。查看控制台日志是否有 NaN 警告。监控硬件温度是否在安全范围内。生成一张 512x512 的图片,至少需要 4GB 以上的显存,若显存不足也会中途报错。

Stable Diffusion 生成图片报错 NaN 出现黑屏是什么原因

常见坑

使用`--disable-nan-check`参数可能掩盖问题但仍出黑图,此时建议更换模型文件。批量生成时第一张图黑屏可能是 CFG 处理逻辑导致的维度不匹配。显存规格选低了,可能一开始能启动,但一生成图片就报错。

常见问题

显卡支持半精度为什么还报错?

即使支持,特定模型步骤数值溢出也会产生 NaN。

关闭 NaN 检查后图片还是黑的怎么办?

说明模型文件或精度设置仍有问题,建议更换模型。

只有批量生成时报错吗?

某些插件如 ADetailer 仅在批量或多图处理时触发兼容性错误。

参考来源

  • StableDiffusion 半精度报错全面解析:从原理到实战解决方案
  • AfterDetailer 插件用户必看:Stable Diffusion 新版兼容性报错解决全流程
  • stable-diffusion-AI 画图软件常见报错的解决方案
  • 为什么我的 stable diffusion 在生成的时候会像这样突然黑屏?
  • ComfyUI_TensorRT 项目中 NaN 值导致首张图像黑屏问题分析-CSDN 博客
  • Stable-Diffusion-V1-5 环境问题排查:常见部署与调用错误解决方案
  • Stable Diffusion 无法生成图片并 NaNs Unet 报错,如何解决?
  • 跑图或用 StableDiffusion 时突然黑屏?这些方法帮你解决
  • Stable-Diffusion-V1-5 故障排除指南:常见错误提示与解决方案