ComfyUI Node

Prediction Boost

Brighter SDXL Output by Rewiring the Noise Prediction (Not by Cranking CFG)

By tmagara·Created 2 years ago·Updated 2 years ago· 1
Prediction Boost
  • model
  • MODEL
version
boost_scale0.00

The whole pitch

Prediction Boost is a one-node pack with a one-line promise: make SD-lineage images come out brighter. Not "slap a brightness LUT on the finished PNG" brighter - the author, tmagara, reaches into the denoising loop and nudges the noise prediction itself, so every step of sampling produces a slightly more luminous image. The README demonstrates it on Animagine XL V3.1 (an SDXL checkpoint) at boost 0.15 against identical prompts at 0.0, and it's a clean, across-the-board lift in brightness and pop.

Let's be honest about the context first. This is a tiny, niche, and genuinely obscure tool: it has essentially zero community footprint (no reddit threads in the corpus, no comfy.icu search traffic), and the repo hasn't been touched since mid-2024. What it has going for it is that it's small and done - one file, no dependencies, no moving parts to rot. If you've ever wanted the "just a bit brighter, please" outcome without re-rolling your whole prompt or sliding CFG into burn territory, this is the targeted dial for it.

How it works

Under the hood it's a model-patch node. It clones your loaded checkpoint and registers a sampler_post_cfg_function - ComfyUI calls that hook after the CFG step at every denoising iteration. Inside, the node reconstructs the model's noise estimate from the standard epsilon-prediction identity:

noise_pred = (input - denoised) / sigma

Then it computes the component of the current noisy latent xₜ that's perpendicular to that noise direction (_rejection in the source). That perpendicular slice is the part of the latent the noise can't explain - i.e. the image signal. Add a scaled chunk of it back to the denoised result and the image comes out brighter and punchier, because you've essentially re-injected signal the sampler was washing out. The README writes the same idea on the noise side as Ɛ̃ ← Ɛ̃ - boost_scale * (xₜ⊥Ɛ̃), which is the same operation with the sign shuffled.

The version input (24.03 / 24.05 / 24.07) isn't model compatibility - those are dated revisions of the math, and the months match the git history. 24.03 was the raw rejection against the full CFG'd prediction. 24.05 rejects against the conditional-only prediction (cond_denoised) and adds a normalization pass that keeps the boost in proportion to the remaining noise. 24.07 does the same normalization but back against the full prediction. Use 24.07; it's the current and most refined method.

The inputs that matter

Only three, and really only one of them is a dial:

  • model - any MODEL. Wire the output of your checkpoint/LoRA stack in here.
  • version - leave on 24.07.
  • boost_scale - a float from −1 to 1, step 0.01. This is the whole game. The author's demos sit at 0.15; the useful range is roughly 0.05–0.2. Flipping the sign pushes the other direction, i.e. darker and flatter.

The single MODEL output goes straight into your KSampler's model input. No KSampler, no effect - this only acts during denoising.

Installing

Standard stuff, and unusually clean: no requirements.txt, no model downloads, no API key, nothing beyond torch which ComfyUI already ships.

cd ComfyUI/custom_nodes
git clone https://github.com/tmagara/ComfyUI-Prediction-Boost

Restart ComfyUI and the node shows up in the advanced/model category. It's also in the Comfy Registry ([tool.comfy] in its pyproject), so ComfyUI Manager can find it by searching "ComfyUI-Prediction-Boost."

Gotchas worth knowing

  • The default is a no-op. boost_scale defaults to 0.0, so the node does nothing until you actually set it. Easy to wire up, scratch your head, and walk away.
  • It's epsilon-prediction math, full stop. (input − denoised)/sigma is only the noise estimate on SD 1.5 / SDXL / Illustrious-style checkpoints. On flow-matching models (Flux, Z-Image) or v-prediction checkpoints that identity doesn't hold, so behavior there is undefined - treat this as an SDXL-family tool, which is exactly what the author demos it on.
  • Tune it yourself. With zero community discussion, there's no "everyone runs 0.17" to copy. Change only boost_scale, keep a fixed seed, and A/B a couple of values - the same discipline you'd use for CFG, and the same way to tell a real improvement from a luckier seed.

It won't fix a dark prompt or a dim checkpoint on its own, but for the "everything is a little flat" problem it's the cleanest small tool of its kind.

Categoryadvanced/model

Inputs (3)

NameTypeDefaultDescription
modelMODEL
versionCOMBO3 options: 24.03, 24.05, 24.07
boost_scaleFLOAT0.00-1–1

Outputs (1)

NameTypeDescription
MODELMODEL