Breakthrough inference speed for MiniMax H3 Reference-to-Video (Ref2VA / R2VA): Generate a full 5-second, 24 fps video conditioned on reference character images in ~72s (warm) / 95s (first run) on a single consumer NVIDIA GeForce RTX 4090 (24GB).
Both videos were generated on the exact same NVIDIA GeForce RTX 4090 (24GB), using the exact same prompt, character reference image, seed (981445682258077), and resolution (1344×768, 5.16s @ 24 fps / 124 frames).
Input Character Reference Image
| ⏱️ 95s (1st run) / ~72s (warm) | ⏱️ 213s (1st run) / ~135s (warm) |
|---|---|
▶ Download Full 1344x768 Video (MP4) |
▶ Download Full 1344x768 Video (MP4) |
|
|
| Pipeline | Attention Mechanism | Steps / Sampler | 1st Run Latency | Warm Wall Time | Peak VRAM |
|---|---|---|---|---|---|
| MiniMax H3 Native Dense | Dense Global Softmax | 50 steps / Euler | ~650s | ~650s (10.8 min) | ~22.5 GB |
| H3 Turbo LoRA (Dense) | Dense Global Softmax | 4 steps / Euler | ~210s | ~190s (3.1 min) | ~21.0 GB |
| Video Delta Net (VDN-H3) | Windowed + Linear Delta | 8 steps / er_sde | 213.0s | ~135s (2.2 min) | ~18.5 GB |
| Ref2VA VSA (This Repo) 🚀 | 75% Video Sparsity + Dense Prefix | 4 steps / Euler | 95.2s | ~72 seconds | ~13.5 GB |
FastVideo pioneered Visual Sparse Attention (VSA) for text-to-video (T2V) by clustering video tokens into 3D spatial-temporal tiles (4×4×4) and dynamically pruning 75–90% of tiles via a learned gating projection (to_gate_compress).
However, Ref2VA (Reference-to-Video) was widely considered incompatible with VSA because:
- Ref2VA prepends dynamic multimodal condition segments (reference image latents, reference audio latents, and text prompt tokens) ahead of the generated video sequence.
- Naive 3D tiling causes tokens from different modalities to straddle the same tile, corrupting the conditioning masks and breaking identity fidelity.
Our patch resolves this with an engineered two-tier attention layout:
- Multimodal Dense-Exempt Prefix: The geometry mapper isolates text, reference image, and reference audio tokens into segment-pure tiles that are completely exempt from top-k pruning. Reference tokens always remain 100% dense, guaranteeing strict character identity adherence.
- Video-Only Sparse Attention: VSA top-k pruning is applied strictly to generated-video key tiles.
- Gate Transplant: The 50 learned
to_gate_compressprojection matrices are transplanted directly onto the Ref2VA base model (minimax_h3_ref2va_pruned_int8_convrot.safetensors).
- ComfyUI (latest version with native MiniMax-H3 support).
- comfy-kitchen installed with CUDA
sol_attnsupport. - PyTorch 2.4+ and CUDA 12.1+.
- NVIDIA GPU with 24GB VRAM (RTX 3090, RTX 4090, A5000, L40S, etc.).
Place the following files in your ComfyUI/models/ directories:
| Model Type | File Name | Destination Directory | Download Link |
|---|---|---|---|
| Diffusion Model | minimax_h3_ref2va_pruned_int8_convrot.safetensors |
models/diffusion_models/ |
Download from Comfy-Org |
| VSA Gate | fasth3_vsa_gate.safetensors |
models/loras/ |
Download from Hugging Face |
| Turbo LoRA (4-Step) | minimax_h3_ref2v_turbo_4step_v0.1_comfyui_bf16.safetensors |
models/loras/ |
Download from LightX2V |
| Text Encoder | qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors |
models/text_encoders/ |
Download from Comfy-Org |
| Video VAE | minimax_h3_video_vae_fp16.safetensors |
models/vae/ |
Download from Comfy-Org |
| Audio VAE | minimax_h3_audio_vae_fp32.safetensors |
models/vae/ |
Download from Comfy-Org |
💡 Tip: The VSA Gate can also be extracted locally from any official FastH3 base checkpoint using the included
tools/extract_vsa_gate.pyscript.
-
Clone or copy this repository into your ComfyUI
custom_nodesdirectory:cd ComfyUI/custom_nodes git clone https://github.com/Kablex/ComfyUI-Ref2VA-VSA -
Copy the example character image into your ComfyUI input folder:
cp ComfyUI-Ref2VA-VSA/assets/example_character.jpg ComfyUI/input/
-
Restart ComfyUI. The node appears under:
FastH3/VSA -> Ref2VA VSA Gate Transplant (EXPERIMENTAL) -
Load the ready-to-use workflow from
workflows/ref2va_vsa_4step_rtx4090.jsonand click Queue Prompt.
[UNETLoader (Ref2VA INT8)]
│
▼
[LoraLoaderModelOnly (Turbo 4-Step LoRA, strength=1.0)]
│
▼
[Ref2VAVSAGatePatch (fasth3_vsa_gate.safetensors, sparsity=0.75)]
│
▼
[MiniMaxH3SigmaShift (shift_video=12, shift_audio=3)]
│
├──► [BasicScheduler (steps=4, scheduler=simple)]
│
└──► [BasicGuider] ──► [SamplerCustomAdvanced (sampler=euler)]
If you have a FastH3 VSA base checkpoint (minimax_h3_fastvideo_vsa_datafree_1300step_4step_int8_convrot.safetensors), you can extract fasth3_vsa_gate.safetensors yourself:
python tools/extract_vsa_gate.py \
--input /path/to/minimax_h3_fastvideo_vsa_datafree_1300step_4step_int8_convrot.safetensors \
--output /path/to/ComfyUI/models/loras/fasth3_vsa_gate.safetensors- Licensed under the Apache License 2.0.
- Special thanks to the FastVideo team for the VSA-H3 attention concept and to the ComfyUI / comfy-kitchen developers for the CUDA Sol-Attention kernel primitives.

