| 项 | 升级前 | 升级后 |
|---|---|---|
| ComfyUI 核心 | ec803fc9 = v0.34.0-29(2026-09-02) | b2da2b42 = v0.35.0-42-gb2da2b42(2026-09-15/16,落后 105 个提交已全部拉入) |
前端包 comfyui-frontend-package | 1.51.9 | 1.52.7 |
| T8 节点包 | custom_nodes/ComfyUI-MinimaxH3AudioT8(非 git 安装,版本落后 main;缺 96 个节点类) | custom_nodes/minimax-h3-audio-T8(git clone main @ 1464a9f,2026-09-15) |
| 已注册节点类 | 3361 | 3500(+139) |
| 节点导入失败 | — | 0 个 |
| 队列/任务 | 升级前队列为空(未打断任何任务) | — |
comfy/ops.py 有一处本机专用修改,是 2026-09-09 为解决 Qwen3-VL 文本编码(GQA + attention_mask)在 RTX 5060 Ti 上报 cuDNN "No valid execution plans built" 而加的。
2026-09-15 已在本机逐条复现验证(详见
2026-09-09-TextGenerate-cuDNN-NoValidExecutionPlans修复.md的「2026-09-15 复盘」一节):
- 关键条件是
sdpa_kernel(优先级, **set_priority=True**)—— 上游 ComfyUI 就是这么调的; 不带set_priority时 cuDNN 的失败会被容忍并落到 MATH,所以必须带这个参数才能复现;- 触发条件三段缺一不可:GQA+mask 下 flash/efficient 都无内核(实测 False/False)+
can_use_cudnn_attention谎报 True → 上游的 GQA 保护据此跳过手工展开 KV 头 → cuDNN 建图失败直接抛异常;- 去掉 CUDNN 后同一调用 ✅ 成功(FLASH 失败 → EFFICIENT 失败 → MATH 兜底);
TORCH_CUDNN_SDPA_ENABLED=0在 torch 2.11 上无效,没有免改代码的等价开关。
No valid execution plans built ← cuDNN frontend 直接报错,而不是回退到 MATH
修改内容:从 SDPA_BACKEND_PRIORITY 里移除 CUDNN_ATTENTION,并额外 torch.backends.cuda.enable_cudnn_sdp(False)。
升级后新版 comfy/ops.py 仍然把 CUDNN_ATTENTION 排在 FLASH_ATTENTION 之后第一位 —— 也就是上游没修,所以补丁已用 git apply 原样装回(Hunk #1 succeeded at 68 (offset 1 line),干净应用)。
/home/zyw/comfyui-update-20260915/ops-py-cudnnfix.patchgit pull ComfyUI 后都要重新 git apply 这个补丁(否则 Qwen3-VL 文本编码可能崩)cd /home/zyw/ComfyUI
# 1) 核心回滚到升级前提交
git reset --hard ec803fc97ee3e5a923a90753ab3620d431109f85
# 2) 前端回滚
venv/bin/pip install comfyui-frontend-package==1.51.9
# 3) T8 节点包回滚(旧包已移出 custom_nodes,避免两个包同时注册同一个节点类)
mv custom_nodes/minimax-h3-audio-T8 /home/zyw/h3-t8/_bak/minimax-h3-audio-T8-new-20260915
mv /home/zyw/h3-t8/_bak/ComfyUI-MinimaxH3AudioT8-20260915 custom_nodes/ComfyUI-MinimaxH3AudioT8
# 4) 重启
bash /home/zyw/restart_comfy.sh
留档文件(/home/zyw/comfyui-update-20260915/):
HEAD-before.txt(升级前提交 ec803fc97ee3e5a923a90753ab3620d431109f85)ops-py-cudnnfix.patch(本地补丁,19 行)pip-freeze-before.txt(升级前 308 个包)⚠️ 注意:旧 T8 包是移动到 ~/h3-t8/_bak/ 而不是留在 custom_nodes 里改名—— 因为 ComfyUI 会扫描 custom_nodes 下所有带 __init__.py 的目录,两份同名节点包会重复注册、互相冲突。
/home/zyw/ComfyUI/user/default/workflows/T8-H3精选/(16 个工作流 + 14 份 README,468 KB):
| 模式 | 文件 |
|---|---|
| 01-basic-generation | 2026-08-06_H3_Turbo_EXP_4V10A.json |
| 02-audio-control | 2026-08-13_H3_Scheduled_Audio_Injection_Advanced_EXP.json |
| 03-image-video-edit | 2026-08-28_H3_CADS_Visual_Reference_Annealing_Advanced_EXP.json |
| 04-long-video | 2026-08-28_H3_FreeNoise_Prompt_Relay_EAV_Long_Video_Advanced_EXP.json |
| 05-speech-dialogue | 2026-08-22_H3_Audio_Integrity_Audit_Advanced.json |
| 08-multi-keyframe | 2026-08-09_H3_MultiKeyframe_Advanced_EXP.json |
| 10-speed | 2026-08-19_H3_SPEED_FL2VA_Remix_Stock20_Advanced_EXP.json |
| 12-system-memory | 2026-08-13_H3_Activation_Chunk_Advanced.json |
| 13-latent-upscale | 2026-08-21_H3_Learned_Latent_TwoPass_Hybrid_Lock_Source_Advanced_EXP.json |
| 14-prompt-relay | 2026-08-23_H3_Prompt_Provider_Router_Advanced_EXP.json |
| 18-audio-refine | 2026-08-29_H3_Audio_Refine_EAV_Turbo8_Advanced_EXP.json |
| 24-mv-lipsync | VocalLock_V3_Official_Ref2V_Turbo4(推荐)、VocalLock_V2_8Step、LipSync_Ref2VA_Turbo4(旧兼容路线,作者说不能作为口型验收) |
| 28-progressive-sampling | 2026-09-09_H3_Progressive_I2VA_6plus2_EXP.json |
| 33-selflift-taomate | 2026-09-14_H3_SelfLift_I2VA_Core_Sage_4plus4_EXP.json |
验证结果:升级后 16/16 全部可干净打开(升级前有 3 个缺节点)。
native MiniMax H3 tokenizer lacks the byte-token contract),至今 open、作者 0 回复。 你现在正好是 0.35.0-42 → MiniMax H3 Prompt Relay Conditioning 节点运行时可能报这个错。 规避:暂时别用该节点(14-prompt-relay 那个工作流其余部分可用),或等 T8 修复。efd4e951a、2504e68d4、 e308cc73b(Sol-Attn/SLA/VSA 合并为原生 Block Sparse Attention)、804eb5513; 本次升级后 0 节点导入失败,但新功能(outpaint/DLSS/VDN 等)只做过注册检查,没跑过真实生成。MiniMaxH3BlockCacheT8 → 来自另一个仓库 comfyui-minimax-h3-blockcache-T8,未安装 (已克隆在 ~/h3-t8/,要装再说;它默认 cache_device=cpu、音视频分别判稳)blockcache 独立包(+它要求 ComfyUI ≥0.30.0,你已满足)MiniMaxH3Cache 做基准TypeError: unsupported operand type(s) for //: 'str' and 'int'现象(2026-09-16 04:54):Director rv2v 任务一提交就失败,25–33 秒即报错:
File "comfy_extras/nodes_minimax_h3.py", line 86, in _empty_av_latent
video = torch.zeros([batch_size, 24, latent_t, height // 16, width // 16], ...)
TypeError: unsupported operand type(s) for //: 'str' and 'int'
根因:ComfyUI 0.35 把 H3 核心节点迁移到新的 V3 io.ComfyNode schema API,参数顺序变了
| 参数顺序 | |
|---|---|
| 0.34(旧) | (clip, vae, audio_vae, prompt, width, height, length, ref_image_size, …) |
| 0.35(新) | (clip, prompt, width, height, length, ref_image_size, vae=None, audio_vae=None, …) ← vae / audio_vae 挪到后面 |
旧 Director(b8f721c)用位置参数调用 → 错位后 height 收到的是 prompt 字符串 → height // 16 抛 TypeError。
修复:把 Director 更新到上游 5a8e380(2026-09-16) —— 上游已经修过并留了注释:
# Keyword args: official execute() moved vae/audio_vae after
# ref_image_size. Positional calls send prompt into height
# (`TypeError: ... for //: 'str' and 'int'` in _empty_av_latent).
out = MiniMaxH3ReferenceToVideo.execute(clip=clip, prompt=prompt, width=width,
height=height, length=length, ref_image_size=ref_image_size,
vae=vae, audio_vae=audio_vae, ref_images=..., ref_videos=...,
ref_video_audios=..., ref_audios=...)
cd ~/ComfyUI/custom_nodes/ComfyUI_MiniMaxH3_Director && git pull --ff-only origin mainb8f721c → 5a8e380/home/zyw/comfyui-update-20260915/conditioning.py.before-director-update;回滚 git reset --hard b8f721cMiniMaxH3Director 已注册同类风险排查:全 custom_nodes 里对核心 H3 节点 *.execute( 的调用只有两处——Director(已修)与 CRT-Nodes/py/MiniMaxH3_Unified_Sampler.py(用的是关键字参数,不受影响 ✅)。
顺带获得的上游改进(落后 20+ 提交):一采缓存识别外接组、二采前清理显存(默认关)、 段间引导低频对齐改 GPU 批量计算(1080p 段 427s → 0.37s)、SigmaShift clone 复用避免显存泄漏警告、 r2v 参考图最长边 1024/1280/1536 选项、自定义帧率同步修复(正好解释日志里那个怪异的 1001 frames @ 60.00 fps)、Linux 分段导出不再写空目录。
教训(写进升级流程):ComfyUI 大版本升级后,第一件事是拿一个真实工作流跑冒烟测试—— 像本节的参数错位,光看"0 个节点导入失败"是发现不了的(节点能注册,但运行时签名不兼容)。