Nodes/BSAI-ComfyUI-FastH3/BSAI FastH3 Timesteps (4-step / 8-step / OmniRef)
ComfyUI Node

BSAI FastH3 Timesteps (4-step / 8-step / OmniRef)

Your 4-Step H3 Model Wants 999, 749, 500, 250 — Not Even Steps

By xm6018924·Created 2 months ago·Updated 9 days ago· 9
BSAI FastH3 Timesteps (4-step / 8-step / OmniRef)
  • model
  • SIGMAS
◄ladder999,749,500,250►
◄recipe8-step OmniRef (999,874,749,624,500,375,250,125 · shift 12/3 · keep 10%)►

Every distilled model has the same trap built in: the sampler's notion of "four steps" is a uniform grid of noise levels, and the model was never trained on a uniform grid. It was trained on specific jump points. Feed it the wrong ones and it doesn't error, it just quietly produces worse video than the model is capable of - which is a much harder bug to notice than a crash.

BSAIFastH3Timesteps is the smallest node in the pack and the one that keeps everything else honest. It turns FastH3's explicit training ladder into a SIGMAS tensor you can hand to SamplerCustomAdvanced.

The three ladders

The pack bakes in three official recipes, and each one is a different list of timesteps:

| recipe | Ladder | Forwards | |---|---|---| | 4-step Preview (…) | 999,749,500,250 | 4 | | 8-step V2 (…) | 999,874,749,624,500,375,250,125 | 8 | | 3-step TaoMate (…) | 999,750,500 | 3 |

Those numbers aren't a tuning preference, they're the DMD2 distillation's training contract. The 8-step V2 ladder is denser at the top (999 → 874 → 749) because the V2 checkpoint was trained to make eight smaller corrections rather than four big ones, and it runs on a different video shift (10 instead of 12). The TaoMate ladder belongs to Alibaba's 3-step LoRA on the stock H3 base, a completely different stack - don't mix its ladder with FastH3 weights and expect anything sane.

Nine sigma points for V2 means eight forwards, since the last point is the final jump to clean latent. That's why the official reference script asks for nine steps where you'd intuitively type eight.

What the node does with them

It's a one-trick node and the trick is short: for each value in the ladder it asks the model's own model_sampling object for the corresponding sigma, collects the results, and appends 0.0 so the last step lands on a clean latent. The author's test log shows what comes out for the 4-step ladder at shift 12 - [0.9999, 0.9728, 0.9231, 0.8, 0.0] - and for V2 at shift 10, [0.9999, 0.9858, 0.9676, 0.9432, 0.9091, 0.8571, 0.7692, 0.5882, 0.0].

That's the reason the node takes a MODEL input at all, and it's where the one real gotcha lives: the sigma values depend on the model's shift, so wire the model after the VSA node. BSAIFastH3NativeVSA is what patches the model's video shift to 10 for the V2 recipe. Feed this node the pre-VSA model and you'll get a perfectly valid 9-point SIGMAS computed against shift 12 - silently wrong, no error, just a slightly worse clip. Same patched model into both nodes, always.

ladder is a free-text string, active only when recipe is custom. It's forgiving about formatting: it strips brackets and converts full-width commas, so pasting [999,749,500,250] from a model card works. You'll want custom mainly for the PDD 8-step acceleration track or a MotionFix-driven ladder - otherwise leave the recipe dropdown alone, because it overrides your string anyway.

Output is SIGMAS, and it goes into the sigmas input of SamplerCustomAdvanced. Not a KSampler - that node builds its own schedule from a step count and a scheduler, which is precisely what you're trying to bypass. Pair it with BSAIFastH3EulerSampler in the sampler input and the pair handles any step count, because the sampler just advances however many sigmas it's handed.

Install

Manager, search BSAI-ComfyUI-FastH3. Or:

cd ComfyUI/custom_nodes
git clone https://github.com/xm6018924/BSAI-ComfyUI-FastH3.git

Restart ComfyUI. Nothing to install - no requirements file, no model download specific to this node. The weights (FastH3 _4step or _8step/v2 checkpoint, Qwen3-VL text encoder, int8 video VAE, fp32 audio VAE) are shared across the pack and live in the README's model table.

When it misbehaves

The one hard error is ladder needs at least 2 timesteps, which means your custom string was empty or a single number. Everything else is quiet.

If your 8-step V2 renders look soft or smear on fast motion, check the sigma line the node prints in the console - it prints the ladder and the resulting sigmas on every run, and comparing it to the numbers above tells you instantly whether the shift patch landed.

And if you're debugging with BSAIFastH3VSAStats, the node's model shift (v/a) line is the fastest confirmation that the model hitting this node is the patched one: 10.0 / 3.0 for V2, 12.0 / 3.0 for the 4-step and TaoMate recipes.

CategoryBSAI/FastH3

Inputs (3)

NameTypeDefaultDescription
modelMODEL—
ladderSTRING999,749,500,250Explicitly trained ladder (the official requirement is to sample at training jump points, not a uniform grid). 4-step v1/v0.2: 999,749,500,250; 8-step V2: 999,874,749,624,500,375,250,125; 3-step TaoMate: 999,750,500. Effective when recipe=custom. Can be driven by BSAI H3 MotionFix.ladder.
recipeCOMBO8-step OmniRef (999,874,749,624,500,375,250,125 · shift 12/3 · keep 10%)Official one-click recipe ladders. 8-step V2 uses the training ladder 999,874,749,624,500,375,250,125 (9 sigma points = 8 forwards); 8-step OmniRef uses the same 8-step ladder; 4-step Preview: 999,749,500,250; 3-step TaoMate uses 999,750,500 (4 sigma points = 3 forwards). custom: use the ladder string above.

Outputs (1)

NameTypeDescription
SIGMASSIGMAS—