拓冰建站拓冰建站
首页 / 资讯中心 / 正文

ComfyUI_TensorRT 随机黑图排查、根因与避坑

ComfyUI_TensorRT 随机黑图排查、根因与避坑【免费下载链接】ComfyUI_TensorRT项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI_TensorRT如果你在用 ComfyUI_TensorRT 出图时随机得到全黑图像终端还弹出RuntimeWarning: invalid value encountered in cast这篇文章还原了这次黑图问题的完整排查与解决过程怀疑范围如何从引擎构建错了一步步收窄到 CUDA 流调度以及 3 行改动如何从根上修好它。现场还原ComfyUI_TensorRT 的 SD1.5 动态工作流随机出全黑图现场非常普通用 TensorRT Loader 加载 SD1.5 的动态 TensorRT 引擎支持一段分辨率和批处理区间、而非固定尺寸的引擎Empty Latent Image 设 512×512、batch size 4KSampler 的 CFG 给 8点 Queue Prompt。大多数时候出图正常但偶尔整批全是纯黑再点一次又好了。黑图那次终端固定伴随一条警告RuntimeWarning: invalid value encountered in cast最让人不安的是随机性batch size 1、2、4、8 都能触发批越大黑得越多SD1.5 和 SDXL 都中招。而把 CFG 调到 1 时黑图彻底消失——只是那时的图模糊得没法用。社区里也有人用 CFG 相关的节点配置达到同样效果。如果你的终端也弹出这条警告往下看这就是同一个问题。排查路径如何从是我的配置问题收窄到 CUDA 流第一个怀疑对象永远是引擎本身。动态引擎要声明 min/opt/max 区间区间拉得宽就有 profile 不合理的嫌疑于是换成静态引擎只支持单一分辨率加批处理的引擎重建结果照样随机黑图构建参数被排除。接着怀疑模型侧model_type 不匹配、checkpoint 选错都可能算出 NaN。换过 model_type、换过 checkpoint、从原始工作流重新加载再跑依旧随机黑。动态引擎的文件命名规则也核对过全部吻合。真正的转折点是invalid value encountered in cast这条警告。这个 cast 发生在 VAE 解码阶段说明 UNet 产出的 latent 已经含有无效值——问题一定在TensorRT 把结果写进输出张量和后续代码读它之间。翻开tensorrt_loader.py发现TrTUnet在初始化时自建了一条私有流self.stream torch.cuda.Stream() self.context.execute_async_v3(stream_handleself.stream.cuda_stream)排查方向在这里收拢了。根因定位私有流和 PyTorch 默认流之间发生了竞争先说清楚机制CUDA 流是 GPU 上的任务队列同一队列内的任务严格有序不同队列之间则没有任何先后关系可以并行执行。回看原实现latent、timesteps、文本条件这些输入全部由 PyTorch 算子在默认流上产生输出张量out也在默认流上分配之后立刻被 VAE 解码消费。唯独 TensorRT 引擎本身的执行被提交到一条私有流上。代码里的self.stream.synchronize()只保证私有流自己跑完了并没有和默认流建立任何顺序——引擎完全可能在输入写之前就开始读VAE 也可能在输出写之前就开解码。是否踩中完全取决于两条流的时序这就是随机的来源同一批参数有时正常、有时全黑。两个旁证现象也都能对上。CFG 为 1 时采样路径变短、GPU 占用变轻竞争窗口极小黑图几乎不复现批处理越大引擎需要切分成更多小批依次提交暴露窗口更多命中概率越高所以批越大黑得越多。修复与验证commit 41e28c6 如何把推理挪回默认流项目所有者在 commit41e28c6Fix issue with black images提交了修复tensorrt_loader.py只改了 3 行不再创建私有流改用torch.cuda.default_stream(x.device)提交execute_async_v3并在同一条流上同步。所有任务回到同一个队列后写完输入再读、写完输出再读的顺序由队列天然保证竞争从根上消失。前后对比修复前SD1.5 与 SDXL 动态引擎在 batch 1/2/4/8 下随机出黑图终端伴随 cast 警告修复后相同模型、相同批处理配置反复跑通全部组合无一黑图终端不再出现 RuntimeWarning出图质量稳定。✅再补一个细节其后的 commita9a6923又把那次同步调用删掉了注释写明默认流不需要额外同步。那是纯性能优化不属于修复逻辑。避坑提醒遇到黑图后逐条核对的四件事先把插件更新到包含 commit41e28c6及之后的版本如果修复后不再黑图就无需继续深查。如需重新克隆仓库地址是 https://gitcode.com/gh_mirrors/co/ComfyUI_TensorRT⚠️ 终端出现RuntimeWarning: invalid value encountered in cast时不要当成普通警告忽略它通常意味着上游算出了 NaN是这类问题最直接的线索验证修复是否生效同一 prompt、batch 4 连续出图 10 次无一张黑图、无新增警告即可认为解决复杂工作流先分步验证用原始 PyTorch checkpoint 出图确认参数本身没问题再换 TensorRT 引擎对比能快速隔离出出问题的节点【免费下载链接】ComfyUI_TensorRT项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI_TensorRT创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门