diff --git a/tutorials/video/minimax/minimax-h3.mdx b/tutorials/video/minimax/minimax-h3.mdx
index 8741491142..1040894f30 100644
--- a/tutorials/video/minimax/minimax-h3.mdx
+++ b/tutorials/video/minimax/minimax-h3.mdx
@@ -1,6 +1,6 @@
---
title: "ComfyUI MiniMax H3 Video Generation Guide"
-description: "How to use open-weights MiniMax H3 in ComfyUI: text-to-video, image-to-video, and reference-to-video workflows with native stereo audio, prompt writing tips, and Sage Attention speedups."
+description: "Run open-weights MiniMax H3 in ComfyUI: text-to-video, image-to-video, and reference-to-video Workflows with native stereo audio."
sidebarTitle: "Overview"
---
@@ -8,19 +8,18 @@ import UpdateReminder from "/snippets/tutorials/update-reminder.mdx";
[MiniMax H3](https://www.minimax.io/blog/minimax-h3) is MiniMax's open-weights omni-modal model. It understands text, images, video, and audio in one context and generates video with **native stereo audio** (voice, SFX, and music in a single pass). Open weights target about 1 megapixel (768px short edge) at 24fps for up to ~15 seconds. 2K is a hosted-service output and needs a separate upscale pass in ComfyUI.
+Commercial use of locally generated outputs requires a [MiniMax commercial license](https://comfy.org/minimax/license). See [Commercial licensing](#commercial-licensing) for tiers and pricing.
+
Documentation is split across six pages:
-- **Overview** (this page): capabilities, checkpoints, workflow index, resolution, clip length, steps, sampler, speedups
-- **[Native workflows](/tutorials/video/minimax/minimax-h3-native)**: T2V, I2V, R2V, and native-node techniques
+- **Overview** (this page): capabilities, checkpoints, Workflow index, resolution, clip length, steps, sampler, speedups
+- **[Native Workflows](/tutorials/video/minimax/minimax-h3-native)**: T2V, I2V, R2V, and native-Node techniques
- **[Multiframe Reference](/tutorials/video/minimax/minimax-h3-multiframe)**: anchor reference frames on the timeline
- **[Fun ControlNet Union](/tutorials/video/minimax/minimax-h3-fun-controlnet)**: control video or inpainting with a mask
- **[Prompt guide](/tutorials/video/minimax/minimax-h3-prompt-guide)**: official guides, tips, embeddings
- **[FastH3](/tutorials/video/minimax/minimax-h3-fastvideo)**: FastVideo sparse-attention checkpoints
-
-H3's open weights let you run the model locally. Commercial use of locally generated outputs requires a [MiniMax commercial license](https://comfy.org/minimax/license), available through Comfy, the only official reseller. Generations on Comfy Cloud already include commercial rights. See [Commercial licensing](#commercial-licensing) for tiers and pricing.
-
## Key features
@@ -33,14 +32,29 @@ H3's open weights let you run the model locally. Commercial use of locally gener
## Getting started
-1. Update ComfyUI: base T2V/I2V/R2V templates need **0.30.0+**; Multiframe Reference **0.34.0+**; Fun ControlNet Union, sparse attention, and Model Attention Backend **0.35.0+**; FastH3 **0.36.0+**
-2. **Template Library** > **Video** > pick a MiniMax H3 workflow
-3. Download models from the pop-up (tens of GB; allow time and disk space)
+Each feature needs a minimum ComfyUI version:
+
+| Feature | Minimum version |
+| --- | --- |
+| Base T2V, I2V, and R2V templates | **0.30.0+** |
+| Multiframe Reference | **0.34.0+** |
+| Fun ControlNet Union, sparse attention, and `Model Attention Backend` | **0.35.0+** |
+| FastH3 | **0.36.0+** |
+| Fun ControlNet Union 2.0 | **0.38.0+** |
+
+1. Update ComfyUI to the version your Workflow needs.
+2. Open **Template Library** > **Video** and select a MiniMax H3 Workflow.
+3. Download the models from the pop-up. The files total tens of GB, so allow time and disk space.
Weights live on Hugging Face: [Comfy-Org/MiniMax-H3](https://huggingface.co/Comfy-Org/MiniMax-H3).
-Use **pruned** checkpoints when both full and pruned builds exist. Pruned builds store adaln in a shared curve table (`adaln_t_table`) that ComfyUI reads from the file; templates load `minimax_h3_*_pruned_int8_convrot.safetensors`. LoRAs distilled on **full** builds carry adaln tensors that do not exist on pruned builds (shape mismatch; those weights are skipped). Turbo LoRAs have no adaln tensors and work on either build.
+Use **pruned** checkpoints when both full and pruned builds exist.
+
+- Pruned builds store adaln in a shared curve table (`adaln_t_table`) that ComfyUI reads from the file.
+- Templates load `minimax_h3_*_pruned_int8_convrot.safetensors`.
+- LoRAs distilled on **full** builds carry adaln tensors that do not exist on pruned builds (shape mismatch; those weights are skipped).
+- Turbo LoRAs have no adaln tensors and work on either build.
## Choosing the checkpoint precision
@@ -55,15 +69,15 @@ Pick the smallest build that fits in VRAM. Change only the `UNETLoader` file; Co
| [`pruned_bf16`](https://huggingface.co/Comfy-Org/MiniMax-H3/blob/main/diffusion_models/minimax_h3_fl2va_pruned_bf16.safetensors) | 40 GB | Unquantized pruned |
| [`bf16`](https://huggingface.co/Comfy-Org/MiniMax-H3/blob/main/diffusion_models/minimax_h3_fl2va_bf16.safetensors) | 66 GB | Full unquantized build |
-Links are `fl2va` (T2V/I2V); `ref2va` files are in the same folder at the same sizes. **Comfy Kitchen attention cannot run `int8_convrot` checkpoints**; use a `bf16` build with that backend.
+Links are `fl2va` (T2V/I2V); `ref2va` files are in the same folder at the same sizes.
If VRAM is tight, step down a size: CPU offload costs more than precision tradeoffs. On RTX 30-series, INT8 matrix ops are ~2× FP16 and there is no FP8 path, so INT8 often beats FP8 at the same file size.
H3 also needs video and audio VAEs: [video fp16 / int8_convrot](https://huggingface.co/Comfy-Org/MiniMax-H3/tree/main/vae) and [audio fp32](https://huggingface.co/Comfy-Org/MiniMax-H3/blob/main/vae/minimax_h3_audio_vae_fp32.safetensors). Templates use int8 video + fp32 audio; int8 video decodes ~2× faster on ComfyUI 0.36.0+. Swap files on `VAELoader` like the diffusion model.
-## Workflow index
+## Choosing a template Workflow
-Six template workflows ship today (examples, not an exhaustive list). The library also includes an I2V continuation variant (`video_minimax_h3_i2v_continuation`).
+Six `video_minimax_h3_*` template Workflows are available (examples, not an exhaustive list): `t2v`, `i2v`, `r2v`, `multiframe_reference`, `fun_controlnet_union`, and `i2v_continuation`.
@@ -76,46 +90,75 @@ Six template workflows ship today (examples, not an exhaustive list). The librar
Lock in a character, style, motion, camera move, or voice from reference images, videos, and audio
- Anchor reference frames at specific points along the output timeline with chained Add Guide nodes
+ Anchor reference frames at specific points along the output timeline with chained Add Guide Nodes
Drive H3 with a Canny, Depth, HED, MLSD, or Pose control video, or run video inpainting with a mask
+
+ Extend a clip by loading the previous last frame and describing the next segment
+
-**MiniMax H3 Image to Video** covers T2V and first/last-frame I2V (`t2va` / `fl2va`). **MiniMax H3 Reference to Video** covers R2V (`ref2va`).
+Two templates cover several modes:
+
+- `MiniMax H3 Image to Video` covers T2V and first/last-frame I2V (`t2va` / `fl2va`).
+- `MiniMax H3 Reference to Video` covers R2V (`ref2va`).
-Reference conditioning only applies when it reaches the sampler. T2V/I2V templates sample inside a subgraph wired to **Image to Video** only. A **Reference to Video** node on the canvas is ignored without error. Use the R2V template (or a workflow built from it) for reference-driven output.
+Reference conditioning only applies when it reaches the sampler. T2V/I2V templates sample inside a Subgraph wired to `Image to Video` only. A `Reference to Video` Node on the canvas is ignored without error. Use the R2V template (or a Workflow built from it) for reference-driven output.
Prompt resources: [prompt guide](/tutorials/video/minimax/minimax-h3-prompt-guide).
## Setting the output resolution
-**Resolution Selector** sets `width` and `height` on the H3 node:
+`Resolution Selector` sets `width` and `height` on the H3 Node:
+
+- `aspect_ratio`: Presets such as `16:9 (Widescreen)`, `9:16 (Portrait Widescreen)`, `1:1 (Square)`.
+- `megapixels`: Total pixel count (higher = larger, slower).
+- `multiple`: Rounds `width` and `height` to this grid. The Node defaults to `8`, so set it to `32` for H3.
+
+Templates open at `megapixels` `0.4` with `multiple` `32`:
+
+| Aspect ratio | Resolution at 0.4 MP |
+| --- | --- |
+| 16:9 | 864×480 |
+| 1:1 (the I2V default) | 640×640 |
-- **Aspect ratio**: Presets such as `16:9 (Widescreen)`, `9:16 (Portrait Widescreen)`, `1:1 (Square)`
-- **Megapixels**: Total pixel count (higher = larger, slower)
-- **Multiple**: Round to this grid; keep **32** for H3
+A 0.4 MP render is fast and fine for drafts. Raise `megapixels` before a final render.
-Templates open at **Megapixels** **0.4**: **864×480** at 16:9, **640×640** at 1:1 (the I2V default). A 0.4 MP render is fast and fine for drafts; raise **Megapixels** before a final render.
+For 16:9 native quality:
-For 16:9 native quality, set **Megapixels** to **0.98** or enter **1344 × 768** on the node. H3 is trained near 1 MP, with a 768-pixel short edge and up to a 768×1344 area. Sizes above 768×1344 render slower without adding detail, and quality drops the further you move from the trained resolution. For 2K, generate at native size and upscale separately.
+- Set `megapixels` to `0.98` or enter `1344 × 768` on the Node.
+- H3 is trained near 1 MP, with a 768-pixel short edge and up to a 768×1344 area. Sizes above 768×1344 render slower without adding detail, and quality drops the further you move from the trained resolution.
+- For 2K, generate at native size and upscale separately.
-The H3 nodes have no 768×1344 cap on output size: `width` and `height` step by **32** up to 16384 per axis. Reference videos on **Reference to Video** are downscaled to fit a 768px short edge and a 768×1344 area. Reference images follow `ref_image_size`: **match** scales them to the generation's pixel area, **max** to a 2048px short edge.
+The H3 Nodes have no 768×1344 cap on output size: `width` and `height` step by `32` up to 16384 per axis. Reference videos on `Reference to Video` are downscaled to fit a 768px short edge and a 768×1344 area. Reference images follow `ref_image_size`: `match` scales them to the generation's pixel area, and `max` scales them to a 2048px short edge.
### Upscaling to higher resolution
-Use a **latent upscaler** on the 24-channel video latent to avoid VAE round-trip ghosting. [Minimax_h3_latent_Upscaler](https://huggingface.co/LBH-123-AI/Minimax_h3_latent_Upscaler) (unofficial) needs [minimax_h3_latent_upscaler_3d_conv_v1_bf16.safetensors](https://huggingface.co/LBH-123-AI/Minimax_h3_latent_Upscaler/blob/main/minimax_h3_latent_upscaler_3d_conv_v1/minimax_h3_latent_upscaler_3d_conv_v1_bf16.safetensors) in `ComfyUI/models/latent_upscale_models/` and its [custom node](https://github.com/LBH-123-AI/Comfyui_Minimax_h3_latent_Upscaler). Chain **Minimax H3 Latent Upscaler (3D)** after a low-res pass (`scale` 1.0–4.0, default 2.0), then re-sample at target resolution.
+Use a latent upscaler on the 24-channel video latent to avoid VAE round-trip ghosting.
+
+1. Install [Minimax_h3_latent_Upscaler](https://huggingface.co/LBH-123-AI/Minimax_h3_latent_Upscaler) (unofficial): its [Custom Node](https://github.com/LBH-123-AI/Comfyui_Minimax_h3_latent_Upscaler) and [minimax_h3_latent_upscaler_3d_conv_v1_bf16.safetensors](https://huggingface.co/LBH-123-AI/Minimax_h3_latent_Upscaler/blob/main/minimax_h3_latent_upscaler_3d_conv_v1/minimax_h3_latent_upscaler_3d_conv_v1_bf16.safetensors), saved in `ComfyUI/models/latent_upscale_models/`.
+2. Chain `Minimax H3 Latent Upscaler (3D)` after a low-res pass (`scale` 1.0–4.0, default 2.0).
+3. Re-sample at the target resolution.
+
+Refine guidance:
-Latent upscale saves time, not peak VRAM (refine still runs at target size). Treat refine as partial denoise: `denoise` **0.1–0.5** keeps composition; go higher only to rework the first pass. Give the refine sampler enough steps to rebuild multistep history (see Sampler and scheduler).
+- Latent upscale saves time, not peak VRAM (refine still runs at target size).
+- Treat refine as partial denoise: `denoise` `0.1`–`0.5` keeps composition. Go higher only to rework the first pass.
+- Give the refine sampler enough steps to rebuild multistep history (see Choosing the sampler and scheduler).
-Video and audio latents are separate (24 + 32 channels). The upscaler only spatially enlarges video; audio is unchanged until refine denoises both. Low refine `denoise` preserves first-pass audio. To keep audio exactly, decode the first pass with `VAEDecodeAudio` before refine and wire that track into final `CreateVideo` (add `SaveAudioAdvanced` for a lossless export).
+Audio handling:
-## Clip length
+- Video and audio latents are separate (24 + 32 channels). The upscaler only spatially enlarges video; audio is unchanged until refine denoises both.
+- Low refine `denoise` preserves first-pass audio.
+- To keep audio exactly, decode the first pass with `VAEDecodeAudio` before refine and wire that track into the final `CreateVideo` (add `SaveAudioAdvanced` for a lossless export).
-H3 is trained on short clips; native nodes accept a wider range without blocking over-length requests.
+## Setting the clip length
+
+H3 is trained on short clips; native Nodes accept a wider range without blocking over-length requests.
Templates expose `duration` in seconds, converted to frames on the `17k+5` grid at 24fps.
@@ -126,93 +169,108 @@ Templates expose `duration` in seconds, converted to frames on the `17k+5` grid
| Frame grid | `17k+5` at 24 fps (124 frames ≈ 5.2 s) |
| Template default | 5 s → 124 frames |
-`duration` and `length` round **up** to the next `17k+5` value: a 5 s request renders 124 frames (5.17 s), and a `length` of 120 also renders 124. Frames pack from frame 0 in 17-frame blocks, so the leftover 5 frames are the last block, not the first. Requests that fall between the same two grid points render the same clip.
+`duration` and `length` round up to the next `17k+5` value: a 5 s request renders 124 frames (5.17 s), and a `length` of 120 also renders 124. Frames pack from frame 0 in 17-frame blocks, so the leftover 5 frames are the last block, not the first. Requests that fall between the same two grid points render the same clip.
-Long clips at full resolution exhaust VRAM first; lower megapixels to fit.
+Long clips at full resolution exhaust VRAM first; lower `megapixels` to fit.
### Chaining clips
Beyond the trained range, chain I2V continuations from each clip's last frame. Errors compound (faces lose texture first); turbo/distilled schedules show burn sooner.
-Use `video_minimax_h3_i2v_continuation` (empty prompt): load the previous last frame, describe the next segment. Prefer short continuous shots and cut before burn shows. For longer chains, [H3-Anti-Burn-LoRA](https://huggingface.co/Imagineer13/H3-Anti-Burn-LoRA/blob/main/h3_antiburn_universal_v1.safetensors) on clips after the first at `strength_model` ~0.5 (tune for your continuation style).
+1. Open `video_minimax_h3_i2v_continuation` (empty prompt).
+2. Load the previous last frame and describe the next segment.
+3. Prefer short continuous shots and cut before burn shows.
-## Step count
+For longer chains, use [H3-Anti-Burn-LoRA](https://huggingface.co/Imagineer13/H3-Anti-Burn-LoRA/blob/main/h3_antiburn_universal_v1.safetensors) on clips after the first at `strength_model` ~0.5 (tune for your continuation style).
-Defaults (Lightning LoRA **off**): **20 steps**. With turbo on: **8** for T2V/I2V (and continuation), **4** for R2V, Multiframe, and Fun ControlNet. On T2V/I2V subgraphs, `turbo_mode`, `turbo_steps`, and `turbo_model_strength` control the distilled LoRA. A 4-step fl2va file is also listed: [`minimax_h3_fl2v_turbo_4step_v1.0_768p_comfyui_bf16.safetensors`](https://huggingface.co/Comfy-Org/MiniMax-H3/blob/main/loras/minimax_h3_fl2v_turbo_4step_v1.0_768p_comfyui_bf16.safetensors) with `turbo_steps` **4**.
+## Setting the step count
-Reference shots need more steps: reference tokens ride every step, so 4-step turbo can barely apply references (pose/face drift). For tight reference match, keep turbo off or raise toward **25**.
+Defaults with the Lightning LoRA off are `20` steps. With turbo on:
-Distilled schedules smooth fine detail (skin, fabric, hair) vs 20-step base. Each turbo file is mode-specific; test at a fixed seed before stacking style LoRAs. `turbo_steps` and `turbo_model_strength` are adjustable: higher steps + lower strength (less than 1) move back toward base quality and cost time. Example: 4-step file at 6–8 steps, strength ~0.8.
+| Template | Steps with turbo on |
+| --- | --- |
+| T2V, I2V, and I2V continuation | `8` |
+| R2V, Multiframe, and Fun ControlNet | `4` |
-Turbo LoRAs shorten the schedule, not per-step time (merged at load). Running a 4-step LoRA at 20 steps takes about as long as base 20 steps.
+Turbo settings:
-Guidance by content:
+- On T2V/I2V Subgraphs, `turbo_mode`, `turbo_steps`, and `turbo_model_strength` control the distilled LoRA.
+- A 4-step fl2va file is also listed: [`minimax_h3_fl2v_turbo_4step_v1.0_768p_comfyui_bf16.safetensors`](https://huggingface.co/Comfy-Org/MiniMax-H3/blob/main/loras/minimax_h3_fl2v_turbo_4step_v1.0_768p_comfyui_bf16.safetensors) with `turbo_steps` `4`.
+- Turbo LoRAs shorten the schedule, not per-step time (merged at load). Running a 4-step LoRA at 20 steps takes about as long as base 20 steps.
-- Simple shots: **12–16** steps often enough
-- High-frequency detail (chainmail, filigree, many small objects): improves up to ~**50**; below that, triangular grid artifacts under motion (worse with turbo)
-- Most motion/prompt gains by step **16**; little visible change past **50**
-- Soft frames at native resolution are usually a resolution issue, not steps
+Reference shots need more steps. Reference tokens ride every step, so 4-step turbo can barely apply references (pose/face drift). For tight reference match, keep turbo off or raise toward `25`.
-Audio converges later than video in the joint denoise. Speech and timbre need **12+** steps; at **8** steps audio is often the weak link.
+Distilled schedules smooth fine detail (skin, fabric, hair) compared with the 20-step base:
-## Sampler and scheduler
+- Each turbo file is mode-specific. Test at a fixed seed before stacking style LoRAs.
+- `turbo_steps` and `turbo_model_strength` are adjustable. Higher steps plus lower strength (less than 1) move back toward base quality and cost time.
+- Example: a 4-step file at 6–8 steps, strength ~0.8.
-Templates use **`res_multistep`** + **`simple`**. T2V/I2V/FastH3 hide these inside the subgraph; R2V, Multiframe, and Fun ControlNet expose `KSamplerSelect` and `BasicScheduler` on canvas.
+Guidance by content:
-`res_multistep` is second-order multistep (first step is Euler). Splitting the schedule across two samplers drops multistep history: the second sampler's first step is first-order again. Keep one sampler run, or give the second enough steps to warm up.
+- Simple shots: `12`–`16` steps often enough.
+- High-frequency detail (chainmail, filigree, many small objects): improves up to ~`50`; below that, triangular grid artifacts under motion (worse with turbo).
+- Most motion/prompt gains by step `16`; little visible change past `50`.
+- Soft frames at native resolution are usually a resolution issue, not steps.
+
+Audio converges later than video in the joint denoise. Speech and timbre need `12`+ steps; at `8` steps audio is often the weak link.
-Default H3 shifts are `shift` **12** and `audio_shift` **3** from the model definition (no extra node). FastH3 templates set **ModelSamplingMiniMaxH3** to `shift_video` **10**, `shift_audio` **3**. Wrong video shift on distilled builds (e.g. **3** instead of **10** on 8-step) can show grid artifacts. Custom finetunes may need their own pair on **ModelSamplingMiniMaxH3** (see the file's model card). [DMAD 4-step LoRA](https://huggingface.co/ZhengmingYu/DMAD/blob/main/minimax_h3/dmad_minimax_h3_4step_full_critic_comfyui.safetensors) uses `shift` **12**, `audio_shift` **2**, **`lcm`** + **`simple`**.
+## Choosing the sampler and scheduler
-## Speeding up generation with Sage Attention
+Templates use `res_multistep` + `simple`. T2V/I2V/FastH3 hide these inside the Subgraph; R2V, Multiframe, and Fun ControlNet expose `KSamplerSelect` and `BasicScheduler` on canvas.
-[Sage Attention](https://github.com/woct0rdho/SageAttention) can roughly **2×** speed with small quality impact (optional install):
+`res_multistep` is second-order multistep (first step is Euler). Splitting the schedule across two samplers drops multistep history: the second sampler's first step is first-order again. Keep one sampler run, or give the second enough steps to warm up.
+
+Shift values:
-1. `pip install` the wheel matching your PyTorch/CUDA from [releases](https://github.com/woct0rdho/SageAttention/releases)
-2. Install [KJNodes](https://github.com/kijai/ComfyUI-KJNodes) for `Patch Sage Attention KJ`
-3. Insert between `UNETLoader` and `BasicGuider`; set `sage_attention` to `auto`
-4. Or launch with `--use-sage-attention`
+| Setup | `shift` (video) | `audio_shift` |
+| --- | --- | --- |
+| Default H3 (from the model definition, no extra Node) | `12` | `3` |
+| FastH3 templates (`ModelSamplingMiniMaxH3` with `shift_video` and `shift_audio`) | `10` | `3` |
+| [DMAD 4-step LoRA](https://huggingface.co/ZhengmingYu/DMAD/blob/main/minimax_h3/dmad_minimax_h3_4step_full_critic_comfyui.safetensors) (`lcm` + `simple`) | `12` | `2` |
-Sage needs float16/bfloat16; some H3 layers use other dtypes and fall back to PyTorch attention (console warnings are normal).
+- Wrong video shift on distilled builds (for example `3` instead of `10` on 8-step) can show grid artifacts.
+- Custom finetunes may need their own pair on `ModelSamplingMiniMaxH3` (see the file's model card).
-### Quality degradation with INT8 attention
+### Avoiding quality degradation with INT8 attention
End-of-clip morphing or garbled on-screen text with Sage often comes from INT8 attention quantization (hot channels in late blocks).
-- Templates use **`int8_convrot`** checkpoints. **Comfy Kitchen does not support them** ([issue #15529](https://github.com/Comfy-Org/ComfyUI/issues/15529)). Use default attention, or switch `UNETLoader` to **`pruned_bf16`** then change backend.
+- **Comfy Kitchen attention** runs on the template **`int8_convrot`** checkpoints in ComfyUI 0.33.0 and later. Earlier versions crash on the first step with a `quant_qk_per_thread_int8` alignment error.
- On **bf16** checkpoints, **Comfy Kitchen attention** (channel rotation before quantize) clears artifacts at similar speed.
-Add **Model Attention Backend** (`comfy kitchen attention`) on the model path to `BasicGuider` (after LoRA/turbo), or use `--use-ck-attention` (0.32.0+). Requires `comfy-kitchen` INT8 kernels on your hardware.
+Add `Model Attention Backend` (`comfy kitchen attention`, experimental) on the model path to `BasicGuider` (after LoRA/turbo), or use `--use-ck-attention` (0.32.0+). Requires `comfy-kitchen` INT8 kernels on your hardware.
## Speeding up generation with sparse attention
-**Model Sparse Attention** (0.35.0+, experimental) cuts attention cost on long clips. For base H3 use `method` **`sol-attn`** (`sla`/`vsa` need matching weights). Needs CUDA + `sol_attn` from `comfy-kitchen`; otherwise layers stay dense.
+`Model Sparse Attention` (0.35.0+, experimental) cuts attention cost on long clips. For base H3 use `method` `sol-attn` (`sla`/`vsa` need matching weights). Needs CUDA + `sol_attn` from `comfy-kitchen`; otherwise layers stay dense.
-- Defaults `start_percent` **0.2**, `end_percent` **1.0**. Later start (~**0.4**) and earlier end (~**0.9**) protect opening/closing frames.
-- Keep **`sink_conditioning`** at **`exact_kv_and_rows`** on H3 (protects packed text/audio/reference rows).
-- **`tau`**: higher = sparser/faster (`1.0` ~16% exact blocks, `1.3` default, `2.0` ~2.7%).
-- Short sequences below `min_tokens` (default **12288**) see little gain.
+- Defaults `start_percent` `0.2`, `end_percent` `1.0`. Later start (~`0.4`) and earlier end (~`0.9`) protect opening/closing frames.
+- Keep `sink_conditioning` at `exact_kv_and_rows` on H3 (protects packed text/audio/reference rows).
+- `tau`: higher = sparser/faster (`1.0` ~16% exact blocks, `1.3` default, `2.0` ~2.7%).
+- Short sequences below `min_tokens` (default `12288`) see little gain.
-FastH3 uses **`vsa`** at `keep_percent` **10**; see [FastH3 page](/tutorials/video/minimax/minimax-h3-fastvideo).
+FastH3 uses `vsa` at `keep_percent` `10`; see [FastH3 page](/tutorials/video/minimax/minimax-h3-fastvideo).
### Checking whether sparse attention is active
-Base H3 templates do not include the node. Add **Model Sparse Attention** between `UNETLoader` and `BasicGuider`, then turn on **`verbose`** (Advanced, off by default) to log one line per attention shape.
+Base H3 templates do not include the Node. Add `Model Sparse Attention` between `UNETLoader` and `BasicGuider`, then turn on `verbose` (Advanced, off by default) to log one line per attention shape.
Calls that stay dense log `dense ( tokens): ` or `dense (, , , ): `. Only the first failing condition is reported:
| Logged reason | What to change |
| --- | --- |
-| `no compiled sol_attn kernel for this GPU` | The installed `comfy-kitchen` has no kernel for your GPU. Update it, or leave the node out on that machine. |
-| ` tokens < min_tokens ` | Raise the resolution or clip length, or lower `min_tokens` (default **12288**). |
+| `no compiled sol_attn kernel for this GPU` | The installed `comfy-kitchen` has no kernel for your GPU. Update it, or leave the Node out on that machine. |
+| ` tokens < min_tokens ` | Raise the resolution or clip length, or lower `min_tokens` (default `12288`). |
| `sigma outside the start/end window` | Widen `start_percent` and `end_percent`. |
| `block in dense_blocks` | Remove that block index from `dense_blocks`. |
| `no H3 layout for this call` | `vsa` only. Select `sol-attn`. |
Calls that succeed log `sparse (, , , ), sinks /` or `sparse producer path: tokens, `.
-Three conditions never log, even with `verbose` on: activations that are not bfloat16 on the H3 path, a `head_dim` other than **128**, and missing rope frequencies all fall back silently.
+Three conditions never log, even with `verbose` on: activations that are not bfloat16 on the H3 path, a `head_dim` other than `128`, and missing rope frequencies all fall back silently.
-`vsa` is bound to the FastH3 checkpoint. It reads a learned coarse branch from `to_gate_compress` layers that only those weights carry, so on any other H3 checkpoint the node prints `VSA: the model has no to_gate_compress layers; running the fine stage without the coarse branch` and runs the fine stage alone. That warning is not gated by `verbose`.
+`vsa` is bound to the FastH3 checkpoint. It reads a learned coarse branch from `to_gate_compress` layers that only those weights carry, so on any other H3 checkpoint the Node prints `VSA: the model has no to_gate_compress layers; running the fine stage without the coarse branch` and runs the fine stage alone. That warning is not gated by `verbose`.
## Commercial licensing