[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-95907":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":15,"stars30d":16,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":17,"rankGlobal":10,"rankLanguage":10,"license":18,"archived":19,"fork":19,"defaultBranch":20,"hasWiki":19,"hasPages":19,"topics":21,"createdAt":10,"pushedAt":10,"updatedAt":29,"readmeContent":30,"aiSummary":31,"trendingCount":15,"starSnapshotCount":15,"syncStatus":32,"lastSyncTime":33,"discoverSource":34},95907,"ComfyUI-VDN-H3","Saganaki22\u002FComfyUI-VDN-H3","Saganaki22","Video Delta Net hybrid attention for MiniMax-H3 as a native ComfyUI node. ","https:\u002F\u002Fhuggingface.co\u002Fdrbaph\u002Fvdn-minimax-h3-int8-convrot-comfyui",null,"Python",198,14,108,0,76,3.53,"Apache License 2.0",false,"main",[22,23,24,25,26,27,28],"attention-mechanism","comfyui","comfyui-nodes","fl2va","minimax-h3","t2v","turbo","2026-09-21 02:04:29","# ComfyUI-VDN-H3 — VDN-H3 (Video Delta Net) for MiniMax-H3\n\n\n\u003Cimg width=\"1039\" height=\"505\" alt=\"image\" src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fab4c1691-bff5-46fe-8b3e-635429b0700f\" \u002F>\n\n\n\n**English** | [中文](README_ZH.md)\n\nVideo Delta Net hybrid attention for MiniMax-H3 as a native ComfyUI node. Nearby\nframes keep exact softmax attention; distant temporal context goes through the\ncheckpoint's **Video Delta Attention** linear branch, replacing the quadratic\nlong-range attention with a constant-cost recurrent state.\n\nReference implementation: [OpenVDN\u002Fvdn-minimax-h3](https:\u002F\u002Fgithub.com\u002FOpenVDN\u002Fvdn-minimax-h3)\n(Apache-2.0). Weights: [OpenVDN\u002Fvdn-minimax-h3](https:\u002F\u002Fhuggingface.co\u002FOpenVDN\u002Fvdn-minimax-h3)\n(MiniMax H3 Community License — **read it before use**; the license excludes some\nterritories).\n\nThis package is a **port, not a fork**: it reproduces the official hybrid-attention\nmath on ComfyUI's native MiniMax-H3 model as runtime model patches. No ComfyUI core\nfiles are modified.\n\n**Why this repo exists (and what it isn't).** The official VDN-H3 release targets a datacenter stack: 8× B200 GPUs with Ulysses sequence parallelism, and FlashAttention-4 kernels that only support Hopper and datacenter Blackwell — consumer Blackwell (sm_120) isn't supported, and there are no Windows builds. Upstream also uses FP8 linears and custom fused Triton kernels; this port substitutes those with portable PyTorch equivalents that run everywhere ComfyUI runs.\n\nWhat you get: the same released checkpoints and the same architecture — windowed softmax + Video Delta Attention branch, unit-tested against the official implementation — with zero new dependencies. The 8-step distilled model, near-lossless quality versus dense H3, and an attention cost that grows linearly with clip length instead of quadratically — the longer the video, the more this matters.\n\nWhat you don't get: the headline numbers. The official 74.5× figure combines 8-GPU parallelism, FA4, FP8, and 8-step distillation; upstream's own single-GPU measurement is ~2.6× at 50 steps, and this port's portable kernels land somewhat under that (measured ~17 s\u002Fit at 1280×736 \u002F 145 frames on an RTX 5090 — see Benchmarks.md). If you want to experiment with the architecture on your own hardware, this is for you; if you want the streaming-real-time numbers, that takes their B200 cluster.\n\n**Hardware reality check.** This is not the fastest or lightest way to run MiniMax-H3 — it is an experimental PyTorch port that re-implements similar math to reach a similar result. The node runs an extra linear-branch network on every transformer block of every step, which needs considerably more compute and VRAM than int8-fused attention routes (comfy-kitchen), SageAttention, SOL or SLA — with those, the same card can push roughly double the resolution and clip length. What you get back: the benefit grows with longer clips and larger resolutions — VDN's attention cost is linear in clip length, not quadratic — provided your GPU has the VRAM to feed it. Upstream was designed for a cluster of 8× B200 datacenter GPUs, not consumer hardware. **If your VRAM or RAM is limited, I do not recommend this repo, model, or method.**\n\n| CK, Sol-attn, res_multi \u002F simple — 20 Steps, 1280x736, 3:05 | LightXv2 4-Step Turbo v1.1, CK, Sol-attn, er_sde \u002F beta — 8 steps, 1280x736, 1:24 |\n|:---:|:---:|\n| \u003Cvideo src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F7120657d-af61-4414-b621-53b39208ffe0\" controls>\u003C\u002Fvideo> | \u003Cvideo src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fb0373566-fc78-4616-b591-13462c4b50e6\" controls>\u003C\u002Fvideo> |\n\n| VDN-H3 Turbo, er_sde \u002F beta — 8 steps, 1280x736, 2:04 | VDN-H3 Advanced fast_kernels Turbo, er_sde \u002F beta — 8 steps, 1280x736, 1:13 |\n|:---:|:---:|\n| \u003Cvideo src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F89cc7155-ca89-459e-9996-5b5f6bfcd284\" controls>\u003C\u002Fvideo> | \u003Cvideo src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F5cc9906e-acec-4c61-a3b9-17c79153945b\" controls>\u003C\u002Fvideo> |\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>VDN-H3 bf16 vs INT8 ConvRot — A\u002FB videos (same seed &amp; settings) — click to expand\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n| VDN-H3 bf16 stage, er_sde \u002F beta — 8 steps, 1280x736, 1:51 | VDN-H3 INT8 ConvRot stage, er_sde \u002F beta — 8 steps, 1280x736, 1:35 |\n|:---:|:---:|\n| \u003Cvideo src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F13a6016d-89fc-48bc-9a57-7920994f2fbf\" controls loop>\u003C\u002Fvideo> | \u003Cvideo src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F28e539f6-ebf4-4ae6-b383-2605ec6cf6bb\" controls loop>\u003C\u002Fvideo> |\n\nSame seed and settings on both sides (merge, `cache_gpu`); only the stage\ndiffers. The INT8 stage's branch matmuls run 2.7x faster; end-to-end ~1.2x\nfaster in this single-run A\u002FB. Identical output.\n[Details + timing table](#bf16-vs-int8-convrot--ab-same-seed--settings).\n\n\n\n\n\n\n\n\u003C\u002Fdetails>\n\n**Ref2V example (INT8 ConvRot stage)** — ref2va base, 8 steps, er_sde \u002F beta,\n928x928:\n\n\n\nhttps:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F5b17a3fb-1361-4da9-b52c-603bd5e7c1f1\n\n\n\n\n### Same seed \n`981445682258077`\n\n## v1.5.0\n\n- Bounds long-clip frame-statistics preparation to about 1 GiB instead of\n  materializing every frame at once. At the reported 72-frame, 1,032-token\n  geometry, the complete INT8 branch path reduced measured peak additional\n  allocation from 9.41 GiB to 6.81 GiB with bit-identical output and effectively\n  unchanged runtime.\n- Restores the released text-refiner attention adapter weights, which were\n  previously skipped because their paths did not match ComfyUI's fused QKV\n  layout.\n- Fixes the dense full-coverage attention shape, query short-convolution support,\n  cancellation-safe stream prefetch, bounded FlexAttention mask caching, and\n  validation of incomplete INT8 checkpoints.\n- Releases large QKV and branch intermediates earlier and removes a per-block GPU\n  synchronization. The Comfy compiler workaround now encloses the complete model\n  call and always restores the process setting.\n\nThe CUDA regression suite passes 46 tests with no skips. Full measurements and\nthe upstream mathematical comparison are in\n[PerformanceReview.md](PerformanceReview.md).\n\n\n## v1.5.1\n\n- Fixes a branch-prefetch lifetime bug inherited from v1.4.3: `record_stream`\n  was skipped for the whole `cudaMallocAsync` allocator, but PyTorch 2.10's\n  cudaMallocAsync allocator does require cross-stream recording — its warning\n  only concerns recording a tensor's original allocation stream. Skipping the\n  protection could free branch weights while the consumer stream was still\n  reading them, implicated in a post-release CUDA illegal-memory-access crash.\n- The stream prefetcher now records every storage directly, including INT8\n  scale storage, and no longer swallows `record_stream` registration errors.\n- Regression tests cover prefetch handoff ordering and storage registration for\n  plain and INT8 tensors; the full suite passes 51 tests.\n\n\n## Install\n\n1. Clone into `ComfyUI\u002Fcustom_nodes\u002F` and restart ComfyUI:\n\n```bash\ncd ComfyUI\u002Fcustom_nodes\ngit clone https:\u002F\u002Fgithub.com\u002FSaganaki22\u002FComfyUI-VDN-H3\n```\n\n2. Download the VDN checkpoint stage you want into `ComfyUI\u002Fmodels\u002Fvdn\u002F`:\n\n```bash\nhf download OpenVDN\u002Fvdn-minimax-h3 --include \"stage-dmd-step-250\u002F*\" --local-dir \u003CComfyUI>\u002Fmodels\u002Fvdn\n```\n\nKeep the release directory layout intact (`model_spec.json`, `linear_branch\u002F`,\n`adapters\u002F`). Nothing is converted on disk — the node re-keys the diffusers-format\ntensors onto ComfyUI module paths in memory.\n\n**No new Python dependencies.** The node runs the official math in eager PyTorch\nthat ships with ComfyUI (torch + safetensors). No Triton, no flash-attn-4, no CUDA\nbuilds, no `pip install`.\n\n## Nodes\n\n**Apply VDN-H3 (MiniMax-H3 Hybrid Attention)** — `MODEL -> MODEL`\n\n| Input | Meaning |\n|---|---|\n| `vdn_checkpoint` | a stage directory under `models\u002Fvdn` |\n| `apply_turbo_adapter` | ON = the released **8-step** model (use 8 sampler steps); OFF = the **50-step** model (use ~50 steps) |\n| `strength` | adapter strength, 1.0 = released model |\n| `lora_mode` | **`merge`** (default; adapters folded into the weights — reproduces the validated model exactly) \u002F `bypass` (runtime injection) |\n\n> **`lora_mode` — use `merge`, especially on 8-step DMD checkpoints (`stage-dmd-*`).**\n> Measured on a pruned int8 base: bypass applies the same adapters, but each\n> module's delta carries bf16 rounding noise instead of being baked into the\n> weights. Blocks 0-33 stay bit-identical to merge; the deep blocks (34+) amplify\n> that noise to ~10% of feature magnitude, and every bypass render of the 8-step\n> model comes out grainy\u002Fdegraded. A coherent perturbation of the same size\n> (strength 1.016) renders clean — it is specifically off-manifold rounding\n> noise, not the delta math. Merge is required for stage-dmd-*; bypass remains\n> available for non-DMD checkpoints.\n| `branch_weights` | **`auto`** (default; picks `cache_gpu` when 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) \u002F `stream` (weights stream from disk straight to GPU per block per step, with a one-block lookahead prefetch — nothing extra held in RAM; safe on small cards) \u002F `cache_gpu` (resident, faster, keep ~4.3 GB VRAM free) |\n| `attention_backend` | `grouped` (default; one dense SDPA per window group) \u002F `flex` (one compiled FlexAttention kernel; opt-in, see Benchmarks.md) |\n| `verbose` | log the applied adapters and per-forward layout |\n\nDrop it between your MiniMax-H3 loader and the sampler; conditioning, LoRAs,\nsamplers, VAE decode and video\u002Faudio output nodes are unchanged. Example workflow:\n`example_workflows\u002Fvdn_h3_t2v_8step.json`.\n\n**Apply VDN-H3 Advanced** — everything above plus, for experimenters:\n\n| Input | Meaning |\n|---|---|\n| `stage_b_strength` \u002F `turbo_strength` | per-adapter strengths (default node applies one global strength) |\n| `window_radius`, `window_chunk` | deviate from the trained c=5 r=1 window (ablation) |\n| `anchor_frames` | `both` \u002F `columns` \u002F `rows` \u002F `none` (trained: `both`) |\n| `text_state` | write the prompt into the branch's states at init (trained: on) |\n| `linear_branch` | off = window-only ablation (debug — output loses all long-range context) |\n| `fast_kernels` | torch.compile the branch's hot spots (RMSNorm+gate epilogue, state gather, frame-major q store, bidirectional scan as one CUDA-graph replay; falls back to eager if compile fails). **Known to drift on 8-step DMD stages (`stage-dmd-*`) on torch 2.10** — ulp-level bf16 rounding in the fused epilogue\u002Fgather that the distilled sampler amplifies. Ablation use only; keep it off for final renders (the node logs a warning) |\n\nAblation inputs warn in the console when they deviate from the checkpoint's\ntrained spec; defaults reproduce the released model exactly.\n\n## Attention backends and stacking\n\nVDN's windowed softmax always runs exact SDPA — dispatched through ComfyUI's\nbackend-priority chain (flash \u002F cuDNN \u002F mem-efficient), but never through\nquantized backends: routing the windows through sage\u002Fkitchen int8 measurably\nsoftens output, and the released model validated exact local attention. Backend\noverride patches (SageAttention, kitchen-int8, KJNodes) still apply to the base\nmodel's own attention (text refiner, and the dense fallback on very short\nclips). The delta-rule branch never calls softmax kernels and is unaffected by\nbackend patches.\n\n**Do not stack the \"MiniMax H3 Scheduled Sol Attention\" patch with this node.**\nIt replaces `blocks.*.attn.forward` — the same path VDN owns — so wherever SOL\nhandles a call, VDN's linear branch is skipped and you are no longer running\nVDN-H3 (with VDN's LoRAs applied to an attention they were not trained for).\nUse SOL-H3 for plain H3 runs; use VDN alone for VDN runs. SOL's FFN-chunking\nnode and general attention overrides do compose.\n\n## Required models\n\n| Component | File | Source | Place in |\n|---|---|---|---|\n| Base diffusion model | `minimax_h3_fl2va_int8_convrot.safetensors` (recommended with torch cu130; use the `fp8_scaled` variant only if you can't) | [Comfy-Org\u002FMiniMax-H3](https:\u002F\u002Fhuggingface.co\u002FComfy-Org\u002FMiniMax-H3) | `models\u002Fdiffusion_models` |\n| Text encoder | `qwen3vl_32b_minimax_h3_nvfp4_awq.safetensors` | [Comfy-Org\u002FMiniMax-H3](https:\u002F\u002Fhuggingface.co\u002FComfy-Org\u002FMiniMax-H3) | `models\u002Ftext_encoders` |\n| Video VAE | `minimax_h3_video_vae_int8_convrot.safetensors` (the fp16 variant also works, but int8_convrot fixed a decode-stuck report on a 3060 and is what the example workflow loads) | [Comfy-Org\u002FMiniMax-H3](https:\u002F\u002Fhuggingface.co\u002FComfy-Org\u002FMiniMax-H3) | `models\u002Fvae` |\n| Audio VAE | `minimax_h3_audio_vae_fp32.safetensors` | [Comfy-Org\u002FMiniMax-H3](https:\u002F\u002Fhuggingface.co\u002FComfy-Org\u002FMiniMax-H3) | `models\u002Fvae` |\n| VDN branch + adapters | `stage-dmd-step-250\u002F` (8-step) and\u002For `stage-b-step-2000\u002F` (50-step) | [OpenVDN\u002Fvdn-minimax-h3](https:\u002F\u002Fhuggingface.co\u002FOpenVDN\u002Fvdn-minimax-h3) | `models\u002Fvdn` |\n\nThe VDN release **does not contain base weights** — it is branch + LoRA adapters\nonly, applied at runtime on whatever MiniMax-H3 base you load. The 72 GB diffusers\nbase (`h3-base\u002F`) in the HF repo is *not* needed.\n\n**Tested and working with both the `fl2v` (fl2va) and `ref2v` (ref2va) MiniMax-H3\nbase models.**\n\nDownload the VDN checkpoint stage you want into `ComfyUI\u002Fmodels\u002Fvdn\u002F`:\n\n```bash\nhf download OpenVDN\u002Fvdn-minimax-h3 --include \"stage-dmd-step-250\u002F*\" --local-dir \u003CComfyUI>\u002Fmodels\u002Fvdn\n```\n\nOr, for the pre-quantized **INT8 ConvRot** version of the 8-step stage —\n[drbaph\u002Fvdn-minimax-h3-int8-convrot-comfyui](https:\u002F\u002Fhuggingface.co\u002Fdrbaph\u002Fvdn-minimax-h3-int8-convrot-comfyui)\n(identical output, branch 4.3 -> 2.2 GB, ~4.7 GB lower peak VRAM while loading,\nrequires v1.3.0+):\n\n```bash\nhf download drbaph\u002Fvdn-minimax-h3-int8-convrot-comfyui --local-dir \u003CComfyUI>\u002Fmodels\u002Fvdn\u002Fvdn-minimax-h3-int8-convrot-comfyui\n```\n\nThe folder name becomes the `vdn_checkpoint` entry. You can also quantize any\nstage yourself with `tools\u002Fquantize_vdn_branch_int8.py`.\n\n### BF16 vs INT8 ConvRot — A\u002FB (same seed & settings)\n\n\u003Cdetails>\n\u003Csummary>\u003Cstrong>click to expand — timing table &amp; videos\u003C\u002Fstrong>\u003C\u002Fsummary>\n\n8 steps, er_sde \u002F beta, 1280x736 \u002F 61 frames, merge, `cache_gpu`. Identical\noutput; wall clock from a single run each (±5 s sampling).\n\n| stage | precision | wall time | peak VRAM (min free) | video |\n|---|---|---|---|---|\n| `stage-dmd-step-250` | bf16 | ~111 s | 3.6 GB free | \u003Cvideo src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F7539d6be-95fd-48e4-b3a4-b7bae677f194\" controls>\u003C\u002Fvideo> |\n| `stage-dmd-step-250-int8_convrot_comfyui` | int8 convrot | ~95 s | 8.3 GB free | \u003Cvideo src=\"https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002Fa5204f2e-7fab-40df-b761-f1f4d9caf54a\" controls>\u003C\u002Fvideo> |\n\n\u003C\u002Fdetails>\n\nThe 8-step model's `turbo` adapter replaces (does not stack with) community\nMiniMax-H3 turbo LoRAs — do not run both.\n\n## What is official vs adapted\n\n**Faithful to the official implementation** (verified against the reference math by\nunit tests in `tests\u002F`): chunk-aligned softmax window with anchor frames\n(`radius=1, chunk=5, anchor_frames=both` in the released spec), the `vdn_solve`\ndelta rule, bidirectional frame scans with the alpha bridge and prompt text state,\nthe K\u002FV short conv, output gates, and both LoRA adapters.\n\n**ComfyUI-specific adaptations:**\n\n- The default windowed softmax runs as one dense SDPA per chunk-group instead of\n  block-sparse FlexAttention. Same partition, same math; needs no Triton and no\n  torch.compile. A FlexAttention + BlockMask path IS included (opt-in via\n  `attention_backend: flex`) and compiled fine on triton-windows — measured\n  parity with grouped on RTX 5090 at 34.5k tokens (see Benchmarks.md), so grouped\n  stays the default. The official FA4 backend is faster still but needs\n  Linux + datacenter Blackwell.\n- Eager pointwise ops instead of the official Triton\u002Fcompiled fusions (temporal\n  conv, RMSNorm epilogue, gather) by default — the Advanced node's `fast_kernels`\n  torch.compiles the epilogue, state gather, frame-major q store, and the\n  bidirectional scan (one CUDA-graph replay replacing 2×F kernel launches per\n  block per step); same math, eager fallback.\n- LoRA applied through ComfyUI's bypass\u002Fmerge machinery (int8-fused `fc2` weights\n  route through merge automatically; pruned\u002Fcurve bases get the e-grid adaln\n  re-injection).\n- The packed-sequence geometry is read from ComfyUI's own `PackedLayout`, so\n  conditioning variants (t2va \u002F fl2va \u002F ref2va) keep working; only t2va-style\n  layouts were exercised by VDN's training.\n\n## GPUs \u002F platform\n\n- **Windows + NVIDIA**: primary target, tested (RTX 5090, torch 2.10+cu130).\n- **Linux + NVIDIA**: should work identically (pure PyTorch).\n- Single GPU only in this port. The official Ulysses 8-GPU path is not implemented\n  (it is distribution, not algorithm).\n- AMD\u002FIntel\u002FCPU: untested; eager PyTorch means it will *run*, slowly. The delta-rule\n  Cholesky needs a batched-solve backend — CPU works for small tests.\n\n## VRAM and performance\n\nThe base model dominates VRAM; VDN adds ~4.3 GB of branch weights (streamed per\nblock in `stream` mode, so the working-set increase is roughly one block's ~86 MB).\nTransient raw q\u002Fk copies inside attention are released before the branch runs,\nand long-clip frame-statistics preparation is processed in bounded batches.\n\nMeasured on RTX 5090 (int8 convrot base, `stream` mode, sage2 patch): 1280x736,\n145 frames, 8 steps, euler\u002Fsimple, seed 42, ~17 s\u002Fit (~2:15 sampling), audio\nincluded. `grouped` vs `flex` attention backends measured parity at 34.5k tokens\n— the grouped path issues only ~6 dense SDPA calls per block per step at this\nlength, so flex's fusion buys nothing yet; grouped stays the default. Reference\npoints from the official VDN report: a single B200 runs the dense 50-step model\nin 13.95 min and the optimized VDN-H3 in 5.34 min (~2.6x from the hybrid alone);\nthe headline 74.5x combines 8xB200 parallelism, 8-step distillation, fp8 linears,\nand FA4\u002Fflex kernels. Expect single-GPU gains on this port to track the ~2.6x\narchitectural figure, scaled by which attention backend your windows dispatch to.\nFull measurement data and verification status: [Benchmarks.md](Benchmarks.md).\n\n**Smaller cards (12–16 GB).** The int8 stack (int8_convrot base + int4 text\nencoder + [int8_convrot VDN stage](https:\u002F\u002Fhuggingface.co\u002Fdrbaph\u002Fvdn-minimax-h3-int8-convrot-comfyui))\nfits 736p on 12–16 GB without `--lowvram`. Avoid `--lowvram` if you can:\nmeasured cost is 20–40% sampling speed for the offload churn, and the int8\nstack doesn't need it at 736p. Keep `branch_weights: auto` (default) — it\npicks `stream` automatically when VRAM is tight.\n\n**`retain_buffers` — speed vs VRAM, resolved automatically.** The node keeps\nsome branch scratch alive between blocks (scan banks, delta-solve scratch,\nwindow gather buffers, q\u002Fk\u002Fv copies) and prefetches the next weight block in\nstream mode. Retained, steps run without per-block allocation churn — measured\n~15% faster than v1.3.1 at 1280x736\u002F145f in stream mode; the measured peak\nincrement is small (~0.1 GiB at 736p, none detected at 145f). `auto` (the\ndefault) measures it for you: retain when free VRAM ≥ stage size + 10 GiB\nheadroom, otherwise fall back to the transient v1.3.1 allocation pattern (and\nskip the prefetch stream) so small cards prioritize fitting over speed. `on`\n\u002F `off` override.\n\n**VAE decode VRAM spike.** Stock `VAEDecode` untiled is the decode-time VRAM\nspike at 768p+ or on long clips — it decodes every frame in one shot. Use a\ntiled VAE decode node (e.g. `VAEDecodeTiled`) there; sampling fits but the\ndecode OOMs otherwise. Keep the default overlap — it blends tile edges, so no\nseams; if you ever see grid artifacts, raise the tile size rather than the\noverlap.\n\n## Troubleshooting\n\n- **`VDN checkpoint ... not found`** — the stage dir must sit under\n  `models\u002Fvdn\u002F` and contain `linear_branch\u002Fmodel.safetensors` and `model_spec.json`.\n- **\"checkpoint has N blocks but the loaded model has M\"** — the VDN stage and the\n  loaded base do not belong together (e.g. a 50-block stage on a different-depth\n  model). Load the matching MiniMax-H3 base.\n- **\"This MODEL already has VDN-H3 applied\"** — chain the node once.\n- **`aimdo memory compile error`, or the process dying mid-step (comfy builds\n  from 2026-09-04, the \"Comfy Compiler\" update)** — comfy's new model compiler \u002F\n  malloc-graph planner (comfy commits `804eb551`, which also removed a MiniMax\n  memory workaround in `5c23fb7b`) cannot handle VDN-patched MiniMax-H3\n  forwards. The node handles this for you: while a VDN workflow samples, comfy's\n  compiler is switched off, and it flips back on the moment each step ends —\n  nothing persists, no unload or restart needed, non-VDN workflows always run\n  with comfy's compiler active (a single console warning marks it). Manual\n  equivalents: launch comfy with `--disable-comfy-compiler`, or use a\n  comfy build older than 2026-09-04.\n- **OOM** — keep `branch_weights: auto` (default; it picks `stream` under memory\n  pressure), use `lora_mode: merge`, shorter clips, or a smaller resolution.\n  v1.5.0 also bounds the long-clip statistics workspace. **Cancelling mid-run:**\n  VDN drops its own GPU cache on cancel so\n  reruns start clean; if the *base model* itself was pushed host-side by VRAM\n  pressure, free\u002Funload it once (Manager → Free, an Unload node, or\n  `POST \u002Ffree`) — that residency belongs to comfy, not the node.\n- **Wrong-looking motion at 8 steps** — make sure `apply_turbo_adapter` is ON with\n  8 steps, or OFF with ~50 steps; mixing the two schedules degrades output.\n- **Video renders but looks like the plain model** — check `verbose` and look for\n  `[vdn] layout:` in the console; on clips with \u003C= 15 latent frames the window\n  covers everything and VDN correctly falls back to dense attention.\n\n## License & citation\n\nThis port is Apache-2.0 (see LICENSE). The VDN-H3 architecture, training, and\ncheckpoints are by [OpenVDN](https:\u002F\u002Fgithub.com\u002FOpenVDN\u002Fvdn-minimax-h3)\n(Apache-2.0); the MiniMax-H3 weights are under the MiniMax H3 Community License.\nIf you use VDN-H3, cite the authors:\n\n```bibtex\n@misc{xi2026videodeltanet,\n  title  = {VideoDeltaNet on MiniMax H3},\n  author = {Haocheng Xi and Yiming Xie and Hexu Zhao and Yiwen Zhang and Michael Liu and Thomas Creavin and Kurt Keutzer and Xiuyu Li and Zhaoyang Lv and Chenfeng Xu and Haiwen Feng},\n  year   = {2026},\n  url    = {https:\u002F\u002Fopenvdn.github.io\u002F}\n}\n```\n\n","这是一个为 MiniMax-H3 视频生成模型适配 ComfyUI 的轻量级插件，实现了 Video Delta Net（VDN）混合注意力机制。核心功能是在保持邻近帧精确 softmax 注意力的同时，对远距离时序上下文采用线性复杂度的 Video Delta Attention 分支，将长程注意力计算成本从 O(n²) 降至 O(n)，显著提升长视频生成的可扩展性。技术上采用纯 PyTorch 实现，兼容消费级 GPU（包括 Windows 和 sm_120 架构），无需修改 ComfyUI 核心，支持官方发布的 int8 检查点。适用于在本地硬件上实验长时序、高分辨率文本到视频（T2V）生成任务的研究者与创作者。",2,"2026-09-06 02:30:03","CREATED_QUERY"]