From cbaa0ad46f0eda2f3d9bcf8a42d6271e6760e578 Mon Sep 17 00:00:00 2001 From: Nick Senger <dev@nsenger.com> Date: Wed, 1 Jan 2025 12:34:17 -0800 Subject: UniPC for diffusion sampling (#2684) * feat: Add unipc multistep scheduler * chore: Clippy and formatting * chore: Update comments * chore: Avoid unsafety in float ordering * refactor: Update Scheduler::step mutability requirements * fix: Corrector img2img * chore: Update unipc ref link to latest diffusers release * chore: Deduplicate float ordering * fix: Panic when running with dev profile --- candle-examples/examples/stable-diffusion/main.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'candle-examples/examples') diff --git a/candle-examples/examples/stable-diffusion/main.rs b/candle-examples/examples/stable-diffusion/main.rs index b6585afa..ebf0bfcb 100644 --- a/candle-examples/examples/stable-diffusion/main.rs +++ b/candle-examples/examples/stable-diffusion/main.rs @@ -477,7 +477,7 @@ fn run(args: Args) -> Result<()> { ), }; - let scheduler = sd_config.build_scheduler(n_steps)?; + let mut scheduler = sd_config.build_scheduler(n_steps)?; let device = candle_examples::device(cpu)?; if let Some(seed) = seed { device.set_seed(seed)?; @@ -539,7 +539,7 @@ fn run(args: Args) -> Result<()> { }; for idx in 0..num_samples { - let timesteps = scheduler.timesteps(); + let timesteps = scheduler.timesteps().to_vec(); let latents = match &init_latent_dist { Some(init_latent_dist) => { let latents = (init_latent_dist.sample()? * vae_scale)?.to_device(&device)?; -- cgit v1.2.3