From 0f242c7e39eb4a1547f0222d6b2252e9375a56d9 Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Thu, 15 May 2025 12:14:18 -0400 Subject: [PATCH 1/3] fix typo Signed-off-by: Vladimir Mandic --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1365a721a..f969659ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ ## Update for 2025-05-15 *Curious how your system is performing?* -Run a built-in benchmark and compare to over 15k unique results world-wide: (Benchmark data)[https://vladmandic.github.io/sd-extension-system-info/pages/benchmark.html]! +Run a built-in benchmark and compare to over 15k unique results world-wide: [Benchmark data](https://vladmandic.github.io/sd-extension-system-info/pages/benchmark.html)! From slowest 0.02 it/s running on 6th gen CPU without acceleration up to 275+ it/s running on tuned GH100 system! Also, since quantization is becoming a necessity for almost all new models, see comparison of different quantization methods available in SD.Next: [Quantization](https://vladmandic.github.io/sdnext-docs/Quantization/) From 0ab28a61066b2cfeeb6710f4b39fa30949c4667c Mon Sep 17 00:00:00 2001 From: Disty0 Date: Thu, 15 May 2025 22:08:50 +0300 Subject: [PATCH 2/3] IPEX fix cogvideo --- modules/intel/ipex/diffusers.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/modules/intel/ipex/diffusers.py b/modules/intel/ipex/diffusers.py index fa725f2ad..77a2fdac9 100644 --- a/modules/intel/ipex/diffusers.py +++ b/modules/intel/ipex/diffusers.py @@ -61,12 +61,33 @@ def hidream_rope(pos: torch.Tensor, dim: int, theta: int) -> torch.Tensor: return out.to(return_device, dtype=torch.float32) +def get_1d_sincos_pos_embed_from_grid(embed_dim, pos, output_type="np"): + if output_type == "np": + return diffusers.models.embeddings.get_1d_sincos_pos_embed_from_grid_np(embed_dim=embed_dim, pos=pos) + if embed_dim % 2 != 0: + raise ValueError("embed_dim must be divisible by 2") + + omega = torch.arange(embed_dim // 2, device=pos.device, dtype=torch.float32) + omega /= embed_dim / 2.0 + omega = 1.0 / 10000**omega # (D/2,) + + pos = pos.reshape(-1) # (M,) + out = torch.outer(pos, omega) # (M, D/2), outer product + + emb_sin = torch.sin(out) # (M, D/2) + emb_cos = torch.cos(out) # (M, D/2) + + emb = torch.concat([emb_sin, emb_cos], dim=1) # (M, D) + return emb + + def ipex_diffusers(device_supports_fp64=False, can_allocate_plus_4gb=False): diffusers.utils.torch_utils.fourier_filter = fourier_filter if not device_supports_fp64: # get around lazy imports from diffusers.models import transformers as diffusers_transformers # pylint: disable=import-error, unused-import # noqa: F401 from diffusers.models import controlnets as diffusers_controlnets # pylint: disable=import-error, unused-import # noqa: F401 + diffusers.models.embeddings.get_1d_sincos_pos_embed_from_grid = get_1d_sincos_pos_embed_from_grid diffusers.models.embeddings.FluxPosEmbed = FluxPosEmbed diffusers.models.transformers.transformer_flux.FluxPosEmbed = FluxPosEmbed diffusers.models.controlnets.controlnet_flux.FluxPosEmbed = FluxPosEmbed From c371ec91b47100165f7ca062d951ea8d803e75b7 Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Thu, 15 May 2025 15:26:53 -0400 Subject: [PATCH 3/3] fix nncf with controlnet Signed-off-by: Vladimir Mandic --- CHANGELOG.md | 1 + modules/control/run.py | 1 - modules/face/instantid.py | 1 - scripts/example.py | 1 - wiki | 2 +- 5 files changed, 2 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f969659ae..91683cc5e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ Btw, last few releases have been smaller, but more regular so do check posts abo - Gradio: major cleanup and fixing defaults and ranges - Pydantic: update to api types - UI defaults: match correct prompt components + - NNCF with ControlNet ## Update for 2025-05-12 diff --git a/modules/control/run.py b/modules/control/run.py index 712838666..8b504bf13 100644 --- a/modules/control/run.py +++ b/modules/control/run.py @@ -433,7 +433,6 @@ def control_run(state: str = '', original_pipeline = shared.sd_model shared.sd_model = pipe sd_models.move_model(shared.sd_model, shared.device) - shared.sd_model.to(dtype=devices.dtype) debug_log(f'Control device={devices.device} dtype={devices.dtype}') sd_models.copy_diffuser_options(shared.sd_model, original_pipeline) # copy options from original pipeline sd_models.set_diffuser_options(shared.sd_model) diff --git a/modules/face/instantid.py b/modules/face/instantid.py index 662d17c7d..3cc613b3d 100644 --- a/modules/face/instantid.py +++ b/modules/face/instantid.py @@ -61,7 +61,6 @@ def instant_id(p: processing.StableDiffusionProcessing, app, source_images, stre shared.sd_model.load_ip_adapter_instantid(face_adapter, scale=strength) shared.sd_model.set_ip_adapter_scale(strength) sd_models.move_model(shared.sd_model, devices.device) # move pipeline to device - shared.sd_model.to(dtype=devices.dtype) # pipeline specific args if p.all_prompts is None or len(p.all_prompts) == 0: diff --git a/scripts/example.py b/scripts/example.py index aba1fba5c..d62d65461 100644 --- a/scripts/example.py +++ b/scripts/example.py @@ -110,7 +110,6 @@ class Script(scripts.Script): sd_models.copy_diffuser_options(shared.sd_model, orig_pipeline) # copy options from original pipeline sd_models.set_diffuser_options(shared.sd_model) # set all model options such as fp16, offload, etc. sd_models.move_model(shared.sd_model, devices.device) # move pipeline to device - shared.sd_model.to(dtype=devices.dtype) # if pipeline also needs a specific type, you can set it here, but not commonly needed # shared.sd_model = sd_models.set_diffuser_pipe(shared.sd_model, sd_models.DiffusersTaskType.IMAGE_2_IMAGE) diff --git a/wiki b/wiki index 6192bb85f..25c8a39ad 160000 --- a/wiki +++ b/wiki @@ -1 +1 @@ -Subproject commit 6192bb85f10693bf632f751c0935ed57969ce7fe +Subproject commit 25c8a39adecd2a9683aace950599330b72031032