SPEED Interpolate
The SPEED interpolation node — the diffusion-based default that makes you pick a seed
- images
- model
- settings
- images
- oversampled
- elapsed_seconds
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 changingbatch_sizeorchunk_sizechanges 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.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | Input image batch. Output frame count: 2x=(2N-1), 4x=(4N-3), 8x=(8N-7). | |
| model | SPEED_VFI_MODEL | SPEED model from the Load SPEED Model node. | |
| multiplier | COMBO | 2 | SPEED is midpoint-only: 4x and 8x use recursive midpoint passes. |
| clear_cache_after_n_frames | INT | 101–100 | Clear CUDA cache every N frame pairs to prevent VRAM buildup. Lower = less VRAM but slower. |
| keep_device | BOOLEAN | true | Keep the ~235M-parameter model on GPU between batches. Faster, but uses substantial VRAM. |
| all_on_gpu | BOOLEAN | false | Store all intermediate frames on GPU instead of CPU. Much faster (no transfers) but requires enough VRAM for all frames. Recommended for 48GB+ cards. |
| batch_size | INT | 11–64 | Number 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_size | INT | 00–10000 | Process 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_fps | FLOAT | 0.000–1000 | Input frame rate. Required when target_fps > 0. |
| target_fps | FLOAT | 0.000–1000 | Target output FPS. When > 0, overrides multiplier and auto-computes a power-of-2 oversample up to 8x, then selects frames. 0 = use multiplier. |
| seed | INT | 00–2147483647 | SPEED starts from random pixel noise. The seed makes the same execution settings repeatable without reloading the model. |
| settingsopt | VFI_SETTINGS | Auto-tuned settings from VFI Optimizer. Overrides batch_size, chunk_size, keep_device, all_on_gpu, clear_cache_after_n_frames. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| oversampled | IMAGE | — |
| elapsed_seconds | FLOAT | — |