Continuity VDN-H3
Swapping H3's attention for Video Delta Net (and the shot size where it's worth it)
- model
- MODEL
This one is not an accelerator, and treating it like one is how you waste an afternoon. ContinuityVDN puts Video Delta Net on a MiniMax-H3 model: a different attention scheme over the same base weights, plus two LoRA adapters. Nearby frames keep exact softmax attention inside a window; everything further away goes through a linear-attention branch whose cost is constant in clip length. H3's own attention is quadratic in clip length, so the longer the shot, the more this buys - and on a short shot, nothing.
That's the whole decision. Under about fifteen latent frames the trained window covers the entire clip, the port notices and falls back to dense attention, and you've paid for the adapters and a higher per-step cost for nothing: two-second cards gain nothing, fifteen-second shots are the point. It's the FramePack problem in video generation: attention scales badly with length, and the fix is to stop showing every token every other token (ecosystems/wan-video.md).
What's happening under the hood
The port patches each block's attn.forward by object patch, which makes it innermost - it goes on first, before the caches, Spectrum and the chunked FFN. Two adapters ride on the H3 checkpoints you already have: Stage-B "default", and the 8-step DMD-distilled turbo the switch engages. Window geometry is upstream's (radius 1, chunk 5, anchored) and the pack never deviates from it. Windows run as one dense SDPA call per distinct window rather than FlexAttention over a BlockMask: no Triton, no compile.
The rest is VRAM arithmetic you don't have to do: branch weights are placed by free memory (GPU-resident when there's room, streamed otherwise), and under pressure the int8 branch file wins over bf16 - 2.2 GB against 4.3 GB, identical output. The adapters are merged, not bypassed, because upstream measured that bypassing them adds bf16 rounding noise the deep blocks amplify.
The three inputs, one output
- model - any MiniMax-H3
MODEL. - checkpoint - a stage directory name under
models/vdn. A plain string, not a dropdown - typevdn-minimax-h3-int8-convrot-comfyui(subpaths fine). Get it wrong and aFileNotFoundErrornames the folder and the download. - turbo - off is the 50-step model (Stage-B adapter alone). On adds the stage's 8-step DMD adapter beside it.
- MODEL out - the patched clone, straight into your sampler.
In the pack you wire none of this: the timeline's VDN-H3 pill picks a stage from a live dropdown (a stage downloaded after boot shows up without a restart) and the graph gets this node. Throwing that pill throws turbo with it, because the stage's turbo adapter is the distillation - the row goes to 8 steps on er_sde + beta, and whatever community turbo LoRA the switch was holding stays off the run. The stage adapter replaces those rather than stacking.
Installing
Manager, or git clone https://github.com/roadmaus/ComfyUI-MiniMax-Creator into ComfyUI/custom_nodes and restart - nothing to pip install. The port travels inside the pack (Apache-2.0, vendored from Saganaki22's ComfyUI-VDN-H3), so the only thing you add by hand is the stage.
A stage is a directory, not a file, and it goes under ComfyUI/models/vdn/ with its layout intact - model_spec.json, linear_branch/, adapters/. The bf16 release is OpenVDN/vdn-minimax-h3: stage-dmd-step-250/ is the 8-step, stage-b-step-2000/ the 50-step. On 24 GB and below take the int8 repack - half the size, same output:
hf download drbaph/vdn-minimax-h3-int8-convrot-comfyui --local-dir ComfyUI/models/vdn/vdn-minimax-h3-int8-convrot-comfyui
The directory name is what the pill lists. If you read models through extra_model_paths.yaml, put the stage where your H3 checkpoints came from - the pack registers vdn/ beside every diffusion_models/ folder. And read the licence: these weights are under the geofenced MiniMax H3 Community License, with the US, EU, UK and Korea outside its Applicable Territory (closed-source-models.md).
When it refuses, and why that's good
It fails loudly instead of rendering something subtly wrong: a non-H3 model gets "needs a MiniMax-H3 MODEL (blocks[].attn.qkv_proj)", a stage from a different base a block-count mismatch, applying it twice "chain it only once".
Sage attention patches the same key, so the pair is refused - whichever went on last would silently win. SLA is refused too, for the opposite reason: the port's windows run exact attention, so the sparse kernel would have nothing to sparsify. Kitchen attention, the block caches, Spectrum and the low-VRAM pill all compose. One more, non-obvious: Comfy builds that ship the model compiler can hard-fail on patched H3 forwards, so the port disables the compiler for its own model calls - the effect of --disable-comfy-compiler, without you launching anything.
The honest caveat: this is young, one port, and community evidence is essentially zero. Render one fifteen-second shot both ways before rebuilding a pipeline around it. What it offers is the one thing H3's own attention can't: a long shot that doesn't get quadratically dearer.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| checkpoint | STRING | A stage directory under models/vdn — model_spec.json, linear_branch/ and adapters/. | |
| turbo | BOOLEAN | false | Apply the stage's 8-step turbo adapter beside the stage-B one. Off is the 50-step model. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |