ComfyUI_TensorRT 随机黑图怎么修一次 commit 讲透根因与修复【免费下载链接】ComfyUI_TensorRT项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI_TensorRT用 ComfyUI_TensorRT 跑 SD1.5 动态工作流出图时随机黑、终端狂跳 RuntimeWarning本质是推理流没对齐——后来项目主提交了一次 commit改 3 处代码ComfyUI_TensorRT 黑图彻底根治。现场还原队列一点图黑了你正在 ComfyUI 里用 SD1.5 的动态工作流出图TensorRT Loader 接上 KSamplerbatch 设了 4CFG 拉到 8.0点下 Queue Prompt。终端先跳一行黄字警告RuntimeWarning: invalid value encountered in cast接着出图区——黑了。不是构图黑是整张纯黑。你不信邪把 batch 改成 1、2、8 反复跑结果黑图依然随机冒出来把 CFG 直接怼到 1倒是再没黑过但出图糊得像没采样这招绕不开只是治标。抽丝剥茧三步锁定黑图根因先怀疑张量。invalid value encountered in cast这个警告通常意味着张量里混进了 NaN 或 Inf。但类型转换这段逻辑是确定性的输入合法就必然合法而黑图却是随机出现——所以转换本身没问题脏数据是推理环节写出来的。再排除 batch 维度。有人猜是 batch 越大才炸于是改 1、2、8 反复跑。结果单张也会偶发黑图batch 越大才炸的假设被否掉。最后锁定流执行。翻到tensorrt_loader.py的TrTUnet.__call__batch 超限时会切段循环里对每一段调用execute_async_v3。问题出在改之前的版本用的是初始化时单独创建的一条 CUDA 流而不是 PyTorch 的默认流。execute_async_v3提交完 kernel 任务就立刻返回GPU 实际还没执行VAE 解码却已经在默认流上开始读out了。两条流之间没有任何同步VAE 读到的可能是未初始化或只写了一半的内存解出来自然是一整块黑。这就是随机性的来源读到的是不是脏数据取决于两条流的竞速分段越多、采样步数越多撞上的概率就越大。一招破局把推理拉回默认流修复落在TrTUnet这一处删掉__init__里的torch.cuda.Stream()不再自创私有流执行句柄换成torch.cuda.default_stream(x.device)分段循环结束后对默认流补一次stream.synchronize()。改之前输出写在哪条流上没人保证VAE 随时可能提前开读数据流是断的改之后推理 kernel 和 VAE 解码排在同一条队列里天然串行out里装的才是真实数值转换时也不再蹦出无效值。前后对照一次跑通警告清零修复前修复后随机出黑图batch 越大越频繁全量正常出图无黑图终端RuntimeWarning: invalid value encountered in cast频繁刷屏警告消失SD1.5 / SDXL 在多 batch 下时好时坏多模型 batch 1/2/4/8 全部稳定踩坑自查清单如果你也遇到 ComfyUI_TensorRT 报错或时好时坏的黑图按顺序做三件事先确认版本再谈复现打开本地tensorrt_loader.py确认__call__里用的是default_stream(x.device)且循环后有synchronize()没有这两行先更新节点包别急着调参。盯住那条警告出黑图前终端若频繁蹦invalid value encountered in cast说明脏数据来自 UNet 输出阶段别去怀疑 VAE 和提示词。用 batch_size1 隔离变量单张跑完整队列若仍随机黑问题必在单次推理链路若单张稳定再查 batch 拆分与分段逻辑。TensorRT 黑图修复的核心改动就在 tensorrt_loader.py对照 diff 看一眼整个来龙去脉十分钟就能吃透。【免费下载链接】ComfyUI_TensorRT项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI_TensorRT创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考