Apply VDN-H3 24GB Advanced
Same patch, training wheels off
- model
- MODEL
ApplyVDNH3Advanced_24GB - Apply VDN-H3 24GB Advanced in the menu - is the sibling of the pack's Optimized node, and it does the exact same job: patch your MiniMax-H3 model so it runs with VDN-H3's hybrid attention on a 24 GB card. The difference is what's on the dials. Where the Optimized node hands you one strength slider and a sane set of defaults, this one exposes per-adapter strengths, the window/anchors/text/linear-branch switches the released model was trained with, and a compile-fused kernel path. Its defaults reproduce the released model exactly - so if you never intend to change anything, the Optimized node is the one to reach for. Reach for this one when you want to know why the model behaves the way it does, or when you're chasing a specific failure.
What the extra inputs do
VDN-H3 splits attention: exact windowed softmax over nearby frames, a linear branch for the long-range context, and two adapters riding on top - the "default" (Stage-B) adapter and the "turbo" adapter that makes the 8-step DMD-distilled stage work. The Advanced node gives you each of those as its own dial:
- stage_b_strength and turbo_strength - separate weights for the two adapters, where the base node has one combined
strength. Both default to 1.0, which is the released model. If you're tuning, this is how you find out which adapter is actually carrying the quality. - window_radius (1) and window_chunk (5) - the geometry of the local softmax window, in chunks. These are the "trained: 1 / trained: 5" values. Move them and you're exploring how much local context the exact-attention part really needs.
- anchor_frames (
both) - boundary-frame anchors the attention keys off; the trained setting isboth. - text_state (ON) - whether the prompt gets written into the linear branch's states at init. The trained setting is ON.
- linear_branch (ON) - turning this off gives you a window-only ablation. The tooltip is blunt: output then has no long-range context on clips longer than the window. It's a debug switch, not an artistic one.
- fast_kernels (OFF) -
torch.compiles the branch's hot spots (RMSNorm+gate, state gather, the bidirectional scan) into one CUDA-graph replay. Same math in theory, and it logs a warning if it ever drifts - which the author says it does on 8-step DMD stages under torch 2.10. Keep it off for final renders; it's an ablation/experiment tool.
Everything else - model, vdn_checkpoint, apply_turbo_adapter, lora_mode, branch_weights, retain_buffers, attention_backend, verbose - is shared with the Optimized node and behaves the same way. lora_mode should stay on merge for the 8-step stage; the tooltip on the Advanced node points straight back to the base node's warning that bypass visibly degrades DMD output.
One honest omission to know about: the Optimized node carries the auto_memory_latent input that drives the v49 duration-aware AutoMemory/AutoLongCache policy - the piece the README says to connect to the same LATENT the sampler uses. This node doesn't have it. If your goal is the tested 24 GB memory preset, that's the Optimized node's job; this one is for poking at the attention and the branch, and it expects you to know your VRAM budget yourself.
Wiring and output
Chain it exactly like the Optimized node - once, between the H3 model loader and the sampler - and it returns one MODEL. The bundled example workflow (example_workflows/vdn_h3_t2v_8step_24gb.json) shows the full t2v graph this pack was validated with: the pruned INT8 ConvRot H3 base, 8 steps on a simple schedule, then VAEDecode plus VAEDecodeAudio into SaveVideo. Copy that workflow before you start moving sliders, so you have a known-good baseline.
Installing
Same pack, same story: search "VDN-H3" in ComfyUI Manager, or
cd ComfyUI/custom_nodes
git clone https://github.com/Speach1sdef178/ComfyUI-VDN-H3-24GB
exactly onto custom_nodes/ComfyUI-VDN-H3-24GB/ (no nested folder), then restart. There are no extra pip dependencies - requirements.txt is empty and it runs on stock torch. The VDN stage checkpoint is the real dependency: download the entire stage-dmd-step-250-int8_convrot_comfyui folder (spec file, linear branch, default and turbo adapters - not just the one .safetensors) from speach1sdef178/VDN-H3-INT8-ConvRot-ComfyUI into ComfyUI/models/vdn/.
The gotchas
Same core hook caveat as the whole pack: LongCache patches comfy/ldm/minimax/model.py via the bundled installer (idempotent, with a .bak backup), and any ComfyUI update wipes it - re-run tools/install_minimax_block_loop_hook.py after upgrading. And two of your own: don't flip linear_branch off and then wonder why long clips lose their far-frame coherence, and don't leave fast_kernels on for a final render on an 8-step stage - the drift warning is the author telling you they've seen it go wrong. If output degrades after you've touched the Advanced dials, resetting stage_b_strength/turbo_strength to 1.0 and the geometry to the "trained" values gets you back to the released model, bit for bit.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | The MiniMax-H3 diffusion model to patch. Chain once, between the model loader and the sampler. | |
| vdn_checkpoint | COMBO | The VDN stage directory (models/vdn) holding the linear-branch weights and spec. Must match the loaded base (stage-dmd-* = 8-step distilled model). | |
| apply_turbo_adapter | BOOLEAN | true | Apply the 'turbo' adapter when the checkpoint carries one (8-step model). See the base node's tooltip. |
| stage_b_strength | FLOAT | 1.000–2 | Strength of the 'default' (Stage-B) adapter. |
| turbo_strength | FLOAT | 1.000–2 | Strength of the 'turbo' (8-step DMD) adapter. |
| lora_mode | COMBO | merge | merge required for 8-step DMD checkpoints; see the base node's tooltip. |
| branch_weights | COMBO | stream | stream (24GB tested default): branch weights are moved to the GPU per block per step. auto: cache_gpu when the free VRAM after the base load exceeds 1.5x the stage size + 4 GiB headroom, else stream (prefers the int8_convrot stage file under memory pressure). stream: branch weights move to the GPU per block per step with a one-block lookahead prefetch (safe on small cards). cache_gpu: resident on the GPU after the first step (faster; keep ~4.3 GB VRAM free). |
| retain_buffers | COMBO | auto | Retained branch scratch/banks (scan banks, delta solve, window gather, q/k/v copies + prefetch) trade ~0.5-1 GiB VRAM for churn-free steps. auto: retain when free VRAM >= stage + 10 GiB headroom, else transient (v1.3.1 allocation pattern, peak VRAM priority on small cards). on/off override. |
| verbose | BOOLEAN | false | Log the applied adapters and the per-forward layout to the console. |
| attention_backend | COMBO | grouped | How the windowed softmax runs. grouped: one dense SDPA per window group (portable, exact). flex: the whole pattern as one compiled FlexAttention kernel over the full sequence (faster on long clips; first run compiles, falls back to grouped if compile fails). |
| window_radiusopt | INT | 10–8 | Softmax window radius in chunks. Trained: 1. |
| window_chunkopt | INT | 50–64 | Chunk size for the aligned window; 0 = per-frame centered window. Trained: 5. |
| anchor_framesopt | COMBO | both | Boundary-frame anchors. Trained: both. |
| text_stateopt | BOOLEAN | true | Write the prompt into the linear branch's states at init. Trained: on. |
| linear_branchopt | BOOLEAN | true | Off = window-only ablation (debug; output then lacks all long-range context on clips longer than the window). |
| fast_kernelsopt | BOOLEAN | false | torch.compile the branch's hot spots (RMSNorm+gate epilogue, state gather, frame-major q store, and the bidirectional scan as one CUDA-graph replay). Same math; falls back to eager if compile fails. First run compiles. Known to drift on 8-step DMD stages (stage-dmd-*) on torch 2.10 -- ablation use only, keep off for final renders (a warning is logged). |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| MODEL | MODEL | — |