From 461bed5720ae06e76353cba59192821d8d089dba Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Sat, 2 Aug 2025 07:06:34 -0400 Subject: [PATCH] experimental sampler monkeypatch Signed-off-by: Vladimir Mandic --- modules/img2img.py | 4 ++-- modules/sd_samplers.py | 2 +- modules/sd_samplers_diffusers.py | 6 ++++++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/modules/img2img.py b/modules/img2img.py index d91daaca1..b3c0880aa 100644 --- a/modules/img2img.py +++ b/modules/img2img.py @@ -138,10 +138,10 @@ def process_batch(p, input_files, input_dir, output_dir, inpaint_mask_dir, args) if output_dir == '': output_dir = shared.opts.outdir_img2img_samples os.makedirs(output_dir, exist_ok=True) - geninfo, items = images.read_info_from_image(image) + info, items = images.read_info_from_image(image) for k, v in items.items(): image.info[k] = v - images.save_image(image, path=output_dir, basename=basename, seed=None, prompt=None, extension=ext, info=geninfo, grid=False, pnginfo_section_name="extras", existing_info=image.info, forced_filename=forced_filename) + images.save_image(image, path=output_dir, basename=basename, seed=None, prompt=None, extension=ext, info=info, grid=False, pnginfo_section_name="extras", existing_info=image.info, forced_filename=forced_filename) processed = scripts_manager.scripts_img2img.after(p, processed, *args) shared.log.debug(f'Processed: images={len(batch_image_files)} memory={memory_stats()} batch') diff --git a/modules/sd_samplers.py b/modules/sd_samplers.py index c7502cb4b..0b965eaf6 100644 --- a/modules/sd_samplers.py +++ b/modules/sd_samplers.py @@ -98,7 +98,7 @@ def create_sampler(name, model): # validate sampler prediction type if (model is not None) and (is_flow and not requires_flow): shared.log.error(f'Sampler: "{sampler.name}" cls={sampler.sampler.__class__.__name__} pipe={model.__class__.__name__} model requires sampler with discrete prediction') - return restore_default(model) + # return restore_default(model) if (model is not None) and (not is_flow and requires_flow): shared.log.error(f'Sampler: "{sampler.name}" cls={sampler.sampler.__class__.__name__} pipe={model.__class__.__name__} model requires sampler with flow prediction') return restore_default(model) diff --git a/modules/sd_samplers_diffusers.py b/modules/sd_samplers_diffusers.py index b052042bc..d0d394b88 100644 --- a/modules/sd_samplers_diffusers.py +++ b/modules/sd_samplers_diffusers.py @@ -317,6 +317,12 @@ class DiffusionSampler: self.sampler = None return + # monkey-patch to allow sdxl pipeline to execute flowmatch samplers + if not hasattr(sampler, 'scale_model_input'): + sampler.scale_model_input = lambda x, _y: x + if not hasattr(sampler, 'init_noise_sigma'): + sampler.init_noise_sigma = 1.0 + self.sampler = sampler # shared.log.debug_log(f'Sampler: class="{self.sampler.__class__.__name__}" config={self.sampler.config}')