FastH3 V2 · Actual Dispatch Audit (T8 EXP)
Did the sparse attention actually run? The 30-second check people skip
- model
- sampled_av_latent
- av_latent
- report_json
What it's for
Two inputs, two outputs, and no generation whatsoever. You feed it the model that came out of the FastH3 V2 recipe node and the sampled_av_latent that came out of your sampler; it hands you av_latent straight through and a report_json string.
Its job is to answer one question that a video file cannot: did the sparse attention path actually execute, or did you quietly pay full dense-attention prices and get a perfectly normal-looking MP4 anyway? That failure mode is real and boring. The recipe node's min_tokens default is 12288, so short test renders fall below the eligibility floor, take the Dense route, and report nothing unless you go look. Anyone tuning steps, profiles or memory nodes wants this wired in permanently - it's the difference between "it got faster" and "I assume it got faster."
How it works
The recipe node installs a runtime owner on the MODEL branch. This node looks that owner up and validates it before reading anything: the receipt has to match the expected schema, the profile has to be a known one, the runtime token in the transformer options has to be the same object, and the wrapper plus the prepare/cleanup callbacks have to still be the ones that were installed. Only then does it dump the snapshot as JSON. Practical upshot: the numbers come from the branch that actually ran, not from a config the node guessed at.
What's in the report: the profile, counts (sparse versus dense), dense_reasons so you can see why an eligibility check failed, per-sigma step counts, head_chunks, and the flags worth reading first - actual_vsa_dispatched, attention_dispatch_observed, and dense_sol_backend with its own report when an external Sol backend is attached. Also two fields that set the tone: quality_accepted: false and performance_guarantee: false. This node is instrumentation, not a certificate. Nothing about it says your video is good.
Reading it without fooling yourself
On trained_vsa_exp the counts are meaningful: sparse dispatches and Dense eligibility fallbacks are both tallied, and the per-step breakdown tells you which sigmas fell back, which is exactly what you want when you're tuning min_tokens.
On dense_compat_exp the sparse observer isn't installed at all, so the count is empty by design - and the node says so in dense_profile_note, with attention_dispatch_observed false unless an external backend is attached. Empty is not "zero fallback." It is not evidence of speed, either. If you want real dispatch numbers on the dense profile, that measurement needs separate instrumentation.
Two ways to get errors instead of a report. If you splice this into a MODEL branch that never went through the recipe node, it raises ValueError: FastH3 V2 runtime owner missing - you can't audit a raw loader. And if some later node has replaced the model wrapper, the callbacks or the runtime token, the ownership checks fail. When that happens, treat it as a finding: something else is patching your branch, and that's probably why your results don't match the recipe.
One ComfyUI-wide thing to keep in mind: the engine only re-executes nodes whose inputs changed, and it caches aggressively (plumbing layer). If your sampler output came back from cache, you won't get a fresh report - change a seed or a parameter and run again before concluding anything.
Wiring and installing
Put it after sampling and before decode, then keep going to your save node - av_latent is a pass-through, so it doesn't disturb the graph. Note that this node is not an output node, so nothing gets written unless you feed a Save/Preview downstream.
Install is the same as the rest of the pack: ComfyUI Manager, search MiniMax H3 Audio T8, restart fully, or clone it manually.
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/comfyui-minimax-h3-audio-T8.git minimax-h3-audio-T8
No extra dependencies, nothing to download for this node specifically - but it only reports on a FastH3 V2 branch, so the 22 GB FastH3 student and a ComfyUI new enough to ship native H3 sparse-attention support are prerequisites either way.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| sampled_av_latent | LATENT | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| av_latent | LATENT | — |
| report_json | STRING | — |