Nodes/ComfyUI-MAINodes/H3 Expert Schedule (base head, turbo tail)
ComfyUI Node

H3 Expert Schedule (base head, turbo tail)

Base model starts the structure, turbo finishes the polish

By matlowai·Created 17 days ago·Updated about 18 hours ago· 112
H3 Expert Schedule (base head, turbo tail)
  • model
  • head_sigmas
  • tail_sigmas
schedulerbeta
total_steps8
inject0.70
base_head2

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 - first base_head steps, 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 with DisableNoise, 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.

Categorysampling/custom_sampling/schedulers

Inputs (5)

NameTypeDefaultDescription
modelMODEL
schedulerCOMBObeta6 options: simple, normal, beta, sgm_uniform, karras, exponential
total_stepsINT84–100
injectFLOAT0.700.05–1
base_headINT20–20steps run on the base model before the turbo tail

Outputs (2)

NameTypeDescription
head_sigmasSIGMAS
tail_sigmasSIGMAS