minimax-h3新扩展ComfyUI-SelfLift:原理、节点与工作流指南
- 一、项目解决什么问题
- 二、论文与本项目的对应关系
- 三、SelfLift-zero 的完整采样过程
- 四、TST 的实现原理
- 5. 插件实际提供的节点
- 六、节点一:SelfLift Progressive Sampler (Image)
- 七、节点二:SelfLift Progressive Sampler (MiniMax H3)
- 八、节点三:H3 Temporal State Transport (TST)
- 九、三组建议对照实验
- 十、参数关系与常见误区
- transition_step 越大越好吗?
- rho 越大越好吗?
- 外部 H3 upscaler 是否就是 SelfLift-rich?
- 可以使用 DPM++ 等采样器吗?
- 可以给低分辨率和高分辨率阶段用不同模型吗?
- noise_mask 怎样工作?
- 十一、日志与诊断
- 十二、如何评价这个项目

本文面向希望理解该插件“为什么有效、代码如何落地、节点怎样连接”的 ComfyUI 用户。项目同时包含两条技术路线:基于 SelfLift 论文的渐进分辨率采样,以及基于 TST 论文、面向 MiniMax H3 的时间一致性校正。两者相互独立,也可以在兼容条件下组合使用。
一、项目解决什么问题
少步扩散或 Rectified Flow 模型将原本几十步的生成过程压缩到 4~8 步后,每一次模型前向的空间计算成本变得格外突出。若输出宽高都缩小为原来的一半,latent 的空间位置数量约降至四分之一,因此早期步骤用低分辨率运行可以明显节省计算。
最简单的渐进分辨率方案是:
- 前几步在低分辨率 latent 上去噪;
- 把中间 latent 插值到目标分辨率;
- 剩余步骤在高分辨率运行。
问题在于,直接插值得到的高分辨率 latent 不一定仍处于模型熟悉的数据分布中。普通多步模型尚可依靠很多后续步骤慢慢修复;少步模型只剩一两次前向时,插值误差往往直接表现为结构破坏、块状纹理或局部伪影。
SelfLift 的重点不是“如何插值”,而是如何在分辨率切换时识别并修复最危险的位置,使切换可以推迟到采样后段,从而让更多昂贵步骤在低分辨率完成。
二、论文与本项目的对应关系
2.1 SelfLift
论文:SelfLift: Accelerating Few-Step Diffusion via Self-Recovering Resolution Transition
链接:点击这里
论文包含两种模式:
- SelfLift-zero:免训练,利用直接 latent 提升与 VAE 像素路径之间的差异进行选择性修复;本插件实现了这一部分。
- SelfLift-rich:训练一个蒸馏 lifter,并使用 On-Policy Self Recovery;本插件没有实现。
论文主要针对 Rectified Flow 图像模型验证。项目中的 SelfLift Progressive Sampler (Image) 与论文对应最直接;MiniMax H3 音视频适配属于项目的实验性扩展,不能把它的效果等同于论文结论。
2.2 Temporal State Transport(TST)
论文:Temporal State Transport in Video Generation: Diagnosing and Correcting Spectral Imbalance
链接:点击这里
TST 从注意力中的时间状态传输角度诊断视频不稳定,并在推理时调节异常注意力头。本项目把它适配到 MiniMax H3 的单流 packed attention,形成 H3 Temporal State Transport (TST) 模型补丁节点。
三、SelfLift-zero 的完整采样过程
假设原调度包含 N 次模型评估,transition_step=k。
目标分辨率初始 latent │ 空间缩小 ▼ 低分辨率 latent ── 前 k 次 Euler/模型评估 ──► 低分辨率干净端点预测 x₀ │ ┌───────────────────────────────┴──────────────────────────────┐ ▼ ▼ 直接 latent 提升 z_lat 像素/VAE 锚点 z_pix nearest / bilinear / 外部 lifter VAE 解码→图像放大→VAE 编码 └───────────────────────────────┬──────────────────────────────┘ ▼ 伪影风险检测与选择性校正 ▼ 高分辨率干净端点 z₀_high │ 在切换 sigma 重新加噪 ▼ 完成切换区间并继续剩余高分辨率 Euler 步 ▼ 最终 latent
3.1 低分辨率前缀
项目先按照 lowres_scale 缩小目标 latent 的空间维。视频只缩放空间维,不改变时间维;H3 的音频 latent 不具备空间维,因此不参与分辨率缩放。
低分辨率阶段调用 ComfyUI 原生采样接口,但只传入调度前缀:
sigmas[:transition_step + 1]
插件在第 k 次回调中保存当前状态和模型给出的干净端点预测。该次模型评估已经完成,因此其结果可以在分辨率转换后继续利用。
3.2 为什么提升干净端点,而不是直接提升带噪状态
带噪状态同时混有信号和噪声。直接对它插值,会把噪声统计、空间频率和语义结构一起改变,难以判断误差来源。
SelfLift 先取得模型预测的干净端点 x₀,在接近数据流形的对象上完成分辨率提升和修复,再依据当前 sigma 重新构造带噪轨迹。这样更容易保持 Rectified Flow 的轨迹一致性。
3.3 两条提升路径
selflift.py 中的 paired_lifts() 构造两个候选结果。
路径 A:直接 latent 提升
低分辨率 x₀ → nearest/bilinear latent 插值 → z_lat
优点是快、没有 VAE 往返;缺点是 latent 通道不一定具有普通图像那样的局部插值性质,容易产生分布偏移。
在 H3 模式下,也可以用外部 3D latent upscaler 替代普通插值。该外部模型包含 3D 卷积、残差块、时间卷积及可选注意力,并对长视频进行带重叠的时间分块。它是第三方 H3 latent upscaler,不是 SelfLift-rich 的论文模型。
路径 B:像素/VAE 锚点
低分辨率 x₀ → VAE decode → 像素空间高质量放大 → VAE encode → z_pix
像素图像具有明确的空间结构,Lanczos 或 bicubic 放大通常比直接插值 latent 稳定;重新编码后得到较可靠的高分辨率 latent 参照。但 VAE 往返会增加时间和显存/内存开销,并可能使细节偏平滑。
图像路径使用 Lanczos;视频路径逐批处理帧并使用带抗锯齿的 bicubic,以避免一次性物化整段高分辨率视频造成巨大内存占用。
3.4 伪影风险得分
两条路径的差值为:
对通道维取绝对值均值,得到每个图像位置或时空位置的风险分数:
直觉是:若直接提升和像素锚点在某处高度一致,则该位置风险较低;若两者差异很大,则直接提升可能已经偏离合理 latent 分布。
3.5 Top-ρ 选择性校正
项目按每个 batch 样本计算分位数,只选择风险最高的 rho 比例位置。选中位置的权重由风险在选区中的相对大小线性映射到 [w_min,w_max]:
最终结果为:
未选中的位置权重为 0,保持直接提升结果。因此它不是把整张 latent 强制替换成 VAE 重编码结果,而是只在高风险区域向锚点移动。
三个边界情况有助于理解参数:
rho=0:完全使用直接提升,不构造像素锚点;rho=1, w_min=w_max=1:完全使用像素/VAE 锚点;0<rho<1:SelfLift-zero 的选择性修复方式。
使用 noise_mask 时,风险统计和修复都限制在生成区域,保留区域会恢复为原始 latent。
3.6 重新加噪与 NFE 守恒
得到高分辨率干净端点后,项目在切换时刻 sigma_k 重新加噪,并用已经获得的 x₀ 完成该 Euler 区间,然后从 sigmas[transition_step:] 继续高分辨率采样。
关键点是:切换时没有额外调用一次去噪模型。原本 N 步仍然是 N 次 NFE:
额外成本主要来自 rho>0 时的一次 VAE decode、像素放大和 VAE encode。只要低分辨率阶段节省的模型前向时间大于这次 VAE 往返,整体就能加速。
四、TST 的实现原理
4.1 H3 上如何构造帧级注意力
H3 没有独立的 temporal-attention 模块,而是将文本、音频、视频 token 打包到单流注意力中。项目通过 ComfyUI 的 optimized_attention_override 注入校正:
- 根据当前视频 latent 推断帧数和每帧 token 行数;
- 将 packed sequence 末尾的视频 token 定位出来;
- 对每一帧的 post-RoPE query/key 做空间平均;
- 为每个注意力头构造 F×F 的帧级传输矩阵。
这里A[i,j]可理解为第 i 帧向第 j 帧传输状态的强度。
4.2 谱张力
项目计算两种归一化熵:
- 行熵 H_row:描述每一帧向其他帧传输时有多分散;
- von Neumann 熵 H_vN:由 AAᵀ 的归一化特征值计算,描述全局传输模式的谱多样性。
谱张力定义为:
代码据其符号区分两种失衡:
- T>0:局部传输过于弥散,相对表现为过度混合;
- T<0:全局传输较碎片化,各帧难以维持一致状态。
4.3 稳态校正
每个注意力头得到一个 query 温度系数:
其中:
w_layer 和 w_step 使用余弦调度,使更深层、采样更早阶段的校正更强。插件只缩放视频行的 query,不改文本和音频 token,也不会加载额外生成模型。
tau=0 时不做校正,但仍可保留诊断日志。默认 tau=0.2 是稳妥起点;过大可能把注意力推向另一个失衡区间。
5. 插件实际提供的节点
项目注册了三个节点:
- SelfLift Progressive Sampler (Image)
- SelfLift Progressive Sampler (MiniMax H3)
- H3 Temporal State Transport (TST)
外部 H3 upscaler、高分辨率 tiling 和 latent diagnostics 都是采样节点内部能力,不是独立节点。
六、节点一:SelfLift Progressive Sampler (Image)
6.1 用途与前提
用于兼容的 Rectified Flow 图像模型,执行论文式 SelfLift-zero 渐进分辨率采样。
必须满足:
- 输入是 4D 图像 latent;
- 模型使用 ComfyUI 可识别的 Rectified Flow/CONST sampling;
- sampler 必须来自 KSamplerSelect 的标准 euler;
- s_churn=0;
- VAE 必须与采样模型的 latent 格式匹配。
6.2 输入说明
| 输入 | 作用 | 建议 |
|---|---|---|
| model | 低分辨率阶段使用的模型 | 接模型加载器输出 |
| positive / negative | 正负条件 | 与普通采样工作流相同 |
| vae | 构造像素锚点 | 必须属于当前模型 |
| latent_image | 定义目标尺寸、batch 和可选初始内容 | 可接 Empty Latent Image |
| sampler | 采样算法 | 必须选标准 Euler |
| sigmas | 完整噪声调度 | 使用模型正常 scheduler 输出 |
| seed | 随机种子 | 对照测试时固定 |
| cfg | CFG 强度 | 沿用模型推荐值 |
| transition_step | 低分辨率 NFE 数 | 4 步模型可从 3 开始;8 步模型可从 6 开始 |
| lowres_scale | 低分辨率空间比例 | 默认 0.5 |
| rho | 被修复位置比例 | 默认 0.3;部分模型可尝试 0.4 |
| w_min / w_max | 修复权重范围 | 默认 0.5 / 1.0 |
| latent_upsample | 直接 latent 插值方式 | 论文式设置用 nearest |
| model_hires | 可选的高分辨率阶段模型 | 仅接同架构、同 latent 格式模型 |
transition_step必须小于总步数;而且高分辨率起始 sigma 必须小于 1。它表示低分辨率模型评估次数,不是 sigma 数组下标的随意切点。
6.3 简单图像工作流
Checkpoint/模型加载器 ── MODEL ───────────────────────────────┐ ├─ CLIP → 正/负文本编码 ────────────────┤ └─ VAE ──────────────────────────────────┤ Empty Latent Image ───────────────────────────────────────────┤ KSamplerSelect(euler) ────────────────────────────────────────┤ 模型对应 Scheduler/Sigmas ────────────────────────────────────┤ ▼ SelfLift Progressive Sampler (Image) │ LATENT ▼ VAE Decode │ ▼ Save/Preview Image
推荐首轮参数:
lowres_scale = 0.5 transition_step= 总 NFE 的约 3/4 rho = 0.3 w_min/w_max = 0.5 / 1.0 latent_upsample= nearest
调参顺序建议:先固定 seed,与同调度的普通全分辨率 Euler 基线对比;若出现局部伪影,先提高 rho,再考虑提前 transition;若整体偏平滑,降低 rho 或 w_min。
七、节点二:SelfLift Progressive Sampler (MiniMax H3)
7.1 用途与性质
该节点把渐进分辨率思想扩展到 MiniMax H3 音视频 nested latent。它保持完整时间长度和音频流,只降低视频 latent 的空间尺寸。该适配不是 SelfLift 论文已经验证的结论,应视为实验性方案。
7.2 两种主要用法
A. 外部学习式 H3 lifter
- 下载:点击这里
- 放入:ComfyUI/models/latent_upscale_models/
- 重启 ComfyUI;
- 在 upscaler_model 选择对应文件;
- 设置 rho=0。
此时路径为:低分辨率干净端点 → 外部学习式 latent upscaler → 高分辨率续采样。它通常比 nearest 更实用,但不是论文的 SelfLift-zero。
B. H3 SelfLift-zero 实验
- upscaler_model=none;
- rho>0;
- 建议从 rho=0.6, w_min=1, w_max=1 起步。
这里直接路径是 nearest latent 提升,像素路径是 H3 VAE decode/upscale/encode。项目已有单 seed 试验显示,H3 的 nearest 误差可能比论文图像模型更广,因此论文的 rho=0.3 可能不足。
节点会拒绝upscaler_model=none且rho=0,因为这会同时关闭外部提升和 SelfLift-zero 修复,只剩已知风险较高的 nearest 路径。
7.3 H3 专有参数
| 输入 | 说明 |
|---|---|
| upscaler_model | 外部 H3 latent upscaler;none 表示普通 nearest 直接路径 |
| highres_tiling | 仅将高分辨率模型阶段沿较长空间轴分块,自动尝试 1~8 块 |
| latent_diagnostics | 输出 transition 前后 latent 的 RMS 和空间梯度诊断 JSON |
其余输入与图像节点含义基本一致,但 latent_image 必须是 H3 的视频+音频 nested latent,highres_tiling设置为真时可以在低显存下提升视频的分辨率,但对画面质量有些许影响,分辨率提高也意味着需要更长的生成时间。
7.4 简单 H3 工作流
MiniMax H3 模型加载/模型补丁链 ── MODEL ─────────────────────┐ H3 正负条件、首尾帧或参考条件 ───────────────────────────────┤ H3 VAE ──────────────────────────────────────────────────────┤ H3 目标尺寸与时长 latent ────────────────────────────────────┤ KSamplerSelect(euler) ───────────────────────────────────────┤ H3 正常 Scheduler/Sigmas ────────────────────────────────────┤ ▼ SelfLift Progressive Sampler (MiniMax H3) │ nested LATENT ▼ H3 音视频解码/合成节点 │ ▼ 保存最终视频
外部 lifter 的起始设置:
upscaler_model = 已安装的 H3 upscaler rho = 0 lowres_scale = 0.5 transition_step= 先从总 NFE 的约 3/4 开始 highres_tiling = off
H3 SelfLift-zero 的起始设置:
upscaler_model = none rho = 0.6 w_min/w_max = 1.0 / 1.0 lowres_scale = 0.5 highres_tiling = off
7.5 highres_tiling 的作用与代价
开启后,项目依据可用显存估算 1~8 个空间块,沿视频 latent 较长的 H/W 轴切分。相邻块带重叠并进行加权拼接,完整输出缓存置于 CPU,降低同时驻留在 GPU 的高分辨率状态。
限制:
- 块间没有完整的全局注意力,画质和运动可能变化;
- 只保留第一块的音频预测;
- 不支持 ControlNet;
- 不支持 noise_mask;
- 与本项目的 H3 TST 不兼容。
因此它是显存不足时的兜底策略,而不是默认画质增强选项。
八、节点三:H3 Temporal State Transport (TST)
8.1 节点类型
这是 MODEL → MODEL 补丁节点,不是采样器。它修改 H3 模型的注意力调用,因此可以接在普通采样器或 SelfLift H3 采样器之前。
8.2 参数
| 参数 | 说明 | 建议 |
|---|---|---|
| model | MiniMax H3 模型 | 接 H3 模型或此前的兼容补丁输出 |
| tau | 稳态校正强度 | 默认 0.2;先不要超过 0.5 |
| log_diagnostics | 每次前向记录谱张力等统计 | 调试时开启,正式批量运行可关闭 |
非 H3 或无法识别的视频注意力调用会被跳过。tau=0 可用于只观察诊断、不改变结果。
8.3 简单 TST 工作流
MiniMax H3 MODEL │ ▼ H3 Temporal State Transport (TST) tau=0.2, diagnostics=on │ patched MODEL ▼ 普通 H3 Sampler / KSampler / 兼容采样节点 │ ▼ H3 解码与保存
它主要针对帧间闪烁、纹理或文字形态漂移、人物身份和服装细节不稳定等问题,但不能创造底模本身没有学会的内容。
8.4 TST 与 SelfLift 组合工作流
MiniMax H3 MODEL │ ▼ H3 Temporal State Transport (TST) │ patched MODEL ▼ SelfLift Progressive Sampler (MiniMax H3) │ ▼ H3 解码与保存
组合时必须关闭highres_tiling。原因不是理论冲突,而是当前 H3 packed sequence 的定位方式:TST 的外层 wrapper 看到完整视频尺寸,而 tile 内注意力只看到局部序列,长度保护会使 TST 跳过,以避免误改错误 token。
九、三组建议对照实验
9.1 图像模型:确认加速是否值得
固定 prompt、seed、CFG、总步数和调度,比较:
- 原生全分辨率 Euler;
- SelfLift,scale=0.5, rho=0.3;
- SelfLift,稍早 transition 或更高 rho。
同时记录总时间和画质,不要只比较单步耗时。若 VAE 较慢或目标分辨率较低,SelfLift 的额外 VAE 往返可能抵消节省。
9.2 H3:区分提升路径问题
固定所有随机条件,依次测试:
| 组别 | upscaler | rho | 权重 | 目的 |
|---|---|---|---|---|
| 纯像素锚点 | none | 1 | 1 / 1 | 判断 VAE 路径是否干净 |
| 论文式参数 | none | 0.3 | 0.5 / 1 | 观察图像参数能否迁移 |
| 强 H3 修复 | none | 0.6 | 1 / 1 | 判断扩大修复区域是否有效 |
| 外部 lifter | H3 checkpoint | 0 | 任意 | 评估学习式提升效果 |
节点不允许在界面正常执行 none + rho=0,因为那会关闭所有可靠修复;若要研究 nearest 直接路径,应使用项目测试/诊断方式,而不是作为生产配置。
9.3 TST:确认校正而非偶然变化
固定 seed,比较:
- 不接 TST;
- 接 TST 且 tau=0,确认补丁本身不改变结果;
- tau=0.2;
- 只有确有需要时再小幅提高。
关注连续帧中的身份、文字、细纹理与运动连贯性,而不是只挑单帧比较。
十、参数关系与常见误区
transition_step 越大越好吗?
越大意味着更多步骤在低分辨率运行,通常更快,但留给高分辨率恢复细节的步骤更少。它是速度与细节恢复预算之间的核心旋钮。
rho 越大越好吗?
不是。增大 rho 会让更多位置向 VAE 锚点靠近,通常能压制伪影,但也可能损失直接 latent 路径中的锐利细节。应在固定 seed 下从默认值逐步增加。
外部 H3 upscaler 是否就是 SelfLift-rich?
不是。外部 upscaler 是独立发布的 H3 latent 提升模型;SelfLift-rich 涉及论文特定的蒸馏和 On-Policy Self Recovery 训练流程,本项目未包含。
可以使用 DPM++ 等采样器吗?
不可以。实现依赖标准、无 churn 的 Euler 边界更新,并明确验证 sampler 类型。替换采样器会破坏当前的 NFE 复用和轨迹重建假设。
可以给低分辨率和高分辨率阶段用不同模型吗?
可以通过 model_hires 输入实现,但两个模型必须同架构、同 latent 格式。该功能适合切换 checkpoint 或 LoRA 组合,效果需要自行验证。
noise_mask 怎样工作?
语义与 ComfyUI Set Latent Noise Mask 相同:1 为生成区域,0 为保留区域。项目在每步 post-CFG 后把保留区域的 x₀ 固定到原始 latent,并把 SelfLift 风险统计和校正限制在生成区域。只有空 latent 时,即使 mask 指定“保留”,也没有实际图像内容可保留。
十一、日志与诊断
常用日志:
[SelfLift plan]:低/高分辨率形状、NFE 分配、切换 sigma、启用的提升路径;[SelfLift timing]:低分辨率、转换和高分辨率阶段耗时;[SelfLift upscaler]:外部提升器推理信息;[SelfLift tiling memory]:分块显存估算;[H3 TST]:校正前后平均谱张力、平均 gamma、活跃注意力头比例与耗时。
环境变量:
SELFLIFT_TIMING_SYNC=1 CUDA 同步计时,较准确但更慢 SELFLIFT_MEMORY_LOG=1 记录阶段边界内存状态 SELFLIFT_DEBUG=1 解码并保存转换中间图,慢且耗内存 SELFLIFT_TST_EXACT=1 用精确算子校准 TST 原型,仅调试 SELFLIFT_LATENT_DIAGNOSTICS=1 全局开启 latent 诊断
十二、如何评价这个项目
从实现结构看,它不是简单地把 latent 缩小再放大,而是较完整地处理了渐进分辨率采样中的几个关键工程问题:
- 在干净端点上切换分辨率;
- 通过配对提升构造模型自身的风险信号;
- 只修复高风险位置;
- 重新加噪并复用切换边界的模型评估,保持 NFE 不变;
- 为 H3 分离视频与音频流,并为长视频 VAE/upscaler 做时间分块;
- 通过 ComfyUI patcher 在不改底模权重的前提下注入 TST;
- 对 mask、调度、采样器和不兼容功能设置明确保护。
需要谨慎区分证据强度:图像节点最接近 SelfLift 论文的验证范围;H3 SelfLift、H3 高分辨率 tiling 和 H3 TST 移植都包含项目自身的实验性适配。实际生产使用时应建立固定 seed 的原生基线,从速度、伪影、细节和时间一致性四个维度分别验证。
文章来源:mickeylan
以上关于minimax-h3新扩展ComfyUI-SelfLift:原理、节点与工作流指南的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » minimax-h3新扩展ComfyUI-SelfLift:原理、节点与工作流指南
微信
支付宝