LTX2 Experimental Keyframe Sampler ⚠️
The keyframe sampler LTX-2's own author warns you not to use
- model
- latent_video
- positive
- negative
- LATENT
This is the rare node whose own documentation tells you not to expect much. LTX2ExperimentalKeyframeSampler is the "fine, you asked for it" version of the efficient sampler: it genuinely samples only keyframes (every Nth frame), interpolates the rest, and lets you crank the aggressiveness - while the node description and the module docstring both warn that frame striding breaks temporal coherence for LTX and "may produce distorted output." The pack's other sampler keeps frame_stride=1 in every preset for exactly this reason. So why does this node exist? Mostly for experiments, and for future models that don't use full temporal attention.
How it works
Mechanically it's a sampler with all the inputs of the main one - model, latent_video, positive, negative, seed, steps, cfg, sampler_name, denoise - plus a scheduler dropdown (simple, sgm_uniform, karras, exponential, ddim_uniform, beta, normal, linear_quadratic, kl_optimal) that the main sampler lacks. Then the experimental bits:
experimental_preset-Conservative (stride=2),Moderate (stride=4),Aggressive (stride=8), orCustom. Each preset tunesfreeze_ratiodownward andthrottle_delay_msupward as stride climbs, which is the author acknowledging things get uglier the more aggressive you get.frame_stride- sample every Nth frame, then fill the gaps.interpolation_method-linear,slerp, ormotion(the pack's optical-flow-ish warping). Nononehere, unlike the main sampler.attention_window,freeze_ratio,throttle_delay_ms- the familiar attention-freezing and pacing knobs, with throttle now a plain milliseconds value instead of temperature-driven.
Output is a LATENT. The interpolation code is the same interpolate() utility the main sampler uses - linear lerp, spherical slerp (better for latents since it preserves magnitude), and motion-compensated warping.
The honest verdict
The math is real - fewer diffused frames is a big attention win, which is why frame-stride tricks work in real-time video systems - but LTX-2 isn't built for it. Its temporal attention spans all frames, so skipping them produces warped, flickery, or just wrong motion. The experimental presets at stride 2 are borderline; at stride 8, per the source, you're "likely to break most models." If you're on a desperate VRAM budget, your realistic path is the main LTX2EfficientSampler with freeze ratio and thermal throttling, not this. Use this one if you're curious, prototyping, or testing a future model with local temporal attention.
Installation
Same pack as everything else here - kakachiex2/comfyui-ltx2-efficient. ComfyUI Manager (search "LTX2 Efficient") or:
cd ComfyUI/custom_nodes/
git clone https://github.com/kakachiex2/comfyui-ltx2-efficient
cd comfyui-ltx2-efficient
pip install -r requirements.txt
Restart ComfyUI. No model files, no heavy deps.
Troubleshooting
- Distorted/noisy output - that's the documented behavior at
frame_stride > 1. It's not a bug you can tune away; it's the fundamental limitation the node exists to explore. - "Motion" interpolation is slow - expected; it's the heavy option. Try
slerpfor a fast, smoother default. - Your real workflow needs reliability - switch to the non-experimental
LTX2EfficientSampler. This is the node to play with when you have time to waste, not the one to build on.
It earns its ⚠️. Worth knowing about because it clarifies why the pack's main sampler is so conservative about frame striding - and it's a nice sandbox for people who want to see exactly what breaks.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| latent_video | LATENT | — | |
| positive | CONDITIONING | — | |
| negative | CONDITIONING | — | |
| seed | INT | 00–18446744073709550000 | — |
| steps | INT | 201–10000 | — |
| cfg | FLOAT | 4.000–100 | — |
| sampler_name | COMBO | 44 options: euler, euler_cfg_pp, euler_ancestral, euler_ancestral_cfg_pp, heun, heunpp2, +38 | |
| scheduler | COMBO | 9 options: simple, sgm_uniform, karras, exponential, ddim_uniform, beta, +3 | |
| denoise | FLOAT | 1.000–1 | — |
| experimental_preset | COMBO | Conservative (stride=2) | 4 options: Conservative (stride=2), Moderate (stride=4), Aggressive (stride=8), Custom |
| frame_stride | INT | 21–32 | Sample every Nth frame. Higher = faster but lower quality |
| attention_window | INT | 41–32 | — |
| freeze_ratio | FLOAT | 0.300–1 | — |
| throttle_delay_ms | INT | 500–500 | — |
| interpolation_method | COMBO | slerp | 3 options: linear, slerp, motion |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| LATENT | LATENT | — |