H3 Expert Schedule (base head, turbo tail)
Base model starts the structure, turbo finishes the polish
- model
- head_sigmas
- tail_sigmas
H3 Expert Schedule is the speed/quality compromise the pack eventually settled on for its fast de-rope path: a base-model head for structure, then a turbo LoRA tail for the refinement. It's one of those nodes that looks like a scheduler and behaves like a workflow opinion - it splits a single continuous denoise schedule into two sigma slices that are meant to run on different models.
The reasoning is the standard distillation trade. Distilled (turbo) models are great at the last few steps - they finish detail fast and cheaply - but they're not where you want broad structure decided, and running them on the whole trajectory can cost you motion. So the Expert schedule gives the first base_head steps to the base model, where the least-distilled weights form the composition, then hands the rest to the turbo LoRA's native step count for the polish. The README calls the variant that starts the turbo preview on the base model for the first couple of steps a wrinkle that "earned its keep" - this node is the same idea, standardized.
How it works
It computes a full schedule with calculate_sigmas, truncates to the injected fraction (default inject 0.70 → 6 of 8 steps run), then splits that slice at base_head. Outputs are two SIGMAS:
head_sigmas- firstbase_headsteps, wired into a SamplerCustomAdvanced on the plain model with your RandomNoise.tail_sigmas- the rest, wired into a second SamplerCustomAdvanced on the LoRA-patched model withDisableNoise, continuing the head's output latent.
Defaults: total_steps 8, inject 0.70, base_head 2 - so the turbo tail gets 4 steps, its native count. That last bit matters: a distilled LoRA's step budget is sized for a full denoise, and pass 2 is partial, so you want the tail at roughly the LoRA's own step count, not more.
The inputs that matter
model (needed for schedule math - either model works for computing sigmas, but base is the sane choice), scheduler (default beta, matching the pack's turbo graphs), total_steps, inject, and base_head. That's it. If you're running this on the fast pipeline, the README's guidance is base_head 2 with inject 1.0 on the turbo-preview experiment; for the straight de-rope keep inject near the 0.5–0.8 window you'd use with H3 Inject Schedule.
The honest caveat
The "turbo for the final" recipe is the pack's iteration path, not its keeper path. The README is unusually direct about it: turbo is for getting your prompt right, the full pipeline is for the keeper, and mixing them is a waste of time - putting the turbo LoRA inside the regeneration pass saves minutes on a clip you've already decided deserves the full treatment, and costs quality on exactly that clip. Use Expert Schedule when you're iterating or when your card won't fit a full 25-step pass. For the final, run the base model.
Installing it
Pure-Python pack:
cd ComfyUI/custom_nodes
git clone https://github.com/matlowai/ComfyUI-MAINodes
Restart, look under sampling/custom_sampling/schedulers. Example graphs want ComfyUI-KJNodes; the nodes don't. And you'll need MiniMax H3 weights - community-licensed, so check your region (US, EU, UK, South Korea excluded) before relying on it.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| scheduler | COMBO | beta | 6 options: simple, normal, beta, sgm_uniform, karras, exponential |
| total_steps | INT | 84–100 | — |
| inject | FLOAT | 0.700.05–1 | — |
| base_head | INT | 20–20 | steps run on the base model before the turbo tail |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| head_sigmas | SIGMAS | — |
| tail_sigmas | SIGMAS | — |