diff --git a/CHANGELOG.md b/CHANGELOG.md index 0559b184a..46f993b1d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,7 @@ NYE refresh release with quite a few optimizatios and bug fixes... - **Fixes**: - flux pipeline switches: txt/img/inpaint - flux custom unet loader for bnb + - flux do not requantize already quantized model - interrogate caption with T5 - on-the-fly quantization using TorchAO - remove concurrent preview requests diff --git a/installer.py b/installer.py index 60aab0ddd..de76ce17e 100644 --- a/installer.py +++ b/installer.py @@ -255,7 +255,7 @@ def uninstall(package, quiet = False): @lru_cache() -def pip(arg: str, ignore: bool = False, quiet: bool = False, uv = True): +def pip(arg: str, ignore: bool = False, quiet: bool = True, uv = True): originalArg = arg arg = arg.replace('>=', '==') package = arg.replace("install", "").replace("--upgrade", "").replace("--no-deps", "").replace("--force", "").replace(" ", " ").strip() diff --git a/modules/model_flux.py b/modules/model_flux.py index b89714d91..9b42de3e7 100644 --- a/modules/model_flux.py +++ b/modules/model_flux.py @@ -143,7 +143,9 @@ def quant_flux_bnb(checkpoint_info, transformer, text_encoder_2): """ -def load_quants(kwargs, repo_id, cache_dir): +def load_quants(kwargs, repo_id, cache_dir, allow_quant): + if not allow_quant: + return kwargs quant_args = {} quant_args = model_quant.create_bnb_config(quant_args) if quant_args: @@ -359,10 +361,10 @@ def load_flux(checkpoint_info, diffusers_load_config): # triggered by opts.sd_ch except Exception: pass - allow_quant = 'gguf' not in (sd_unet.loaded_unet or '') + allow_quant = 'gguf' not in (sd_unet.loaded_unet or '') and (quant is None or quant == 'none') fn = checkpoint_info.path if (fn is None) or (not os.path.exists(fn) or os.path.isdir(fn)): - kwargs = load_quants(kwargs, repo_id, cache_dir=shared.opts.diffusers_dir) + kwargs = load_quants(kwargs, repo_id, cache_dir=shared.opts.diffusers_dir, allow_quant=allow_quant) kwargs = model_quant.create_bnb_config(kwargs, allow_quant) kwargs = model_quant.create_ao_config(kwargs, allow_quant) if fn.endswith('.safetensors') and os.path.isfile(fn): diff --git a/modules/sd_models.py b/modules/sd_models.py index f962eeaca..e00913092 100644 --- a/modules/sd_models.py +++ b/modules/sd_models.py @@ -1622,6 +1622,11 @@ def unload_model_weights(op='model'): model_data.sd_model = None devices.torch_gc(force=True) shared.log.debug(f'Unload weights {op}: {memory_stats()}') + if not shared.opts.lora_legacy: + from modules.lora import networks + networks.loaded_networks.clear() + networks.previously_loaded_networks.clear() + networks.lora_cache.clear() elif op == 'refiner': if model_data.sd_refiner: if not shared.native: diff --git a/modules/sd_samplers.py b/modules/sd_samplers.py index 89c4e5edf..398f608d1 100644 --- a/modules/sd_samplers.py +++ b/modules/sd_samplers.py @@ -61,7 +61,7 @@ def create_sampler(name, model): model.prior_pipe.scheduler = copy.deepcopy(model.default_scheduler) model.prior_pipe.scheduler.config.clip_sample = False config = {k: v for k, v in model.scheduler.config.items() if not k.startswith('_')} - shared.log.debug(f'Sampler: default class={current}: {config}') + shared.log.debug(f'Sampler: "default" class={current}: {config}') if "flow" in model.scheduler.__class__.__name__.lower(): shared.state.prediction_type = "flow_prediction" elif hasattr(model.scheduler, "config") and hasattr(model.scheduler.config, "prediction_type"):