Skip to content

Commit b2d3af8

Browse files
authored
Set openvino slow test (#774)
* fix test * set slow test * add slow * register custom marks
1 parent ef23a5d commit b2d3af8

6 files changed

+51
-14
lines changed

.github/workflows/test_openvino_basic.yml

+3-2
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ jobs:
4141
# optimum or transformers to a specific version
4242
# Install PyTorch CPU to prevent unnecessary downloading/installing of CUDA packages
4343
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu
44-
pip install .[tests] openvino onnxruntime ${{ matrix.optimum}}
44+
pip install .[tests] openvino ${{ matrix.optimum}}
4545
4646
- name: Pip freeze
4747
run: pip freeze
@@ -52,6 +52,7 @@ jobs:
5252
5353
- name: Slow tests
5454
run: |
55-
pytest tests/openvino/test_modeling.py -s -m "run_slow" --durations=0
55+
pip install nncf
56+
pytest tests/openvino -s -m "run_slow" --durations=0
5657
env:
5758
RUN_SLOW: 1

pyproject.toml

+5
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,8 @@ line-length = 119
2929
[tool.ruff.isort]
3030
lines-after-imports = 2
3131
known-first-party = ["optimum"]
32+
33+
[tool.pytest.ini_options]
34+
markers = [
35+
"run_slow",
36+
]

tests/openvino/test_modeling.py

+10-3
Original file line numberDiff line numberDiff line change
@@ -990,14 +990,21 @@ def test_beam_search(self, model_arch):
990990
ov_model_stateless.config.eos_token_id = None
991991
transformers_model.config.eos_token_id = None
992992

993-
for idx, gen_config in enumerate(gen_configs):
993+
for gen_config in gen_configs:
994994
if gen_config.do_sample and model_arch in ["baichuan2-13b", "olmo"]:
995995
continue
996+
996997
transformers_outputs = transformers_model.generate(**tokens, generation_config=gen_config)
997998
ov_stateful_outputs = ov_model_stateful.generate(**tokens, generation_config=gen_config)
998-
self.assertTrue(torch.allclose(ov_stateful_outputs, transformers_outputs), f"generation config : {idx}")
999+
self.assertTrue(
1000+
torch.equal(ov_stateful_outputs, transformers_outputs),
1001+
f"generation config : {gen_config}, transformers output {transformers_outputs}, ov_model_stateful output {ov_stateful_outputs}",
1002+
)
9991003
ov_stateless_outputs = ov_model_stateless.generate(**tokens, generation_config=gen_config)
1000-
self.assertTrue(torch.allclose(ov_stateless_outputs, transformers_outputs), f"generation config : {idx}")
1004+
self.assertTrue(
1005+
torch.equal(ov_stateless_outputs, transformers_outputs),
1006+
f"generation config : {gen_config}, transformers output {transformers_outputs}, ov_model_stateless output {ov_stateless_outputs}",
1007+
)
10011008

10021009

10031010
class OVModelForMaskedLMIntegrationTest(unittest.TestCase):

tests/openvino/test_quantization.py

+11-9
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
from enum import Enum
2323
from functools import partial
2424
from typing import Union
25-
25+
import pytest
2626
import evaluate
2727
import numpy as np
2828
import torch
@@ -37,6 +37,7 @@
3737
TrainingArguments,
3838
default_data_collator,
3939
)
40+
from transformers.testing_utils import slow
4041
from transformers.utils.quantization_config import QuantizationMethod
4142

4243
from optimum.intel import (
@@ -173,15 +174,13 @@ def preprocess_function(examples, tokenizer):
173174

174175

175176
class OVWeightCompressionTest(unittest.TestCase):
176-
# TODO : add models
177177
SUPPORTED_ARCHITECTURES_WITH_EXPECTED_8BIT_COMPRESSED_MATMULS = (
178178
(OVModelForSequenceClassification, "bert", 70, 70),
179179
(OVModelForCausalLM, "gpt2", 44, 44),
180180
)
181181

182182
SUPPORTED_ARCHITECTURES_WITH_EXPECTED_4BIT_COMPRESSED_MATMULS = ((OVModelForCausalLM, "opt125m", 62, 86),)
183183
SUPPORTED_ARCHITECTURES_WITH_EXPECTED_4BIT_AUTOCOMPRESSED_MATMULS = ((OVModelForCausalLM, "opt125m", 0, 148),)
184-
185184
SUPPORTED_ARCHITECTURES_STATEFUL_WITH_EXPECTED_8BIT_COMPRESSED_MATMULS = ((OVModelForCausalLM, "gpt2", 44, 44),)
186185

187186
LOAD_IN_4_BITS_SCOPE = (
@@ -347,7 +346,6 @@ def test_ovmodel_4bit_weight_compression(self, model_cls, model_name, expected_i
347346
self.assertEqual(ov_config.quantization_config.to_dict(), loaded_config.quantization_config.to_dict())
348347

349348
@parameterized.expand(SUPPORTED_ARCHITECTURES_STATEFUL_WITH_EXPECTED_8BIT_COMPRESSED_MATMULS)
350-
@unittest.skipIf(not IS_SUPPORT_STATEFUL, "Stateful models supported only in 2023.3 and above")
351349
def test_ovmodel_8bit_weight_compression_stateful(self, model_cls, model_name, expected_pt_int8, expected_ov_int8):
352350
task = model_cls.export_feature
353351
model_id = MODEL_NAMES[model_name]
@@ -473,7 +471,6 @@ def test_ovmodel_4bit_auto_compression_with_config(
473471
self.assertEqual(openvino_config.dtype, "int4")
474472

475473
@parameterized.expand(((OVModelForCausalLM, "gpt2"),))
476-
@unittest.skipIf(not IS_SUPPORT_STATEFUL, "Stateful models supported only in 2023.3 and above")
477474
def test_ovmodel_stateful_load_with_compressed_weights(self, model_cls, model_type):
478475
model = model_cls.from_pretrained(MODEL_NAMES[model_type], export=True, load_in_8bit=True, stateful=True)
479476
self.assertTrue(model.stateful)
@@ -588,9 +585,11 @@ def test_ovmodel_4bit_dynamic_with_config(self, model_cls, model_name, quantizat
588585

589586

590587
class OVQuantizerQATest(unittest.TestCase):
591-
SUPPORTED_ARCHITECTURES = (("hf-internal-testing/tiny-random-BertForQuestionAnswering",),)
588+
SUPPORTED_ARCHITECTURES = ("hf-internal-testing/tiny-random-BertForQuestionAnswering",)
592589

593590
@parameterized.expand(SUPPORTED_ARCHITECTURES)
591+
@pytest.mark.run_slow
592+
@slow
594593
def test_automodel_static_quantization(self, model_name):
595594
def preprocess_function(examples, tokenizer):
596595
return tokenizer(
@@ -630,6 +629,8 @@ def preprocess_function(examples, tokenizer):
630629
self.assertEqual(ov_config.quantization_config.to_dict(), loaded_config.quantization_config.to_dict())
631630

632631
@parameterized.expand(SUPPORTED_ARCHITECTURES)
632+
@pytest.mark.run_slow
633+
@slow
633634
def test_ovmodel_static_quantization(self, model_name):
634635
def preprocess_function(examples, tokenizer):
635636
return tokenizer(
@@ -670,12 +671,13 @@ def preprocess_function(examples, tokenizer):
670671

671672

672673
class OVTrainerTest(unittest.TestCase):
673-
SUPPORTED_ARCHITECTURES_WITH_EXPECTED_QUANTIZED_MATMULS = (("distilbert-base-uncased", 67, 38),)
674+
SUPPORTED_ARCHITECTURES_WITH_EXPECTED_QUANTIZED_MATMULS = (("albert", 65, 39),)
674675

675676
@parameterized.expand(SUPPORTED_ARCHITECTURES_WITH_EXPECTED_QUANTIZED_MATMULS)
676677
def test_aware_training_quantization(self, model_name, expected_fake_quantize, expected_int8):
677-
model = AutoModelForSequenceClassification.from_pretrained(model_name)
678-
tokenizer = AutoTokenizer.from_pretrained(model_name)
678+
model_id = MODEL_NAMES[model_name]
679+
model = AutoModelForSequenceClassification.from_pretrained(model_id)
680+
tokenizer = AutoTokenizer.from_pretrained(model_id)
679681
ov_config = OVConfig()
680682
dataset = load_dataset("glue", "sst2")
681683
dataset = dataset.map(

tests/openvino/test_stable_diffusion.py

+16
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import numpy as np
2121
import PIL
22+
import pytest
2223
import torch
2324
from diffusers import (
2425
StableDiffusionPipeline,
@@ -29,6 +30,7 @@
2930
from diffusers.utils.testing_utils import floats_tensor
3031
from openvino.runtime.ie_api import CompiledModel
3132
from parameterized import parameterized
33+
from transformers.testing_utils import slow
3234
from utils_tests import MODEL_NAMES, SEED
3335

3436
from optimum.intel import (
@@ -106,6 +108,8 @@ def test_num_images_per_prompt(self, model_arch: str):
106108
self.assertEqual(outputs.shape, (batch_size * num_images, height, width, 3))
107109

108110
@parameterized.expand(SUPPORTED_ARCHITECTURES)
111+
@pytest.mark.run_slow
112+
@slow
109113
def test_callback(self, model_arch: str):
110114
MODEL_NAMES[model_arch]
111115

@@ -178,6 +182,8 @@ def test_compare_diffusers_pipeline(self, model_arch: str):
178182
self.assertTrue(np.allclose(output.flatten(), expected_slice, atol=1e-1))
179183

180184
@parameterized.expand(SUPPORTED_ARCHITECTURES)
185+
@pytest.mark.run_slow
186+
@slow
181187
def test_num_images_per_prompt_static_model(self, model_arch: str):
182188
model_id = MODEL_NAMES[model_arch]
183189
pipeline = self.MODEL_CLASS.from_pretrained(model_id, export=True, compile=False, dynamic_shapes=False)
@@ -260,6 +266,8 @@ def test_image_reproducibility(self, model_arch: str):
260266
self.assertFalse(np.array_equal(ov_outputs_1.images[0], ov_outputs_3.images[0]))
261267

262268
@parameterized.expand(SUPPORTED_ARCHITECTURES)
269+
@pytest.mark.run_slow
270+
@slow
263271
def test_num_images_per_prompt_static_model(self, model_arch: str):
264272
model_id = MODEL_NAMES[model_arch]
265273
pipeline = self.MODEL_CLASS.from_pretrained(model_id, export=True, compile=False)
@@ -332,6 +340,8 @@ def test_compare_diffusers_pipeline(self, model_arch: str):
332340
self.assertTrue(np.allclose(outputs[0, -3:, -3:, -1].flatten(), expected_slice, atol=1e-1))
333341

334342
@parameterized.expand(SUPPORTED_ARCHITECTURES)
343+
@pytest.mark.run_slow
344+
@slow
335345
def test_num_images_per_prompt_static_model(self, model_arch: str):
336346
model_id = MODEL_NAMES[model_arch]
337347
pipeline = self.MODEL_CLASS.from_pretrained(model_id, export=True, compile=False, dynamic_shapes=False)
@@ -420,6 +430,8 @@ def test_image_reproducibility(self, model_arch: str):
420430
self.assertFalse(np.array_equal(ov_outputs_1.images[0], ov_outputs_3.images[0]))
421431

422432
@parameterized.expand(SUPPORTED_ARCHITECTURES)
433+
@pytest.mark.run_slow
434+
@slow
423435
def test_num_images_per_prompt_static_model(self, model_arch: str):
424436
model_id = MODEL_NAMES[model_arch]
425437
pipeline = self.MODEL_CLASS.from_pretrained(model_id, export=True, compile=False)
@@ -458,6 +470,8 @@ def test_inference(self):
458470
self.assertTrue(np.allclose(output.flatten(), expected_slice, atol=1e-3))
459471

460472
@parameterized.expand(SUPPORTED_ARCHITECTURES)
473+
@pytest.mark.run_slow
474+
@slow
461475
def test_num_images_per_prompt_static_model(self, model_arch: str):
462476
model_id = MODEL_NAMES[model_arch]
463477
pipeline = self.MODEL_CLASS.from_pretrained(model_id, export=True, compile=False, dynamic_shapes=False)
@@ -525,6 +539,8 @@ def test_compare_to_diffusers(self, model_arch: str):
525539
self.assertEqual(pipeline.device.type, ov_pipeline.device)
526540

527541
@parameterized.expand(SUPPORTED_ARCHITECTURES)
542+
@pytest.mark.run_slow
543+
@slow
528544
@unittest.skipIf(is_diffusers_version("<=", "0.21.4"), "not supported with this diffusers version")
529545
def test_num_images_per_prompt_static_model(self, model_arch: str):
530546
model_id = MODEL_NAMES[model_arch]

tests/openvino/test_training.py

+6
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import cpuinfo
2929
import evaluate
3030
import numpy as np
31+
import pytest
3132
import torch
3233
from datasets import load_dataset
3334
from nncf.experimental.torch.sparsity.movement.algo import MovementSparsityController
@@ -41,6 +42,7 @@
4142
AutoTokenizer,
4243
default_data_collator,
4344
)
45+
from transformers.testing_utils import slow
4446
from transformers.trainer_utils import EvalPrediction, TrainOutput
4547
from transformers.utils import WEIGHTS_NAME
4648

@@ -613,6 +615,8 @@ class OVTrainerImageClassificationTrainingTest(OVTrainerBaseTrainingTest):
613615
task = "image-classification"
614616

615617
@parameterized.expand(OVTRAINER_IMAGE_CLASSIFICATION_TEST_DESCRIPTORS.items())
618+
@pytest.mark.run_slow
619+
@slow
616620
@unittest.skipIf(is_transformers_version("<", "4.41.0"), reason="Mismatch in expected fake quantized op")
617621
def test_training(self, _, desc: OVTrainerTestDescriptor):
618622
self.run_ovtrainer_training_checks(desc)
@@ -791,6 +795,8 @@ class OVTrainerAudioClassificationTrainingTest(OVTrainerBaseTrainingTest):
791795
task = "audio-classification"
792796

793797
@parameterized.expand(OVTRAINER_AUDIO_CLASSIFICATION_TEST_DESCRIPTORS.items())
798+
@pytest.mark.run_slow
799+
@slow
794800
def test_training(self, _, desc: OVTrainerTestDescriptor):
795801
self.run_ovtrainer_training_checks(desc)
796802

0 commit comments

Comments
 (0)