ComfyUI Node

GIMM-VFI Interpolate

The GIMM-VFI interpolation node that makes 8x one pass instead of three

By ethanfel·Created 7 months ago·Updated 30 days ago· 17
GIMM-VFI Interpolate
  • images
  • model
  • settings
  • images
  • oversampled
  • elapsed_seconds
multiplier2
single_passtrue
clear_cache_after_n_frames10
keep_devicetrue
all_on_gpufalse
batch_size1
chunk_size0
source_fps0.00
target_fps0.00

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.

Categoryvideo/GIMM-VFI

Inputs (12)

NameTypeDefaultDescription
imagesIMAGEInput image batch. Output frame count: 2x=(2N-1), 4x=(4N-3), 8x=(8N-7).
modelGIMM_VFI_MODELGIMM-VFI model from the Load GIMM-VFI Model node.
multiplierCOMBO2Frame 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_passBOOLEANtrueUse 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_framesINT101–100Clear CUDA cache every N frame pairs to prevent VRAM buildup. Lower = less VRAM but slower.
keep_deviceBOOLEANtrueKeep 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_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 in recursive mode. Ignored in single-pass mode (pairs are processed one at a time since each generates multiple frames).
chunk_sizeINT00–10000Process 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_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.
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