diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a4065bb2..188f7d2ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,7 +25,8 @@ And few video related goodies... Plus tons of other items and fixes - see [changelog](https://github.com/vladmandic/automatic/blob/master/CHANGELOG.md) for details! Examples: -- Built-in prompt-enhancer, TAESD optimizations, new DC-Solver scheduler, global XYZ grid management, etc. +- Built-in prompt-enhancer, TAESD optimizations, new DC-Solver scheduler, global XYZ grid management, etc. +- Updates to ZLUDA, IPEX, OpenVINO... ### Details for 2024-09-13 @@ -131,7 +132,7 @@ Examples: - [MiaoshouAI PromptGen 1.5 Large](https://huggingface.co/MiaoshouAI/Florence-2-large-PromptGen-v1.5) - [CogFlorence 2.2 Large](https://huggingface.co/thwri/CogFlorence-2.2-Large) - **modernui** update -- **zluda** update to 3.8.4, thanks @lshqqytiger +- **zluda** update to 3.8.4, thanks @lshqqytiger! - **ipex** update to 2.3.110+xpu on linux, thanks @Disty0! - **openvino** update to 2024.3.0, thanks @Disty0! - update `requirements` @@ -141,6 +142,7 @@ Examples: - fix model path typos - fix guidance end handler - fix script sorting +- fix vae dtype during load - fix all ui labels are unique ## Update for 2024-08-31 diff --git a/TODO.md b/TODO.md index 61efd092f..5726e67da 100644 --- a/TODO.md +++ b/TODO.md @@ -4,12 +4,9 @@ Main ToDo list can be found at [GitHub projects](https://github.com/users/vladma ## Future Candidates -- animatediff prompt-travel: - async lowvram: - fp8: - ipadapter-negative: https://github.com/huggingface/diffusers/discussions/7167 -- hd-painter: https://github.com/huggingface/diffusers/blob/main/examples/community/README.md#hd-painter -- init latents: variations, img2img - include reference styles ### Missing diff --git a/modules/processing_vae.py b/modules/processing_vae.py index 8e9063b89..9ab4acad9 100644 --- a/modules/processing_vae.py +++ b/modules/processing_vae.py @@ -83,9 +83,8 @@ def full_vae_decode(latents, model): sd_models.move_base(model, base_device) t1 = time.time() if debug: - log_debug(f'VAE config: {model.vae.config}') log_debug(f'VAE memory: {shared.mem_mon.read()}') - log_debug(f'VAE decode: name={sd_vae.loaded_vae_file if sd_vae.loaded_vae_file is not None else "baked"} dtype={model.vae.dtype} upcast={upcast} images={latents.shape[0]} latents={latents.shape} time={round(t1-t0, 3)}') + log_debug(f'VAE decode: name={sd_vae.loaded_vae_file if sd_vae.loaded_vae_file is not None else "baked"} dtype={model.vae.dtype} upcast={upcast} slicing={getattr(model.vae, "use_slicing", None)} tiling={getattr(model.vae, "use_tiling", None)} images={latents.shape[0]} latents={latents.shape} time={round(t1-t0, 3)}') return decoded diff --git a/modules/sd_vae.py b/modules/sd_vae.py index 107b6fc94..bfe9807ad 100644 --- a/modules/sd_vae.py +++ b/modules/sd_vae.py @@ -192,7 +192,6 @@ def load_vae_diffusers(model_file, vae_file=None, vae_source="unknown-source"): if not os.path.exists(vae_file): shared.log.error(f'VAE not found: model{vae_file}') return None - shared.log.info(f"Loading VAE: model={vae_file} source={vae_source}") diffusers_load_config = { "low_cpu_mem_usage": False, "torch_dtype": devices.dtype_vae, @@ -207,16 +206,14 @@ def load_vae_diffusers(model_file, vae_file=None, vae_source="unknown-source"): diffusers_load_config['variant'] = shared.opts.diffusers_vae_load_variant if shared.opts.diffusers_vae_upcast != 'default': diffusers_load_config['force_upcast'] = True if shared.opts.diffusers_vae_upcast == 'true' else False - shared.log.debug(f'Diffusers VAE load config: {diffusers_load_config}') + _pipeline, model_type = sd_models.detect_pipeline(model_file, 'vae') + vae_config = sd_models.get_load_config(model_file, model_type, config_type='json') + if vae_config is not None: + diffusers_load_config['config'] = os.path.join(vae_config, 'vae') + shared.log.info(f'Load VAE: model="{vae_file}" source={vae_source} config={diffusers_load_config}') try: import diffusers if os.path.isfile(vae_file): - _pipeline, model_type = sd_models.detect_pipeline(model_file, 'vae') - vae_config = sd_models.get_load_config(model_file, model_type, config_type='json') - if vae_config is not None: - diffusers_load_config = { - "config": os.path.join(vae_config, 'vae'), - } if os.path.getsize(vae_file) > 1310944880: # 1.3GB vae = diffusers.ConsistencyDecoderVAE.from_pretrained('openai/consistency-decoder', **diffusers_load_config) # consistency decoder does not have from single file, so we'll just download it once more elif os.path.getsize(vae_file) < 10000000: # 10MB