diff --git a/CHANGELOG.md b/CHANGELOG.md index c9842d044..77239cf56 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,7 @@ Service-pack update with number of fixes and quality-of-life improvements Plus few new models: **Krea 2**, **Boogu**, **Photoroom PRXPixel**, **FLUX.2 Klein KV** and some new community models -And **SDNQ** improvements: now with *NPU* support and its own native *attention* kernels! +And **SDNQ** improvements: now with *NPU* support and its own native *attention* kernels (try it, you may get a nice free performance boost)! Also couple of *experimental* features: see below for details... [Home](https://vladmandic.github.io/sdnext/) | [ChangeLog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) | [Docs](https://vladmandic.github.io/sdnext-docs/) | [Discord](https://discord.com/invite/sd-next-federal-batch-inspectors-1101998836328697867) | [Sponsor](https://github.com/sponsors/vladmandic) @@ -66,8 +66,9 @@ Also couple of *experimental* features: see below for details... *note*: pruna options compatibility varies greatly depending on platform, gpu, torch and model used *note*: some pruna options may require additional packages to be installed - **Fixes** - - anima: simplify loader - amd: hipBLASLt improved detection, thanks @0xDELUXA + - anima: simplify loader + - anima: vae postprocessing with batch size - api: add missing endpoint registration - api: openapi schema exposure - api: stricter api request and response schemas @@ -76,6 +77,9 @@ Also couple of *experimental* features: see below for details... - extensions: handle extension without remote - huggingface: strip corrupt headers on download - insightface: missing dependencies + - installer: double-restart on diffusers/transformers upgrade + - krea2: base defaults to guidance 4.5 instead of 1.0 + - krea2: load custom transformers that omit the dormant residual layers - live preview: configurable pause when not in focus, thanks @Artheriax - log: strip ansi sequences from ring buffer and client side logging - lora: cache state_dict between load attempts @@ -90,17 +94,14 @@ Also couple of *experimental* features: see below for details... - pulid: import paths - python: experimental/ignore version checks - sdnq: warn instead of error for `triton` - - ui debounce aspect-ratio linked width/height controls - - ui: networks details scrollbars - - vae: scale factor improved detection - - text-encode: restore hijack on pipeline switch - - vae: restore hijack on pipeline switch - startup: faster model storage checks - - installer: double-restart on diffusers/transformers upgrade - - krea2: load custom transformers that omit the dormant residual layers - - krea2: base defaults to guidance 4.5 instead of 1.0 - text encoder: load non-t5 single-file overrides as their actual class and quantize under sdnq - text encoder: reload on override change, reset when base model is incompatible + - text-encode: restore hijack on pipeline switch + - ui debounce aspect-ratio linked width/height controls + - ui: networks details scrollbars + - vae: restore hijack on pipeline switch + - vae: scale factor improved detection ## Update for 2026-06-16 diff --git a/modules/processing_vae.py b/modules/processing_vae.py index 602bf6025..84e4b79d1 100644 --- a/modules/processing_vae.py +++ b/modules/processing_vae.py @@ -246,11 +246,15 @@ def vae_postprocess(tensor, model, output_type='np'): if hasattr(model, 'video_processor'): if tensor.ndim == 6 and tensor.shape[1] == 1: tensor = tensor.squeeze(0) + if tensor.ndim == 4 and tensor.shape[1] == 3: + tensor = tensor.unsqueeze(2) try: images = model.video_processor.postprocess_video(tensor, output_type='pil') except Exception as e: - log.warning(f'VAE postprocess: type=video {e}') + log.warning(f'VAE postprocess: type=video tensor={tensor.shape}:{tensor.device}:{tensor.dtype} error={e}') images = tensor + if debug: + errors.display(e, 'VAE postprocess video') if isinstance(images, list) and len(images) > 0 and isinstance(images[0], list): images = [frame for batch in images for frame in batch] elif hasattr(model, 'image_processor'): @@ -259,8 +263,10 @@ def vae_postprocess(tensor, model, output_type='np'): try: images = model.image_processor.postprocess(tensor, output_type=output_type) except Exception as e: - log.warning(f'VAE postprocess: type=image {e}') + log.warning(f'VAE postprocess: type=image tensor={tensor.shape}:{tensor.device}:{tensor.dtype} error={e}') images = tensor + if debug: + errors.display(e, 'VAE postprocess image') elif hasattr(model, "vqgan"): images = tensor.permute(0, 2, 3, 1).cpu().float().numpy() if output_type == "pil": diff --git a/pipelines/model_anima.py b/pipelines/model_anima.py index a54d0e8df..917b8981c 100644 --- a/pipelines/model_anima.py +++ b/pipelines/model_anima.py @@ -150,7 +150,6 @@ def load_anima(checkpoint_info, diffusers_load_config=None): **load_args, ) - # generic.load_vae_override(pipe, diffusers_load_config, override_cls=diffusers.AutoencoderKLQwenImage, override_args={'low_cpu_mem_usage': False, 'ignore_mismatched_sizes': True}) generic.load_vae_override(pipe, diffusers_load_config) del text_encoder diff --git a/wiki b/wiki index 84ac82182..12a64690c 160000 --- a/wiki +++ b/wiki @@ -1 +1 @@ -Subproject commit 84ac82182e6cfdfe3774b9fbc3ee0cc08eedfe83 +Subproject commit 12a64690cea3ca28143a6d01486f85197c0dd07b