From ea0d950faa789c439cca374ac4b2b0648215316e Mon Sep 17 00:00:00 2001 From: Sai Sridhar Date: Fri, 10 Jul 2026 09:39:30 +0530 Subject: [PATCH] Add validation for non-positive num_inference_steps in DDPMScheduler Calling `scheduler.set_timesteps(0)` or a negative value silently produced a zero-length timestep array that later caused a ZeroDivisionError or division-by-zero NaN inside the step loop. Add an explicit guard matching the pattern already present in DDIMScheduler. Fixes #13394. --- src/diffusers/schedulers/scheduling_ddpm.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/diffusers/schedulers/scheduling_ddpm.py b/src/diffusers/schedulers/scheduling_ddpm.py index 972c46c6e930..345bc7e96b6c 100644 --- a/src/diffusers/schedulers/scheduling_ddpm.py +++ b/src/diffusers/schedulers/scheduling_ddpm.py @@ -308,6 +308,8 @@ def set_timesteps( timesteps = np.array(timesteps, dtype=np.int64) self.custom_timesteps = True else: + if num_inference_steps <= 0: + raise ValueError(f"`num_inference_steps`: {num_inference_steps} must be a positive integer.") if num_inference_steps > self.config.num_train_timesteps: raise ValueError( f"`num_inference_steps`: {num_inference_steps} cannot be larger than `self.config.train_timesteps`:"