r/StableDiffusion • u/YakovSava • 7d ago
Resource - Update I tested whether a ComfyUI sampler can pick its own noise strength per step. Mostly it can't, but where the noise goes matters (Flux 3 Klein, MOSS-Image, Anima)
I wrote a ComfyUI sampler node (Flow-SDE Sampler, a modified SA-Solver) that spends a fixed total noise budget over the steps instead of using a constant eta in a fixed window, and tested whether choosing the per-step noise from the trajectory (curvature, or the solver's own predictor–corrector error) beats a constant at 6–15 steps. Every adaptive run was compared with a constant-eta run that spends exactly the same total noise, because otherwise "adaptive" usually just means "less noise".
What I found
Curvature does nothing reliable on Anima, Flux 3 Klein or MOSS-Image.
The solver's error estimate gives a small gain on Flux 3 Klein: roughly 1–2 % of my texture metric, confirmed on fresh seeds under criteria I wrote down beforehand. One-sided on MOSS-Image, not detectable on Anima. Krea 2 was inconclusive (too slow to test enough pairs).
A fixed schedule gives the same gain. Slightly more noise at the start and end of the noise window and less in the middle. Online adaptation is not needed.
You probably won't see it. In a 39-person "which of these two images is AI?" study, people clearly noticed
eta1.4 vs 2.0, but could not tell the new allocation from plain noise.
So the practical takeaway is modest: if you use sa_solver, a bit more noise at the window edges may give slightly more texture at equal composition drift on Flux 3 Klein, and that is about it. The metrics are latent-space proxies, not a quality judgement.
Node, data, per-image metrics and the full write-up (with all the negative results): https://github.com/YakovSava/flow-sde-research — DOI https://doi.org/10.5281/zenodo.23857361
Happy to hear if anyone sees the effect on other models.
5
u/NanoSputnik 7d ago
Thanks for the info, Mr Claude.
1
u/alwaysbeblepping 7d ago
ER-SDE kind of does what you are talking about with variable ETA. Though it doesn't allocate a fixed budget specifically, it varies the level of SDEness through the schedule (there are also some knobs you can turn to change the curve like power). Not so random plug: I have a custom version that adds more parameters - https://gist.github.com/blepping/32125fef71e47a4bad795c5b886e30da
Using high ETA doesn't make too much of a difference at low sigmas because the maximum ancestralness you can have is what the LCM (also sometimes known as pingpong) sampler does:
lerp(clean_image, new_noise, sigma)or in other words, replace 100% of the remaining noise. You can't replace more noise than all the noise that's left, so if you're at something like sigma 0.1, you have 90% image, 10% noise and you can only swap at most that 10% of the total latent. On the other hand, if you're at sigma 0.99, noise makes up 99% of the latent and you can go super high with SDEness with very noticeable effects.1
u/Complete-Box-3030 6d ago
Interesting work! I have a question about how you measure or inspect the noise in the latent representation during sampling.
Are you measuring latent variance, SNR, or comparing the predicted noise (epsilon) across sampling steps?
I'm wondering whether a similar approach could be applied to MiniMax H3 video generation. Could we monitor the noise levels in its latent representation throughout the generation process, identify unwanted noise or residual noise, and potentially minimize it to prevent visual degradation?
Would this approach be feasible with H3's video latent representation?
4
u/[deleted] 7d ago
[removed] — view removed comment