K2 Native Scheduler
Krea 2's sigma grid, straight from the model's own mouth
- model
- sigmas
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 forIMPORT FAILED. - Grid looks off on a non-Turbo model -
nativeis only "native" for a checkpoint whosemodel_samplingcarries the shift. On Krea 2 Raw (the CFG-guided base), you're on the same architecture but a different schedule story; keepstepshigher 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.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| steps | INT | 81–1000 | — |
| denoise | FLOAT | 1.000–1 | — |
| profile | COMBO | native | 4 options: native, balanced, structure, detail |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| sigmas | SIGMAS | — |