RUM FLUX.2 Diffusers Scheduler
Sigmas that match the Flux2Klein pipeline, not ComfyUI's guess
- sigmas
RUMFlux2DiffusersScheduler is the pack's answer to "ComfyUI's FLUX scheduler is close, but close isn't RUM." It produces the sigma schedule the way diffusers' Flux2KleinPipeline does - np.linspace(1.0, 1.0 / steps, steps) with a time shift tuned to the image size - instead of ComfyUI's built-in Flux2Scheduler approximation. Same idea, different numbers, and when your goal is matching the upstream reference, the numbers are the point.
Why does a scheduler need to know width and height? Because the time shift (the mu parameter) in this pipeline is computed from the image's sequence length - roughly width * height / (16*16) tokens - using an empirical fit. A 960×1152 image shifts differently from a 656×1200 one. That's why this node takes dimensions, not just steps: it recomputes the shift per size, which is something a generic scheduler node can't do for you.
Inputs and output
steps- default 20; the RUM workflows sample at 20. This is a base-model path with real CFG, not a distilled 4-step schedule.width/height- your actual latent resolution. Set these to match yourEmptyLatentImage, or the shift will be wrong.
Output is a SIGMAS tensor (including the trailing zero) that feeds SamplerCustomAdvanced, paired with RUMFlux2DiffusersEulerSampler.
When it matters
The shipped workflows use this node, and if you're reproducing RUM's reference outputs you should too - the pack's changelog describes getting the scheduler and timestep handling right as one of the "solved alignment problems." But here's the calibration: for day-to-day anime generation, ComfyUI's own FLUX scheduler will produce a picture, and unless you're doing pixel-level validation against the upstream dump you may never notice the difference. This node is the reference-behaved choice, not the only choice.
The real gotcha is consistency: this node's sigmas are built for the RUM Euler sampler's raw-noise stepping. Pair them with a stock sampler and you're mixing two pipelines' assumptions. Keep the scheduler, noise, sampler, and guider from this pack together, and you're on the diffusers-match path. Start swapping in stock nodes, and "same seed, different result" becomes a feature, not a bug - you left the path.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Rinne414/ComfyUI-RUM
cd ComfyUI-RUM
pip install -r requirements.txt
python scripts/download_models.py --comfy-root /path/to/ComfyUI --include-teacher-clip
Restart ComfyUI. Requirements are light (safetensors, huggingface_hub, numpy, pillow - numpy is the one actually doing the scheduling math here), but the ComfyUI version matters: v0.26.2+ for the sampler APIs this chain needs.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| steps | INT | 201–4096 | — |
| width | INT | 96016–16384 | — |
| height | INT | 102416–16384 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| sigmas | SIGMAS | — |