@@ -214,6 +214,7 @@ def preprocess_function(examples, tokenizer):
214214 # Verify that the configuration is correctly saved and loaded
215215 loaded_config = OVConfig .from_pretrained (tmp_dir )
216216 self .assertEqual (ov_config .quantization_config .to_dict (), loaded_config .quantization_config .to_dict ())
217+ check_optimization_not_applicable_to_optimized_model (model , quantization_config = OVWeightQuantizationConfig (bits = 8 ))
217218
218219 @parameterized .expand (SUPPORTED_ARCHITECTURES_OV_MODEL_WITH_AUTO_DATASET )
219220 def test_ov_model_static_quantization_with_auto_dataset (
@@ -255,6 +256,7 @@ def test_ov_model_static_quantization_with_auto_dataset(
255256 self .assertTrue ("logits" in outputs )
256257 else :
257258 raise Exception ("Unexpected model class." )
259+ check_optimization_not_applicable_to_optimized_model (ov_model , quantization_config = quantization_config )
258260
259261
260262class OVWeightCompressionTest (unittest .TestCase ):
@@ -718,28 +720,18 @@ def test_ovmodel_load_with_compressed_weights(self, model_cls, model_type, trust
718720 else :
719721 models = [model ]
720722
723+ if model_type == "open-clip" :
724+ pytest .skip (reason = "ticket 161043" )
725+ elif model_type == "t5" :
726+ pytest .skip (reason = "ticket 160958" )
727+ else :
728+ check_optimization_not_applicable_to_optimized_model (model , quantization_config = {"bits" : 8 })
729+
721730 expected_ov_int8 = _ARCHITECTURES_TO_EXPECTED_INT8 [model_type ]
722731 for i , model in enumerate (models ):
723732 _ , num_weight_nodes = get_num_quantized_nodes (model )
724733 self .assertEqual (expected_ov_int8 [i ], num_weight_nodes ["int8" ])
725734
726- @parameterized .expand (SUPPORTED_ARCHITECTURES_WITH_AUTO_COMPRESSION )
727- def test_raise_error_WC_over_WC (self , model_cls , model_type , trust_remote_code ):
728- model = model_cls .from_pretrained (
729- MODEL_NAMES [model_type ],
730- export = True ,
731- load_in_8bit = True ,
732- trust_remote_code = trust_remote_code ,
733- )
734- quantization_config = OVWeightQuantizationConfig (bits = 4 , sym = True )
735- quantizer = OVQuantizer (model )
736- if isinstance (model , OVModelOpenCLIPForZeroShotImageClassification ):
737- with pytest .raises (TypeError ):
738- quantizer .quantize (ov_config = OVConfig (quantization_config = quantization_config ))
739- else :
740- with pytest .raises (RuntimeError ):
741- quantizer .quantize (ov_config = OVConfig (quantization_config = quantization_config ))
742-
743735 @parameterized .expand (SUPPORTED_ARCHITECTURES_WITH_HYBRID_QUANTIZATION )
744736 def test_ovmodel_hybrid_quantization (self , model_cls , model_type , expected_fake_nodes , expected_int8_nodes ):
745737 model_id = MODEL_NAMES [model_type ]
@@ -755,6 +747,7 @@ def test_ovmodel_hybrid_quantization(self, model_cls, model_type, expected_fake_
755747 self .assertEqual (0 , num_weight_nodes ["int4" ])
756748
757749 model .save_pretrained (tmp_dir )
750+ check_optimization_not_applicable_to_optimized_model (model , quantization_config = quantization_config )
758751
759752 def test_stable_diffusion_with_weight_compression (self ):
760753 int8_pipe = OVStableDiffusionPipeline .from_pretrained (model_id = MODEL_NAMES ["stable-diffusion" ], export = True )
@@ -769,6 +762,8 @@ def test_stable_diffusion_with_weight_compression(self):
769762 self .assertEqual (0 , num_fake_nodes )
770763 self .assertEqual (242 , num_weight_nodes ["int8" ])
771764 self .assertEqual (0 , num_weight_nodes ["int4" ])
765+ quantization_config = OVWeightQuantizationConfig (bits = 8 , dataset = "conceptual_captions" , num_samples = 2 , quant_method = OVQuantizationMethod .HYBRID )
766+ check_optimization_not_applicable_to_optimized_model (int8_pipe , quantization_config = quantization_config )
772767
773768 @parameterized .expand (SUPPORTED_ARCHITECTURES_WITH_HYBRID_QUANTIZATION [- 1 :])
774769 def test_ovmodel_hybrid_quantization_with_custom_dataset (
@@ -814,6 +809,7 @@ def test_ovmodel_4bit_auto_compression(self, model_cls, model_type, expected_ov_
814809 if model_id == "facebook/opt-125m" :
815810 for key , value in self .DEFAULT_INT4_CONFIG .items ():
816811 self .assertEqual (value , getattr (openvino_config .quantization_config , key ))
812+ check_optimization_not_applicable_to_optimized_model (model , quantization_config = {"bits" : 8 })
817813
818814 @parameterized .expand (LOAD_IN_4_BITS_SCOPE )
819815 def test_ovmodel_4bit_auto_compression_with_config (
@@ -1338,3 +1334,9 @@ def test_calibration_data_uniqueness(self, model_name, apply_caching):
13381334 else :
13391335 # Without caching, encoder hidden states tensors will be unique for each collected input
13401336 self .assertGreater (len (data_id_per_key ["encoder_hidden_states" ]), 2 )
1337+
1338+
1339+ def check_optimization_not_applicable_to_optimized_model (model , quantization_config ):
1340+ quantizer = OVQuantizer (model )
1341+ with pytest .raises (RuntimeError , match = "Cannot apply optimization to the model because it was already optimized with the following config" ):
1342+ quantizer .quantize (quantization_config = quantization_config )
0 commit comments