Skip to content

Commit bc06556

Browse files
committed
Fix diffusers requirement for quantizing models
1 parent 8c2b787 commit bc06556

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

optimum/intel/openvino/quantization.py

+6-5
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
from ...exporters.openvino.model_patcher import patch_model_with_bettertransformer
4949
from ...exporters.openvino.stateful import ensure_export_task_support_stateful, ensure_stateful_is_available
5050
from ..utils.constant import _TASK_ALIASES
51-
from ..utils.import_utils import DATASETS_IMPORT_ERROR, is_datasets_available
51+
from ..utils.import_utils import DATASETS_IMPORT_ERROR, is_datasets_available, is_diffusers_available
5252
from ..utils.modeling_utils import get_model_device
5353
from .configuration import OVConfig, OVQuantizationConfig, OVQuantizationMethod, OVWeightQuantizationConfig
5454
from .modeling_base import OVBaseModel
@@ -325,7 +325,8 @@ def _quantize_ovbasemodel(
325325
remove_unused_columns: bool = True,
326326
**kwargs,
327327
):
328-
from optimum.intel.openvino.modeling_diffusion import OVStableDiffusionPipelineBase
328+
if is_diffusers_available():
329+
from optimum.intel.openvino.modeling_diffusion import OVStableDiffusionPipelineBase
329330

330331
if save_directory is not None:
331332
save_directory = Path(save_directory)
@@ -335,7 +336,7 @@ def _quantize_ovbasemodel(
335336
if calibration_dataset is not None:
336337
# Process custom calibration dataset
337338

338-
if isinstance(self.model, OVStableDiffusionPipelineBase):
339+
if is_diffusers_available() and isinstance(self.model, OVStableDiffusionPipelineBase):
339340
calibration_dataset = self._prepare_unet_dataset(
340341
quantization_config.num_samples, dataset=calibration_dataset
341342
)
@@ -373,7 +374,7 @@ def _quantize_ovbasemodel(
373374

374375
if isinstance(self.model, OVModelForCausalLM):
375376
calibration_dataset = self._prepare_builtin_dataset(quantization_config)
376-
elif isinstance(self.model, OVStableDiffusionPipelineBase):
377+
elif is_diffusers_available() and isinstance(self.model, OVStableDiffusionPipelineBase):
377378
calibration_dataset = self._prepare_unet_dataset(
378379
quantization_config.num_samples, dataset_name=quantization_config.dataset
379380
)
@@ -385,7 +386,7 @@ def _quantize_ovbasemodel(
385386
if quantization_config.quant_method == OVQuantizationMethod.HYBRID:
386387
if calibration_dataset is None:
387388
raise ValueError("Calibration dataset is required to run hybrid quantization.")
388-
if isinstance(self.model, OVStableDiffusionPipelineBase):
389+
if is_diffusers_available() and isinstance(self.model, OVStableDiffusionPipelineBase):
389390
# Apply weight-only quantization to all SD submodels except UNet
390391
quantization_config_copy = copy.deepcopy(quantization_config)
391392
quantization_config_copy.dataset = None

0 commit comments

Comments
 (0)