Nodes/ComfyUI-Hyperflow/Apply HyperFlow (MiniMax-H3 8-Step)
ComfyUI Node

Apply HyperFlow (MiniMax-H3 8-Step)

8-step MiniMax-H3, and the sigma wire everyone forgets

By Saganaki22·Created 5 days ago·Updated a day ago· 55
Apply HyperFlow (MiniMax-H3 8-Step)
  • model
  • model
  • sigmas
hyperflow_file
strength1.00
lora_modebypass
variantauto
download_if_missingfalse
verbosefalse
experimental_curve_refitfalse

Why this node exists

MiniMax-H3 is a 33B omni-modal video model that generates picture and native stereo audio together. It's also slow: a full multi-step schedule on a 33B model is the kind of render you start and then go do chores. HyperFlow is Video Rebirth's 8-step adapter for it - same family as the Lightning/Turbo/DMD LoRAs every image model got, where a student learns to make the teacher's multi-step trajectory in a handful of larger jumps.

ApplyHyperFlow is Saganaki22's port of that adapter onto ComfyUI's native MiniMax-H3 - no core files patched, no custom sampler, no API key. It's a model-patch node: it sits between the model loader and the sampler, exactly like a LoRA loader.

One thing worth knowing before you install anything. The standalone converted LoRAs floating around (drbaph/MiniMax-H3-Turbo-Lora-ComfyUI) load with the stock Load LoRA node and need nothing from this pack - but they apply the backbone LoRA only. The two-time conditioning is exclusive to this node, so without it the output drifts off the released model.

How it works, in one paragraph

Two mechanisms stacked. First, a rank-256 LoRA with unmerged bf16 branches. Second, two-time (t, r) conditioning: instead of conditioning each step on the point t, everything is conditioned on the interval it integrates, r = 1 - sigma_next, blended as t_emb = emb_t(t) + gate * (emb_r(r) - emb_t(t)). emb_t is the model's own time embedder; emb_r is a re-implementation on raw weights, so the endpoint branch reads unmodified numbers. Distinct (t, r) rows are preserved through the native blocks and output heads, including the first step where video and audio share t = 0. All of it rides ComfyUI's ModelPatcher machinery - forward patches and weight adapters, nothing monkey-patched.

The inputs you actually touch

  • model - the MiniMax-H3 model from your checkpoint/Load Diffusion Model node. Chain it once; the node raises an error if HyperFlow is already applied.
  • hyperflow_file - a dropdown off ComfyUI/models/hyperflow/. If it's empty, nothing is downloaded yet.
  • strength - leave at 1.0. That is the released model. It's here for tuning, not for a quality knob.
  • lora_mode - bypass (default) applies the LoRA at runtime: sharpest, and it matches the reference's unmerged bf16 branches. merge folds it into the weights: lowest VRAM, and it softens things on quantized bases. Merging quantized weights changes numerical results - that's not superstition, it's arithmetic.
  • variant and download_if_missing - the toggle is off by default. Turn it on and it pulls auto (matching the detected base) from drbaph/Hyperflow-Comfyui into models/hyperflow, fetching exactly the published .safetensors and nothing else. variant is ignored once a file is on disk.
  • verbose - logs the applied modules and the per-step (t, r) context. Genuinely useful the first run.
  • experimental_curve_refit (optional) - only for pruned bases. Right-click → show optional widgets if you can't see it.

The output people miss

model goes onward as usual. sigmas is the important one: it's the trained 9-point sigma grid (shifted with the video shift of 12, i.e. nine sigmas and eight Euler steps). Wire it into SamplerCustomAdvanced in place of a scheduler - not as a scheduler input, as the sigma input. Drop your BasicScheduler entirely. Use Euler; other samplers are ablations of the recipe. The (t, r) endpoints are derived from sample_sigmas, so any core sampler will technically run.

Optionally stack the core Model Attention Backend and Model Sparse Attention nodes after it. The validated sol-attn mapping is start_percent = 0.16, dense_blocks = "0,1", tau = 1.0, sink off, extra_tokens = 0, and start_percent is measured on the unshifted noise clock, not as a fraction of steps. SLA is a different sparse method - don't use it unless your weights were trained for it.

Install

ComfyUI Manager → search ComfyUI-Hyperflow → install → restart. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/Saganaki22/ComfyUI-Hyperflow

Then grab one file into ComfyUI/models/hyperflow/:

custom_node_hyperflow_8step_v1.0_comfyui.safetensors          (3.67 GiB, the released model)
custom_node_hyperflow_8step_v1.0_comfyui_pruned.safetensors   (3.64 GiB, pruned/curve bases)

You only ever download the .safetensors; the manifests ship in the pack's assets/. There is nothing to pip install - the pack declares zero dependencies and leans on torch plus ComfyUI's own huggingface_hub. It wants the ComfyUI-converted file; the original diffusers-layout one is rejected with a clear message rather than converted on the fly.

Where people get burned

Base/adapter mismatch. A full build on a pruned base, or the reverse, throws an explicit error naming the file you should have picked. Pruned bases have no time_embedder, so two-time conditioning can't apply; by default you get backbone-LoRA-only, single-time, off-recipe. That's what experimental_curve_refit is for, and even then it recovers most, not all, of the missing signal.

Stuck at "Model Initializing" after a ComfyUI update. That status covers the whole first step - deferred weight loading and LoRA merging included - so it doesn't prove a compiler hang. Restart with --disable-fast-disk and retry as a diagnostic; the author is explicit that this is not a confirmed fix.

Quantized bases. If the base folds a LoRA target into a fused kernel there's no module to hook, so those targets get routed through merge automatically (N fused/int8 targets via merge in the console). Nothing is silently dropped.

Finally, the boring-but-real one: the weights are a Model Derivative of MiniMax-H3 under the MiniMax H3 Community License, whose Applicable Territory excludes the US, EU, UK and South Korea. The pack's code is Apache-2.0; the weights are not.

Categorymodel_patch/video

Inputs (8)

NameTypeDefaultDescription
modelMODELThe MiniMax-H3 diffusion model to patch. Chain once, between the model loader and the sampler.
hyperflow_fileCOMBOThe ComfyUI-converted HyperFlow weights (models/hyperflow). Get the converted build from the HyperFlow Hugging Face repo: one .safetensors, ComfyUI module paths, no on-the-fly conversion.
strengthFLOAT1.000–2Adapter strength. 1.0 is the released model.
lora_modeCOMBObypassbypass (default): LoRA applied at run time -- sharpest, matches the reference's unmerged bf16 branches. merge: folded into the weights -- lowest VRAM, softer on quantized bases.
variantCOMBOautoWhich converted build to fetch when downloading: auto (default) matches the detected base model; full = non-pruned base (the released model); pruned = backbone-only build for pruned/curve bases. Ignored when the file is already on disk.
download_if_missingBOOLEANfalseDownload the chosen variant from the configured Hugging Face repo (drbaph/Hyperflow-Comfyui) into models/hyperflow when no weights file is there. Fetches exactly the published .safetensors -- nothing else. Requires internet.
verboseBOOLEANfalseLog the applied modules and the per-step (t, r) context.
experimental_curve_refitoptBOOLEANfalseExperimental checkpoint-bound conditioning fit. Exact file match applies silently; byte-different copies of the fitted base/adapter (mirrors, HF downloads) apply best-effort with a warning. Needs strength 1 and the default gate/sigmas; anything unknown uses backbone only.

Outputs (2)

NameTypeDescription
modelMODEL
sigmasSIGMAS