H3Kit SelfLift K采样器
H3 SelfLift, explained
- model
- positive
- negative
- latent_image
- previous_latent
- sigmas
- context_vae
- previous_frames
- sampled_latent
If you're running H3 with an acceleration LoRA, you're sampling in single-digit steps. Do they all need to happen at delivery resolution? H3Kit SelfLift K采样器 says no: spend most of the budget at reduced resolution, lift the latent with a trained upscaler, then finish the last couple of steps at full size - the video version of stills' two-pass hi-res fix.
The node does that in one box, and it can chain segments while doing it - the sampled_latent it returns carries both the low-res and high-res state, which is what the next segment inherits.
The two stages, concretely
Around it sits the usual sampler plumbing: model (with any acceleration LoRA applied), positive, negative, latent_image, seed and cfg - 1 on an accelerated setup, whatever your model wants otherwise.
steps is the total; high_resolution_steps (default 2) is how many run at full res, the rest run at lowres_scale (default 0.5). So steps = 8 with 2 high-res steps means six at half size, a latent upscale, then two at delivery size. And the README's warning is worth repeating: 8 steps only makes sense with an accelerated model or LoRA. On a normal model, use that model's step count.
sampler_name is a one-item list - euler, and only euler. Not an oversight: the handoff between stages uses the Euler update formula, so anything else would need its own bridging code. scheduler has the usual nine options, and an external sigmas overrides steps, scheduler and denoise wholesale - high_resolution_steps still applies. denoise = 0 returns your input untouched and writes no continuation record, so nothing downstream can trim it.
upscale_weights is the same H3 latent upscaler the pack's standalone 3D upscale node uses, loaded from ComfyUI/models/latent_upscale_models/.
Chaining segments
latent_image is this segment's target full-resolution audio+video latent - don't pre-shrink it; its length is the new frame count. previous_latent takes the previous SelfLift sampler's sampled_latent directly. That's the entire continuation handshake, and it's why a plain KSampler output can't stand in: no two-resolution state to inherit.
overlap_frames (default 17) is the extra head context the node reserves. It must be a multiple of 17, because 17 frames is 5 latent time steps on H3's grid - 17, 34, 51 and so on. That context does not eat into your new frames: it's added at the head and taken off at the join, so you deliver what you asked for, modulo H3's own length alignment. Every segment follows the same rule, with no speculative "future" frames generated.
Keep lowres_scale and the target resolution identical across segments, and don't split or re-merge latents mid-chain - you'll break the state the next segment needs.
The optional inputs worth knowing
context_vae earns its keep on hard joins. Connect the H3 video VAE and the pack uses the previous segment's final picture as one source of truth: full size for the high-res cross-check, downscaled for the low-res spatial context, so the inherited region is calibrated rather than copied. Leave it unconnected and it reuses the native latent tail. Pair it with previous_frames and you save a decode. The author is candid, though: the correction is judged on local error, and he notes it hasn't been verified to keep backgrounds, faces and colour consistent. Use it, don't trust it.
continue_audio (default on) smooth-releases the previous segment's tail - the last few audio tokens - so the join has something to cross-fade into rather than a hard butt splice. Locked input audio tracks take priority over the transition.
spatial_tiles with minimum_tiles (default 4, up to 8) tiles only the high-res sampling stage to fit it in VRAM. It doesn't touch the latent upscale or the decode, audio takes the first tile's prediction, and ControlNet isn't supported on that path.
What comes out, and where it goes
One output: sampled_latent. Decode the full segment with it (no pre-trimming), then hand both the latent and the decode to H3Kit SelfLift 续接音画拼接, which cuts the duplicate prefix, aligns the audio at 24fps, and accumulates the take. The latent also continues to the next segment's previous_latent.
Install
Manager → search ComfyUI-H3-upgrade-kit → restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/flywhale-666/ComfyUI-H3-upgrade-kit.git
requirements.txt is empty and the pack declares no dependencies, so there's nothing to pip install. You do need a ComfyUI recent enough to support MiniMax H3, and the upscaler weights in place:
ComfyUI/models/latent_upscale_models/
If that folder is empty, upscale_weights shows a placeholder entry and selecting it errors out. The H3 checkpoint, text encoder, audio/video VAEs and acceleration LoRA are yours to supply.
Fine print
The pack says the quiet part itself: continuous joins aren't guaranteed - textures and background objects can still shift at a seam. What SelfLift reliably gives you is a cheaper high-resolution pass and a boundary that lands on the model's temporal grid with the audio trimmed to match.
Inputs (21)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| latent_image | LATENT | 本段目标高清 H3 音视频 latent;长度代表本段新增帧数。续接时只在头部增加17帧的整数倍上下文,拼接后保留原定新增长度,不补视频尾帧。 | |
| seed | INT | 00–18446744073709550000 | — |
| steps | INT | 82–10000 | — |
| cfg | FLOAT | 1.00–100 | — |
| sampler_name | COMBO | euler | 当前 SelfLift 交接使用 Euler 更新公式,只支持标准 euler;其他算法需要单独适配交接与历史状态。 |
| scheduler | COMBO | simple | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 |
| denoise | FLOAT | 1.000–1 | 降噪强度,仅在未连接外部 sigmas 时生效。低于 1 时保留更多输入 latent 内容;0 时直接返回输入,不执行二采或续接。 |
| high_resolution_steps | INT | 21–9999 | 总步数中的高清部分。8 步、高清 2 步表示低清 6 步+高清 2 步;固定使用 Euler。 |
| lowres_scale | FLOAT | 0.500.25–1 | 低清宽高比例。前后段须使用相同设置;整段仍使用latent放大,接context_vae时仅把实际尾部画面缩小后编码为低清上下文。 |
| upscale_weights | COMBO | 1 options: (place models in: /tmp/ComfyUI/models/latent_upscale_models) | |
| overlap_frames | INT | 1717–3587 | 额外增加的头部上下文:17、34、51……帧,对应前段尾部的5、10、15……个latent时间步;不占用本段新增帧数。 |
| continue_audio | BOOLEAN | true | 续接前段尾音,最后 8 个音频 token 平滑释放。已锁定的输入音轨优先。 |
| previous_latentopt | LATENT | 直接接前一个 H3Kit SelfLift K采的 sampled_latent;同时携带低清和高清状态。 | |
| sigmasopt | SIGMAS | 可选外部调度;连接后取代 steps/scheduler/denoise,总步数和降噪强度由外部调度决定。 | |
| spatial_tilesopt | BOOLEAN | false | 仅对 SelfLift 高清采样阶段沿长边重叠分块,支持视频/音频遮罩及固定上下文续接。不影响 latent 放大或 VAE 解码。 |
| minimum_tilesopt | INT | 42–8 | 高清采样的最少分块数,按显存预算增加到最多 8 块;小画面受网格限制可能更少。音频取第一块预测,不支持 ControlNet。 |
| context_vaeopt | VAE | 连接H3视频VAE,以前段最终高清画面作为统一来源:原尺寸编码高清上下文,缩小画面后编码低清上下文,供锁定前缀和连续运动引导使用。不连接则沿用原生latent尾部;只处理上下文,不做整段像素校正。 | |
| previous_framesopt | IMAGE | 可选:前段实际解码画面,配合context_vae避免再次解码高清前段;不连接则自动解码。 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| sampled_latent | LATENT | — |