Skip to content

Commit 86c4655

Browse files
helena-intelPenghuiCheng
authored andcommitted
Add f32 precision for compare-with-transformers tests (#508)
* f32 precision for compare-with-transformers tests Allow these tests to pass locally on devices where inference is run by default in FP16 (GPU) or BF16 (latest Xeon). * Add F32_CONFIG constant for modeling tests * Replace get_version with is_openvino_version
1 parent be142b5 commit 86c4655

File tree

1 file changed

+22
-16
lines changed

1 file changed

+22
-16
lines changed

tests/openvino/test_modeling.py

+22-16
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
from optimum.intel.openvino import OV_DECODER_NAME, OV_DECODER_WITH_PAST_NAME, OV_ENCODER_NAME, OV_XML_FILE_NAME
7474
from optimum.intel.openvino.modeling_seq2seq import OVDecoder, OVEncoder
7575
from optimum.intel.openvino.modeling_timm import TimmImageProcessor
76+
from optimum.intel.utils.import_utils import is_openvino_version
7677
from optimum.utils import (
7778
DIFFUSION_MODEL_TEXT_ENCODER_SUBFOLDER,
7879
DIFFUSION_MODEL_UNET_SUBFOLDER,
@@ -89,6 +90,8 @@
8990

9091
SEED = 42
9192

93+
F32_CONFIG = {"CACHE_DIR": "", "INFERENCE_PRECISION_HINT": "f32"}
94+
9295

9396
class Timer(object):
9497
def __enter__(self):
@@ -125,7 +128,10 @@ def test_load_from_hub_and_save_model(self):
125128
loaded_model = OVModelForSequenceClassification.from_pretrained(self.OV_MODEL_ID, ov_config=ov_config)
126129
self.assertTrue(manual_openvino_cache_dir.is_dir())
127130
self.assertGreaterEqual(len(list(manual_openvino_cache_dir.glob("*.blob"))), 1)
128-
self.assertEqual(loaded_model.request.get_property("PERFORMANCE_HINT").name, "THROUGHPUT")
131+
if is_openvino_version("<", "2023.3"):
132+
self.assertEqual(loaded_model.request.get_property("PERFORMANCE_HINT").name, "THROUGHPUT")
133+
else:
134+
self.assertEqual(loaded_model.request.get_property("PERFORMANCE_HINT"), "THROUGHPUT")
129135

130136
with tempfile.TemporaryDirectory() as tmpdirname:
131137
loaded_model.save_pretrained(tmpdirname)
@@ -247,7 +253,7 @@ class OVModelForSequenceClassificationIntegrationTest(unittest.TestCase):
247253
def test_compare_to_transformers(self, model_arch):
248254
model_id = MODEL_NAMES[model_arch]
249255
set_seed(SEED)
250-
ov_model = OVModelForSequenceClassification.from_pretrained(model_id, export=True)
256+
ov_model = OVModelForSequenceClassification.from_pretrained(model_id, export=True, ov_config=F32_CONFIG)
251257
self.assertIsInstance(ov_model.config, PretrainedConfig)
252258
transformers_model = AutoModelForSequenceClassification.from_pretrained(model_id)
253259
tokenizer = AutoTokenizer.from_pretrained(model_id)
@@ -313,7 +319,7 @@ class OVModelForQuestionAnsweringIntegrationTest(unittest.TestCase):
313319
def test_compare_to_transformers(self, model_arch):
314320
model_id = MODEL_NAMES[model_arch]
315321
set_seed(SEED)
316-
ov_model = OVModelForQuestionAnswering.from_pretrained(model_id, export=True)
322+
ov_model = OVModelForQuestionAnswering.from_pretrained(model_id, export=True, ov_config=F32_CONFIG)
317323
self.assertIsInstance(ov_model.config, PretrainedConfig)
318324
transformers_model = AutoModelForQuestionAnswering.from_pretrained(model_id)
319325
tokenizer = AutoTokenizer.from_pretrained(model_id)
@@ -386,7 +392,7 @@ class OVModelForTokenClassificationIntegrationTest(unittest.TestCase):
386392
def test_compare_to_transformers(self, model_arch):
387393
model_id = MODEL_NAMES[model_arch]
388394
set_seed(SEED)
389-
ov_model = OVModelForTokenClassification.from_pretrained(model_id, export=True)
395+
ov_model = OVModelForTokenClassification.from_pretrained(model_id, export=True, ov_config=F32_CONFIG)
390396
self.assertIsInstance(ov_model.config, PretrainedConfig)
391397
transformers_model = AutoModelForTokenClassification.from_pretrained(model_id)
392398
tokenizer = AutoTokenizer.from_pretrained(model_id)
@@ -430,7 +436,7 @@ class OVModelForFeatureExtractionIntegrationTest(unittest.TestCase):
430436
def test_compare_to_transformers(self, model_arch):
431437
model_id = MODEL_NAMES[model_arch]
432438
set_seed(SEED)
433-
ov_model = OVModelForFeatureExtraction.from_pretrained(model_id, export=True)
439+
ov_model = OVModelForFeatureExtraction.from_pretrained(model_id, export=True, ov_config=F32_CONFIG)
434440
self.assertIsInstance(ov_model.config, PretrainedConfig)
435441
transformers_model = AutoModel.from_pretrained(model_id)
436442
tokenizer = AutoTokenizer.from_pretrained(model_id)
@@ -492,7 +498,7 @@ class OVModelForCausalLMIntegrationTest(unittest.TestCase):
492498
def test_compare_to_transformers(self, model_arch):
493499
model_id = MODEL_NAMES[model_arch]
494500
set_seed(SEED)
495-
ov_model = OVModelForCausalLM.from_pretrained(model_id, export=True)
501+
ov_model = OVModelForCausalLM.from_pretrained(model_id, export=True, ov_config=F32_CONFIG)
496502
self.assertIsInstance(ov_model.config, PretrainedConfig)
497503
transformers_model = AutoModelForCausalLM.from_pretrained(model_id)
498504
tokenizer = AutoTokenizer.from_pretrained(model_id)
@@ -637,7 +643,7 @@ class OVModelForMaskedLMIntegrationTest(unittest.TestCase):
637643
def test_compare_to_transformers(self, model_arch):
638644
model_id = MODEL_NAMES[model_arch]
639645
set_seed(SEED)
640-
ov_model = OVModelForMaskedLM.from_pretrained(model_id, export=True)
646+
ov_model = OVModelForMaskedLM.from_pretrained(model_id, export=True, ov_config=F32_CONFIG)
641647
self.assertIsInstance(ov_model.config, PretrainedConfig)
642648
transformers_model = AutoModelForMaskedLM.from_pretrained(model_id)
643649
tokenizer = AutoTokenizer.from_pretrained(model_id)
@@ -693,7 +699,7 @@ class OVModelForImageClassificationIntegrationTest(unittest.TestCase):
693699
def test_compare_to_transformers(self, model_arch):
694700
model_id = MODEL_NAMES[model_arch]
695701
set_seed(SEED)
696-
ov_model = OVModelForImageClassification.from_pretrained(model_id, export=True)
702+
ov_model = OVModelForImageClassification.from_pretrained(model_id, export=True, ov_config=F32_CONFIG)
697703
self.assertIsInstance(ov_model.config, PretrainedConfig)
698704
transformers_model = AutoModelForImageClassification.from_pretrained(model_id)
699705
preprocessor = AutoFeatureExtractor.from_pretrained(model_id)
@@ -729,7 +735,7 @@ def test_pipeline(self, model_arch):
729735

730736
@parameterized.expand(TIMM_MODELS)
731737
def test_compare_to_timm(self, model_id):
732-
ov_model = OVModelForImageClassification.from_pretrained(model_id, export=True)
738+
ov_model = OVModelForImageClassification.from_pretrained(model_id, export=True, ov_config=F32_CONFIG)
733739
self.assertIsInstance(ov_model.config, PretrainedConfig)
734740
timm_model = timm.create_model(model_id, pretrained=True)
735741
preprocessor = TimmImageProcessor.from_pretrained(model_id)
@@ -781,7 +787,7 @@ class OVModelForSeq2SeqLMIntegrationTest(unittest.TestCase):
781787
def test_compare_to_transformers(self, model_arch):
782788
model_id = MODEL_NAMES[model_arch]
783789
set_seed(SEED)
784-
ov_model = OVModelForSeq2SeqLM.from_pretrained(model_id, export=True)
790+
ov_model = OVModelForSeq2SeqLM.from_pretrained(model_id, export=True, ov_config=F32_CONFIG)
785791

786792
self.assertIsInstance(ov_model.encoder, OVEncoder)
787793
self.assertIsInstance(ov_model.decoder, OVDecoder)
@@ -920,7 +926,7 @@ def _generate_random_audio_data(self):
920926
def test_compare_to_transformers(self, model_arch):
921927
model_id = MODEL_NAMES[model_arch]
922928
set_seed(SEED)
923-
ov_model = OVModelForAudioClassification.from_pretrained(model_id, export=True)
929+
ov_model = OVModelForAudioClassification.from_pretrained(model_id, export=True, ov_config=F32_CONFIG)
924930
self.assertIsInstance(ov_model.config, PretrainedConfig)
925931
transformers_model = AutoModelForAudioClassification.from_pretrained(model_id)
926932
preprocessor = AutoFeatureExtractor.from_pretrained(model_id)
@@ -985,7 +991,7 @@ def test_load_vanilla_transformers_which_is_not_supported(self):
985991
def test_compare_to_transformers(self, model_arch):
986992
model_id = MODEL_NAMES[model_arch]
987993
set_seed(SEED)
988-
ov_model = OVModelForCTC.from_pretrained(model_id, export=True)
994+
ov_model = OVModelForCTC.from_pretrained(model_id, export=True, ov_config=F32_CONFIG)
989995
self.assertIsInstance(ov_model.config, PretrainedConfig)
990996

991997
set_seed(SEED)
@@ -1037,7 +1043,7 @@ def test_load_vanilla_transformers_which_is_not_supported(self):
10371043
def test_compare_to_transformers(self, model_arch):
10381044
model_id = MODEL_NAMES[model_arch]
10391045
set_seed(SEED)
1040-
ov_model = OVModelForAudioXVector.from_pretrained(model_id, export=True)
1046+
ov_model = OVModelForAudioXVector.from_pretrained(model_id, export=True, ov_config=F32_CONFIG)
10411047
self.assertIsInstance(ov_model.config, PretrainedConfig)
10421048

10431049
set_seed(SEED)
@@ -1091,7 +1097,7 @@ def test_load_vanilla_transformers_which_is_not_supported(self):
10911097
def test_compare_to_transformers(self, model_arch):
10921098
model_id = MODEL_NAMES[model_arch]
10931099
set_seed(SEED)
1094-
ov_model = OVModelForAudioFrameClassification.from_pretrained(model_id, export=True)
1100+
ov_model = OVModelForAudioFrameClassification.from_pretrained(model_id, export=True, ov_config=F32_CONFIG)
10951101
self.assertIsInstance(ov_model.config, PretrainedConfig)
10961102

10971103
set_seed(SEED)
@@ -1134,7 +1140,7 @@ class OVModelForPix2StructIntegrationTest(unittest.TestCase):
11341140
def test_compare_to_transformers(self, model_arch):
11351141
model_id = MODEL_NAMES[model_arch]
11361142
set_seed(SEED)
1137-
ov_model = OVModelForPix2Struct.from_pretrained(model_id, export=True)
1143+
ov_model = OVModelForPix2Struct.from_pretrained(model_id, export=True, ov_config=F32_CONFIG)
11381144

11391145
self.assertIsInstance(ov_model.encoder, OVEncoder)
11401146
self.assertIsInstance(ov_model.decoder, OVDecoder)
@@ -1223,7 +1229,7 @@ def _generate_random_audio_data(self):
12231229
def test_compare_to_transformers(self, model_arch):
12241230
model_id = MODEL_NAMES[model_arch]
12251231
set_seed(SEED)
1226-
ov_model = OVModelForSpeechSeq2Seq.from_pretrained(model_id, export=True)
1232+
ov_model = OVModelForSpeechSeq2Seq.from_pretrained(model_id, export=True, ov_config=F32_CONFIG)
12271233
self.assertIsInstance(ov_model.config, PretrainedConfig)
12281234
transformers_model = AutoModelForSpeechSeq2Seq.from_pretrained(model_id)
12291235
processor = get_preprocessor(model_id)

0 commit comments

Comments
 (0)