快速结论:该问题出现在 ComfyUI 对 MiniMax-H3 使用任何 denoise_mask(包括完全均匀的掩码)时,输出会出现规则的 16×16 像素网格伪影。这是由 #15375 引入的回归,可能原因是掩码被模型重复处理导致时间步长不一致,优先可尝试通过 ModelPatcher 禁用模型的掩码分支,仅保留采样器混合逻辑。
适用环境:ComfyUI(基于 ff6c8a8af/#15375 后的版本,v0.34.0-16-g8a33128f2 已确认)、PyTorch 2.13.0+cu130、Python 3.12.7、RTX 3080 12GB、Windows 11。
最快修复方案:Issue 中已验证的规避方法:克隆模型并用 ModelPatcher 对象补丁清空 `_denoise_mask_conds`,并从 `scale_latent_inpaint` 参数中剥离 denoise_mask。官方 PR 尚在编写中,暂无已验证的一步升级修复方案。
注意事项:该规避方法通过削弱模型感知掩码的能力来消除伪影,可能影响模型利用掩码进行局部时间步长感知的能力。Patch 的验证仅基于 CPU/源码层合约,未在 GPU 上进行二次验证。
问题场景
该问题在 ComfyUI 中处理 MiniMax-H3 视频生成模型时出现。无论是通过用户自定义节点还是原生节点(如 Create Solid Mask → Set Latent Noise Mask → LTXVConcatAVLatent → KSampler),只要掩码到达模型采样器,输出视频就会叠加周期性的网格伪影。问题在完全均匀的掩码下也会出现,即不需要掩码在空间上随机变化。
报错原文
MiniMax-H3: any denoise mask produces a repeating grid artifact since #15375
Measured by 2-D FFT... a square peak at exactly **16.0 x 16.0 px** at 9 to 12x prominence with a mask, and nothing above roughly 2.6x background without one.
原因分析
可能原因:掩码处理的双重机制冲突。#15375 之前,掩码合并只发生在 KSamplerX0Inpaint 层面:采样后的输出会根据掩码与输入 latent 混合。而 #15375 引入了一条新的独立路径:模型自身(`comfy/ldm/minimax/model.py` 的 `_denoise_mask_conds`)会根据掩码将每个 token 的时间步长(timestep)调整为 `1 – m*sigma`。这就导致模型预测时的假设(masked token 对应的 noise level)与其实际收到的 latent 不一致。
Issue 讨论中进一步指出,掩码会在到达模型时被量化到 token 网格时钟步长(如 `r = ceil(256m) / 256`)。输入 latent 能通过 `scale_latent_inpaint` 与量化步长对齐,但模型的输出速度(velocity)在后续 FLOW_AV 转换(`BaseModel._apply_model` → `ModelSamplingAV.calculate_denoised`)时,仍使用的是全局的 sigma,而非掩码局部的 `r * sigma`。这种不匹配会在每个 latent 单元边缘残留错误的速度分量,最终表现为亚 token 级的、空间分布不均的网格纹理。建议分析时特别关注这一点。
环境排查
- ComfyUI 内置 / 自定义节点:确保可在原生节点上重现(如 Create Solid Mask 路径),排除自定义节点污染。
- MiniMax-H3 相关文件版本:确认包含 #15375 的 commit 引入的 `_denoise_mask_conds` 分支(comfy/ldm/minimax/model.py)。
- 确认依赖版本:PyTorch 版本、Python 版本、CUDA(Issue 中为 torch 2.13.0+cu130、Python 3.12.7)。由于该问题在 CPU/源码级合约即可复现,可先在低负载下进行白盒调试。
解决步骤
- 临时规避方法(已在 Issue 中被证实有效):在 ComfyUI 脚本中对象模型并对 mask 相关对象打补丁:
m = model.clone() orig = m.model.scale_latent_inpaint m.add_object_patch("_denoise_mask_conds", lambda denoise_mask, latent_shapes: {}) m.add_object_patch("scale_latent_inpaint", lambda sigma, noise, latent_image, x=None, denoise_mask=None, **kw: orig(sigma=sigma, noise=noise, latent_image=latent_image, **kw)) - 功能降级验证:去掉该补丁中的第二个 patch,保留 `_denoise_mask_conds` 的禁用,确认伪影是否消失(如果伪影仍保留,则可能是 `scale_latent_inpaint` 中的残余逻辑所致)。
- 量化敏感性测试:Issue 中指出即使输入 mask 已经是精确的 205/256,问题依旧存在,因此确认问题并非简单由 mask 量化造成,而应集中排查速度回归与全局 sigma 的转换逻辑。
- 社区与上游跟进:查看 #15981 及相关的 #15978、#15375 是否有官方修复 PR(Issue 讨论时尚未发现相关 PR,留言人称正在编写并准备提交 PR)。
验证方法
对输出视频的生成帧与输入 latent 相减,进行 2-D FFT 分析(周期为 6 到 80px)。若修复成功,16 像素方波峰将从 12x 显著度降至背景水平(约 2-3x 背景中位数)。建议分象限测量,因为该伪影空间不均,帧级别整体指标可能使其被平均掉而失效。
使用相同输入图、种子和模型参数,先后在开启 / 关闭 `denoise_mask` 的情况下生成视频,对比是否存在明显的规则网格纹理。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


