ComfyUI Node

SPEED Interpolate

The SPEED interpolation node — the diffusion-based default that makes you pick a seed

By ethanfel·Created 7 months ago·Updated about a month ago· 17
SPEED Interpolate
  • images
  • model
  • settings
  • images
  • oversampled
  • elapsed_seconds
multiplier2
clear_cache_after_n_frames10
keep_devicetrue
all_on_gpufalse
batch_size1
chunk_size0
source_fps0.00
target_fps0.00
seed0

Most frame interpolators are regression models: feed them two frames, they estimate the motion and paint the middle. SPEED Interpolate is a diffusion model instead - it starts from random pixel noise and denoises its way to the midpoint in one step, guided by the two input frames. That's a genuinely different way to do frame interpolation, and it's the pack's recommended modern default for pairwise work. It's also why there's a seed input sitting among the usual controls: diffusion needs a starting noise, and the seed makes that reproducible.

The inputs that matter:

  • images + model (from Load SPEED Model) - the essentials.
  • multiplier - 2x/4x/8x. SPEED only predicts the midpoint, so 4x and 8x are recursive midpoint passes, same structure as the classic pairwise nodes (2N−1, 4N−3, 8N−7 outputs).
  • seed - the new one. It seeds the starting pixel noise, so the same seed plus the same execution settings reproduces the same result. The tooltip's warning is the real gotcha: SPEED is stochastic, and changing batch_size or chunk_size changes how the noise gets assigned across pairs - so a "same seed, different output" mystery is usually you having changed batching, not the node lying.
  • batch_size - pairs per pass; SPEED's model is ~235M params and lives happily in the 24GB tier at HD. Start at 1 and climb.
  • chunk_size, keep_device, all_on_gpu, clear_cache_after_n_frames - the standard memory tuning set.
  • source_fps / target_fps - exact-FPS mode, oversample-then-select, shared with the rest of the pack.

Outputs: images, oversampled (pre-FPS-selection), elapsed_seconds. The model auto-pads inputs to its 64-pixel divisor and crops back, so odd resolutions aren't your problem.

Install. Search "Tween" in ComfyUI Manager, or:

cd ComfyUI/custom_nodes
git clone https://github.com/Ethanfel/ComfyUI-Tween
pip install -r requirements.txt

Restart. First loader run downloads the ~447MB checkpoint from HuggingFace plus the pinned runtime snapshot. VideoHelperSuite for load/save on either side.

Where people get burned: the reproducibility thing is the #1 confusion - a seeded run changes when you change batching, and that's expected, not a bug. Keep the seed on the Interpolate node rather than the loader so you can roll it without reloading the model. And if the output looks different between two identical runs, double-check you didn't change chunk_size; the noise assignment depends on chunk boundaries.

Categoryvideo/SPEED

Inputs (12)

NameTypeDefaultDescription
imagesIMAGEInput image batch. Output frame count: 2x=(2N-1), 4x=(4N-3), 8x=(8N-7).
modelSPEED_VFI_MODELSPEED model from the Load SPEED Model node.
multiplierCOMBO2SPEED is midpoint-only: 4x and 8x use recursive midpoint passes.
clear_cache_after_n_framesINT101–100Clear CUDA cache every N frame pairs to prevent VRAM buildup. Lower = less VRAM but slower.
keep_deviceBOOLEANtrueKeep the ~235M-parameter model on GPU between batches. Faster, but uses substantial VRAM.
all_on_gpuBOOLEANfalseStore all intermediate frames on GPU instead of CPU. Much faster (no transfers) but requires enough VRAM for all frames. Recommended for 48GB+ cards.
batch_sizeINT11–64Number of frame pairs to process simultaneously. Higher = faster but uses more VRAM. Start with 1, increase until VRAM is full. Recommended: 1 for 8GB, 2-4 for 24GB, 4-16 for 48GB+. SPEED is stochastic, so changing batch size can change how seeded noise is assigned to pairs.
chunk_sizeINT00–10000Process the source in overlapping chunks to bound VRAM. SPEED remains repeatable for the same seed and settings, but changing chunk or batch boundaries can change its stochastic result.
source_fpsFLOAT0.000–1000Input frame rate. Required when target_fps > 0.
target_fpsFLOAT0.000–1000Target output FPS. When > 0, overrides multiplier and auto-computes a power-of-2 oversample up to 8x, then selects frames. 0 = use multiplier.
seedINT00–2147483647SPEED starts from random pixel noise. The seed makes the same execution settings repeatable without reloading the model.
settingsoptVFI_SETTINGSAuto-tuned settings from VFI Optimizer. Overrides batch_size, chunk_size, keep_device, all_on_gpu, clear_cache_after_n_frames.

Outputs (3)

NameTypeDescription
imagesIMAGE
oversampledIMAGE
elapsed_secondsFLOAT