GIMM-VFI Interpolate
The GIMM-VFI interpolation node that makes 8x one pass instead of three
- images
- model
- settings
- images
- oversampled
- elapsed_seconds
Every other pairwise interpolator in this pack does 4x or 8x by running the same 2x trick two or three times, recursively. GIMM-VFI Interpolate is the one that says "why?" - it generates all the intermediate frames for a pair in a single forward pass, because the model (NeurIPS 2024) learns an implicit motion model that can answer for any timestep, not just the midpoint. That's the single_pass toggle, and it's on by default for a reason: 4x and 8x get meaningfully faster, and the frames are generated together rather than compounded through error-prone recursive passes.
Inputs. The familiar shared set - images, model (from Load GIMM-VFI Model), multiplier, batch_size, chunk_size, keep_device, all_on_gpu, clear_cache_after_n_frames, source_fps/target_fps - plus the node's signature input:
single_pass(on by default) - the arbitrary-timestep mode that makes all intermediates in one pass. Turn it off and GIMM falls back to the standard recursive 2x approach, same as BIM/EMA/SGM. There are occasional edge cases where recursive is preferable, but you'll know them when you hit them; default is right.batch_size- a subtle one: it's ignored in single-pass mode, because each pair produces multiple frames and pairs are processed one at a time. In recursive mode it works like the other nodes. Don't be confused when raising it does nothing on default settings.multiplier- 2x/4x/8x; in single-pass mode these are one pass per pair rather than recursive.source_fps/target_fps- exact-FPS mode, oversample-then-select, same as the rest of the pack.
Quality-wise, GIMM is the pack's efficient arbitrary-timestep option (~2.5GB per pair), with one honest caveat: it's still frame-pair-centric, so it doesn't give you the long-range temporal coherence that the sequence-native LDF-VFI does. For the common "24 to 48/96" jobs it's a strong default and a genuinely nice speed story at 8x.
Outputs: images, oversampled (same as images in multiplier mode), elapsed_seconds.
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, let the loader fetch the GIMM checkpoint plus its flow estimator (first load is a double download), and wire the output into VHS Video Combine. cupy speeds GIMM up if you install the matching wheel.
Where people get burned: the first-run double download (it's not frozen, it's fetching a flow model), and assuming batch_size is broken because it doesn't respond in single-pass mode. For 4K inputs, drop ds_factor to 0.5 at the loader before reaching for bigger VRAM. And if frames look less temporally stable than you'd like on long sequences, that's the pair-centric design - not a bug.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | Input image batch. Output frame count: 2x=(2N-1), 4x=(4N-3), 8x=(8N-7). | |
| model | GIMM_VFI_MODEL | GIMM-VFI model from the Load GIMM-VFI Model node. | |
| multiplier | COMBO | 2 | Frame rate multiplier. In single-pass mode, all intermediate frames are generated in one forward pass per pair. In recursive mode, uses 2x passes like other models. |
| single_pass | BOOLEAN | true | Use GIMM-VFI's single-pass arbitrary-timestep mode. Generates all intermediate frames per pair in one forward pass (no recursive 2x passes). Disable to use the standard recursive approach (same as BIM/EMA/SGM). |
| 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 model on GPU between frame pairs. Faster but uses more VRAM constantly. Disable to free VRAM between pairs (slower due to CPU-GPU transfers). |
| 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 in recursive mode. Ignored in single-pass mode (pairs are processed one at a time since each generates multiple frames). |
| chunk_size | INT | 00–10000 | Process input frames in chunks of this size (0=disabled). Bounds VRAM usage during processing but the full output is still assembled in RAM. To bound RAM, use the Segment Interpolate node instead. |
| 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. |
| 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 | — |