(model, positive, negative, latent, seed=None, steps=30, cfg=7.0, sampler_name='dpmpp_2m_sde_gpu',
scheduler='karras', denoise=1.0, disable_noise=False, start_step=None, last_step=None,
force_full_denoise=False, callback_function=None, refiner=None, refiner_switch=-1,
previewer_start=None, previewer_end=None, sigmas=None, noise_mean=None, disable_preview=False)
| 263 | @torch.no_grad() |
| 264 | @torch.inference_mode() |
| 265 | def ksampler(model, positive, negative, latent, seed=None, steps=30, cfg=7.0, sampler_name='dpmpp_2m_sde_gpu', |
| 266 | scheduler='karras', denoise=1.0, disable_noise=False, start_step=None, last_step=None, |
| 267 | force_full_denoise=False, callback_function=None, refiner=None, refiner_switch=-1, |
| 268 | previewer_start=None, previewer_end=None, sigmas=None, noise_mean=None, disable_preview=False): |
| 269 | |
| 270 | if sigmas is not None: |
| 271 | sigmas = sigmas.clone().to(ldm_patched.modules.model_management.get_torch_device()) |
| 272 | |
| 273 | latent_image = latent["samples"] |
| 274 | |
| 275 | if disable_noise: |
| 276 | noise = torch.zeros(latent_image.size(), dtype=latent_image.dtype, layout=latent_image.layout, device="cpu") |
| 277 | else: |
| 278 | batch_inds = latent["batch_index"] if "batch_index" in latent else None |
| 279 | noise = ldm_patched.modules.sample.prepare_noise(latent_image, seed, batch_inds) |
| 280 | |
| 281 | if isinstance(noise_mean, torch.Tensor): |
| 282 | noise = noise + noise_mean - torch.mean(noise, dim=1, keepdim=True) |
| 283 | |
| 284 | noise_mask = None |
| 285 | if "noise_mask" in latent: |
| 286 | noise_mask = latent["noise_mask"] |
| 287 | |
| 288 | previewer = get_previewer(model) |
| 289 | |
| 290 | if previewer_start is None: |
| 291 | previewer_start = 0 |
| 292 | |
| 293 | if previewer_end is None: |
| 294 | previewer_end = steps |
| 295 | |
| 296 | def callback(step, x0, x, total_steps): |
| 297 | ldm_patched.modules.model_management.throw_exception_if_processing_interrupted() |
| 298 | y = None |
| 299 | if previewer is not None and not disable_preview: |
| 300 | y = previewer(x0, previewer_start + step, previewer_end) |
| 301 | if callback_function is not None: |
| 302 | callback_function(previewer_start + step, x0, x, previewer_end, y) |
| 303 | |
| 304 | disable_pbar = False |
| 305 | modules.sample_hijack.current_refiner = refiner |
| 306 | modules.sample_hijack.refiner_switch_step = refiner_switch |
| 307 | ldm_patched.modules.samplers.sample = modules.sample_hijack.sample_hacked |
| 308 | |
| 309 | try: |
| 310 | samples = ldm_patched.modules.sample.sample(model, |
| 311 | noise, steps, cfg, sampler_name, scheduler, |
| 312 | positive, negative, latent_image, |
| 313 | denoise=denoise, disable_noise=disable_noise, |
| 314 | start_step=start_step, |
| 315 | last_step=last_step, |
| 316 | force_full_denoise=force_full_denoise, noise_mask=noise_mask, |
| 317 | callback=callback, |
| 318 | disable_pbar=disable_pbar, seed=seed, sigmas=sigmas) |
| 319 | |
| 320 | out = latent.copy() |
| 321 | out["samples"] = samples |
| 322 | finally: |
nothing calls this directly
no test coverage detected