Nodes/ComfyUI-Krea2-FlowLab/K2 Native Scheduler
ComfyUI Node

K2 Native Scheduler

Krea 2's sigma grid, straight from the model's own mouth

By ekkonwork·Created 2 months ago·Updated 2 months ago· 0
K2 Native Scheduler
  • model
  • sigmas
steps8
denoise1.00
profilenative

The scheduler is where most people quietly ruin a Krea 2 render. Krea 2 is a flow-matching model, and on those, the old rules invert: Karras and exponential schedules that used to be safe defaults now actively distort the image, because the model was trained on a near-straight noise-to-data path and wants a grid that matches its own. Krea 2 Turbo is distilled on top of that, which makes it worse - a distilled student only really knows the noise levels it saw in training, so a generic scheduler feeds it steps it was never meant to take.

K2 Native Scheduler is the pack's answer: it reads the sigma schedule straight out of the model's own model_sampling configuration and builds a Krea-2 shifted flow grid from it. The native profile reproduces exactly the shift that's baked into the checkpoint - 1.15 for the official Turbo model - instead of guessing one. If you only take one node from ComfyUI-Krea2-FlowLab, this is the one I'd grab, because it's the piece that encodes model-specific knowledge the stock dropdown doesn't have.

How it works

It generates a uniform flow-time grid (u from 0 to 1, mapped to t from 1 to 0), warps it per profile, then pushes it through model.get_model_object("model_sampling").sigma(...). For DiscreteFlow samplers - which is how ComfyUI registers Krea 2, as a constant-flow model - it scales by the model's own multiplier (1000) first. Then it validates the result: clamps sigmas into [0, 1], enforces monotonicity, and forces the final sigma to 0.

That last part matters more than it sounds. It's why the endpoints are exact: no surprise residual noise on the last step, and the schedule always lands the model exactly on clean output at the end. For partial denoise it computes a longer grid and trims the tail, so your effective steps still sit on the model's native grid rather than a rescaled approximation.

Profiles and the input that matters

The inputs are boring in the best way: model (just wire in your loaded Krea 2), steps (8 is the Turbo default), denoise (1.0), and profile:

  • native - uniform flow time plus the model's configured shift. The default, and the one you want for Turbo.
  • balanced - mild endpoint emphasis, a smoother blend between the two.
  • structure - spends more of the schedule near the noisy/structural start (where composition is set).
  • detail - spends more near the clean/detail end.

The output is a single sigmas (SIGMAS) socket.

Wiring it

MODEL ─────────────────────► K2 Native Scheduler ─► SIGMAS
K2 Flow Sampler ──────────────────────────────────► SAMPLER
RandomNoise + CFGGuider + LATENT + both ──────────► SamplerCustomAdvanced

That's the modular path from the pack's README - the scheduler feeds SamplerCustomAdvanced, alongside the SAMPLER object from K2 Flow Sampler. The all-in-one K2 Advanced Sampler builds the same grid internally if you'd rather have one node.

Installing it

No pip install, no model downloads - it only reads what your loaded model already carries.

cd ComfyUI/custom_nodes
git clone https://github.com/ekkonwork/ComfyUI-Krea2-FlowLab.git

Restart ComfyUI, and optionally run python custom_nodes/ComfyUI-Krea2-FlowLab/verify_install.py from the ComfyUI root.

Common issues

  • Nodes don't show up - folder must be exactly ComfyUI/custom_nodes/ComfyUI-Krea2-FlowLab, full restart, check the console for IMPORT FAILED.
  • Grid looks off on a non-Turbo model - native is only "native" for a checkpoint whose model_sampling carries the shift. On Krea 2 Raw (the CFG-guided base), you're on the same architecture but a different schedule story; keep steps higher and don't expect the 8-step distilled behavior.
  • You don't see a speed change - right, you shouldn't. This node changes where the steps land, not how many there are; one step is still one DiT call.

Worth repeating: this is an experimental pack from a solo author, and the "native is better" claim is worth verifying on your own seed. But the mechanism - reading the schedule from the model instead of approximating it - is the right instinct for distilled flow models, and that's why this node is the pack's most broadly useful piece.

Categorysampling/custom_sampling/Krea2 FlowLab

Inputs (4)

NameTypeDefaultDescription
modelMODEL
stepsINT81–1000
denoiseFLOAT1.000–1
profileCOMBOnative4 options: native, balanced, structure, detail

Outputs (1)

NameTypeDescription
sigmasSIGMAS