Skip to content

Commit

Permalink
Fix diffusers requirement for quantizing models (#712)
Browse files Browse the repository at this point in the history
  • Loading branch information
helena-intel authored May 16, 2024
1 parent 8c2b787 commit c30d488
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions optimum/intel/openvino/quantization.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
from ...exporters.openvino.model_patcher import patch_model_with_bettertransformer
from ...exporters.openvino.stateful import ensure_export_task_support_stateful, ensure_stateful_is_available
from ..utils.constant import _TASK_ALIASES
from ..utils.import_utils import DATASETS_IMPORT_ERROR, is_datasets_available
from ..utils.import_utils import DATASETS_IMPORT_ERROR, is_datasets_available, is_diffusers_available
from ..utils.modeling_utils import get_model_device
from .configuration import OVConfig, OVQuantizationConfig, OVQuantizationMethod, OVWeightQuantizationConfig
from .modeling_base import OVBaseModel
Expand Down Expand Up @@ -325,7 +325,8 @@ def _quantize_ovbasemodel(
remove_unused_columns: bool = True,
**kwargs,
):
from optimum.intel.openvino.modeling_diffusion import OVStableDiffusionPipelineBase
if is_diffusers_available():
from optimum.intel.openvino.modeling_diffusion import OVStableDiffusionPipelineBase

if save_directory is not None:
save_directory = Path(save_directory)
Expand All @@ -335,7 +336,7 @@ def _quantize_ovbasemodel(
if calibration_dataset is not None:
# Process custom calibration dataset

if isinstance(self.model, OVStableDiffusionPipelineBase):
if is_diffusers_available() and isinstance(self.model, OVStableDiffusionPipelineBase):
calibration_dataset = self._prepare_unet_dataset(
quantization_config.num_samples, dataset=calibration_dataset
)
Expand Down Expand Up @@ -373,7 +374,7 @@ def _quantize_ovbasemodel(

if isinstance(self.model, OVModelForCausalLM):
calibration_dataset = self._prepare_builtin_dataset(quantization_config)
elif isinstance(self.model, OVStableDiffusionPipelineBase):
elif is_diffusers_available() and isinstance(self.model, OVStableDiffusionPipelineBase):
calibration_dataset = self._prepare_unet_dataset(
quantization_config.num_samples, dataset_name=quantization_config.dataset
)
Expand All @@ -385,7 +386,7 @@ def _quantize_ovbasemodel(
if quantization_config.quant_method == OVQuantizationMethod.HYBRID:
if calibration_dataset is None:
raise ValueError("Calibration dataset is required to run hybrid quantization.")
if isinstance(self.model, OVStableDiffusionPipelineBase):
if is_diffusers_available() and isinstance(self.model, OVStableDiffusionPipelineBase):
# Apply weight-only quantization to all SD submodels except UNet
quantization_config_copy = copy.deepcopy(quantization_config)
quantization_config_copy.dataset = None
Expand Down

0 comments on commit c30d488

Please sign in to comment.