diff --git a/modules/sdnq/loader.py b/modules/sdnq/loader.py index 6fc34551e..43cf06166 100644 --- a/modules/sdnq/loader.py +++ b/modules/sdnq/loader.py @@ -129,7 +129,7 @@ def load_sdnq_model(model_path: str, model_cls: ModelMixin | None = None, file_n model_config.pop("quantization_config", None) model = model_cls(**model_config) - model = sdnq_post_load_quant(model, torch_dtype=dtype, add_skip_keys=False, use_dynamic_quantization=False, **get_quant_args_from_config(quantization_config)) + model = sdnq_post_load_quant(model, torch_dtype=dtype, pre_quantized=True, **get_quant_args_from_config(quantization_config)) key_mapping = getattr(model, "_checkpoint_conversion_mapping", None) files = [] diff --git a/modules/sdnq/quantizer.py b/modules/sdnq/quantizer.py index a9e9eec55..8509720f5 100644 --- a/modules/sdnq/quantizer.py +++ b/modules/sdnq/quantizer.py @@ -469,7 +469,18 @@ def sdnq_post_load_quant( quantization_device: torch.device | None = None, return_device: torch.device | None = None, torch_dtype: torch.dtype | None = None, + pre_quantized: bool = False, ): + if pre_quantized: + add_skip_keys = False + use_dynamic_quantization = False + elif ( + hasattr(model, "quantization_config") + or (hasattr(model, "config") and hasattr(model.config, "quantization_config")) + or (hasattr(model, "config") and isinstance(model.config, dict) and "quantization_config" in model.config) + ): + raise RuntimeError("Quantizing a pre-quantized model is not supported!") + quantization_config = SDNQConfig( weights_dtype=weights_dtype, quantized_matmul_dtype=quantized_matmul_dtype, @@ -669,7 +680,7 @@ class SDNQQuantizer(DiffusersQuantizer, HfQuantizer): self.quantization_config.add_skip_keys = False with init_empty_weights(): - model = sdnq_post_load_quant(model, torch_dtype=self.torch_dtype, add_skip_keys=False, use_dynamic_quantization=False, **get_quant_args_from_config(self.quantization_config)) + model = sdnq_post_load_quant(model, torch_dtype=self.torch_dtype, pre_quantized=True, **get_quant_args_from_config(self.quantization_config)) if self.quantization_config.add_skip_keys: if keep_in_fp32_modules is not None: