SD3LowResDenoise
Denoise small, decide later
- model
- conditioning
- latent
- noise_state
- negative_conditioning
- latent
- debug_info
SD3LowResDenoise is the first half of the pack's two-stage RALU implementation for SD3. The idea is the same as the FLUX side - don't waste full-resolution compute on the whole image for the whole schedule - but SD3 gets a deliberately simpler version: denoise at low resolution, then hand off to SD3HighResDenoise for an upsampled finish. In the author's own words, this SD3 path is "a two-stage approximation," built mainly to study grid artifacts and SD3's latent-grid limitations. So treat it as an experiment you can run, not a tuned-up feature.
What it does
The node takes your SD3 latent (typically from EmptySD3LatentImage), runs a shift-aware denoise pass at low resolution, and - this is the important part - stashes the computed RALU parameters inside the latent's metadata (ralu_sd3_target_h, ralu_sd3_target_w, the stage params, and more). The high-res node reads those keys back out. That's why they're designed to be chained: SD3LowResDenoise → SD3HighResDenoise, with the latent as the handoff.
The low-res pass uses stage one of the two-stage schedule: default shift 5.87 for the first stage, Z = 6.317 (the same value as FLUX RALU level 4), and an Euler-style denoise loop.
Inputs worth knowing
latent- your empty SD3 latent. The node fixes channels and computes the target high-res size from it.noise_state- feed it fromRALUNoiseSource; the seed here drives the noise that starts the whole process.lowres_steps(default 10) andhighres_steps_hint(default 20) - steps for each stage.highres_steps_hintis just a hint; the high-res node ultimately owns its own step count.e_transition(default 0.35) - where the schedule transitions from the low-res to the high-res regime.downscale_factor- locked at exactly 2 (the min and max are both 2). Set anything else and it raises.cfg_scale(default 5.0) - SD3 is CFG-friendly, unlike FLUX, so this is a real knob here.use_ralu_default- when true, steps and transition are locked to the researched presets (N=[10,20], e1=0.35).
Outputs are latent and debug_info (a JSON string with the stage report). You'll decode the final image after the high-res node, not this one.
Installing
cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/Milkyawaway/comfyui-ralu-sampling.git
cd /path/to/ComfyUI
python -m pip install opencv-python numpy typing-extensions
python main.py
ComfyUI Manager search "comfyui-ralu-sampling" also works; restart after install. You'll want sd3.5_large.safetensors and its text encoders in the standard model folders - the shipped sd3.5-ralu.json example wires everything up (SD3 LowRes → HighRes → VAEDecode).
Common issues
- You forgot the high-res node. The low-res node alone won't give you a clean image at full size - it hands off a half-res latent plus metadata. Chain it to
SD3HighResDenoise. - "supports only 2x upscale factor" -
downscale_factoris fixed at 2; don't change it. - "missing RALU params" on the high-res node - the latent came from somewhere other than
SD3LowResDenoise. The metadata didn't survive; rerun through this node. - Old ComfyUI shows no nodes - this pack uses the modern
comfy_api.latestregistration; update ComfyUI.
If you want the whole SD3 RALU pass without managing the handoff yourself, skip to SD3TwoStageDenoise, which runs both stages in one node. But if you want to watch the two-stage behavior separately - which is what the author did when studying those grid artifacts - this is the front half of the microscope.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| model | MODEL | — | |
| conditioning | CONDITIONING | — | |
| latent | LATENT | — | |
| noise_state | NOISE | — | |
| lowres_steps | INT | 101–10000 | — |
| e_transition | FLOAT | 0.350.01–0.99 | — |
| downscale_factor | INT | 22–2 | — |
| cfg_scale | FLOAT | 5.000–100 | — |
| use_ralu_default | BOOLEAN | true | — |
| highres_steps_hint | INT | 201–10000 | — |
| negative_conditioningopt | CONDITIONING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| latent | LATENT | — |
| debug_info | STRING | — |