From c788c8a3d57a9bbdde0677d958dbf698ab6b92ed Mon Sep 17 00:00:00 2001 From: Vladimir Mandic Date: Wed, 11 Sep 2024 18:03:15 -0400 Subject: [PATCH] update diffusers --- installer.py | 2 +- modules/model_t5.py | 11 ++--------- modules/sd_models.py | 6 +++++- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/installer.py b/installer.py index 611359ae8..b75c21ad9 100644 --- a/installer.py +++ b/installer.py @@ -438,7 +438,7 @@ def check_python(supported_minors=[9, 10, 11, 12], reason=None): # check diffusers version def check_diffusers(): - sha = '8cdcdd9e32925200ce5e1cf410fe14a774f3c3a6' + sha = '5e1427a7da6e878b958fd5a2422c7763a94ff02b' pkg = pkg_resources.working_set.by_key.get('diffusers', None) minor = int(pkg.version.split('.')[1] if pkg is not None else 0) cur = opts.get('diffusers_version', '') if minor > 0 else '' diff --git a/modules/model_t5.py b/modules/model_t5.py index 828d05ecd..4d082d2d4 100644 --- a/modules/model_t5.py +++ b/modules/model_t5.py @@ -4,6 +4,7 @@ import torch import transformers from safetensors.torch import load_file from modules import shared, devices, files_cache +from installer import install t5_dict = {} @@ -11,6 +12,7 @@ t5_dict = {} def load_t5(t5=None, cache_dir=None): from modules import modelloader + modelloader.hf_login() repo_id = 'stabilityai/stable-diffusion-3-medium-diffusers' fn = t5_dict.get(t5) if t5 in t5_dict else None if fn is not None: @@ -34,30 +36,21 @@ def load_t5(t5=None, cache_dir=None): shared.log.error(f"FLUX: Failed to cast text encoder to {devices.dtype}, set dtype to {t5.dtype}") raise elif 'fp16' in t5.lower(): - modelloader.hf_login() t5 = transformers.T5EncoderModel.from_pretrained(repo_id, subfolder='text_encoder_3', cache_dir=cache_dir, torch_dtype=devices.dtype) elif 'fp4' in t5.lower(): - modelloader.hf_login() - from installer import install install('bitsandbytes', quiet=True) quantization_config = transformers.BitsAndBytesConfig(load_in_4bit=True) t5 = transformers.T5EncoderModel.from_pretrained(repo_id, subfolder='text_encoder_3', quantization_config=quantization_config, cache_dir=cache_dir, torch_dtype=devices.dtype) elif 'fp8' in t5.lower(): - modelloader.hf_login() - from installer import install install('bitsandbytes', quiet=True) quantization_config = transformers.BitsAndBytesConfig(load_in_8bit=True) t5 = transformers.T5EncoderModel.from_pretrained(repo_id, subfolder='text_encoder_3', quantization_config=quantization_config, cache_dir=cache_dir, torch_dtype=devices.dtype) elif 'qint8' in t5.lower(): - modelloader.hf_login() - from installer import install install('optimum-quanto', quiet=True) from modules.sd_models_compile import optimum_quanto_model t5 = transformers.T5EncoderModel.from_pretrained(repo_id, subfolder='text_encoder_3', cache_dir=cache_dir, torch_dtype=devices.dtype) t5 = optimum_quanto_model(t5, weights="qint8", activations="none") elif 'int8' in t5.lower(): - modelloader.hf_login() - from installer import install install('nncf==2.7.0', quiet=True) from modules.sd_models_compile import nncf_compress_model from modules.sd_hijack import NNCF_T5DenseGatedActDense diff --git a/modules/sd_models.py b/modules/sd_models.py index 3f2d717fa..6958e3ea0 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -682,7 +682,7 @@ def set_diffuser_options(sd_model, vae = None, op: str = 'model', offload=True): if hasattr(sd_model, "vae"): if vae is not None: sd_model.vae = vae - shared.log.debug(f'Setting {op} VAE: name={sd_vae.loaded_vae_file}') + shared.log.debug(f'Setting {op} VAE: name="{sd_vae.loaded_vae_file}"') if shared.opts.diffusers_vae_upcast != 'default': sd_model.vae.config.force_upcast = True if shared.opts.diffusers_vae_upcast == 'true' else False shared.log.debug(f'Setting {op} VAE: upcast={sd_model.vae.config.force_upcast}') @@ -1234,6 +1234,8 @@ def load_diffuser(checkpoint_info=None, already_loaded_state_dict=None, timer=No else: model_config = get_load_config(checkpoint_info.path, model_type, config_type='json') if model_config is not None: + if debug_load: + shared.log.debug(f'Model config: path="{model_config}"') diffusers_load_config['config_files'] = model_config if model_type.startswith('Stable Diffusion 3'): from modules.model_sd3 import load_sd3 @@ -1257,6 +1259,8 @@ def load_diffuser(checkpoint_info=None, already_loaded_state_dict=None, timer=No else: shared.log.error(f'Diffusers {op} cannot load safetensor model: {checkpoint_info.path} {shared.opts.diffusers_pipeline}') return + if shared.opts.diffusers_vae_upcast != 'default' and model_type in ['Stable Diffusion', 'Stable Diffusion XL']: + diffusers_load_config['force_upcast'] = True if shared.opts.diffusers_vae_upcast == 'true' else False if debug_load: shared.log.debug(f'Model args: {diffusers_load_config}') if sd_model is not None: