Skip to content

Commit ecfe7e3

Browse files
committed
Add SD quant API test
1 parent 61a3784 commit ecfe7e3

File tree

3 files changed

+65
-13
lines changed

3 files changed

+65
-13
lines changed

optimum/intel/openvino/quantization.py

+3
Original file line numberDiff line numberDiff line change
@@ -460,6 +460,9 @@ def _quantize_ovbasemodel(
460460
if calibration_dataset is None:
461461
raise ValueError("Calibration dataset is required to run quantization.")
462462

463+
if is_diffusers_available() and isinstance(self.model, OVDiffusionPipeline):
464+
raise NotImplementedError(f"Mixed precision quantization isn't supported for diffusers.")
465+
463466
quantized_model = _mixed_quantization(self.model.model, quantization_config, calibration_dataset, **kwargs)
464467
self.model.model = quantized_model
465468
self.model.request = None

tests/openvino/test_exporters_cli.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -269,10 +269,10 @@ class OVCLIExportTestCase(unittest.TestCase):
269269
"int8",
270270
"--dataset conceptual_captions --num-samples 1 --trust-remote-code",
271271
[
272-
0, 0, 0, 112
272+
112, 0, 0, 0,
273273
],
274274
[
275-
{"int8": 34}, {"int8": 42}, {"int8": 64}, {"int8": 121},
275+
{"int8": 121}, {"int8": 42}, {"int8": 34}, {"int8": 64},
276276
],
277277
),
278278
(
@@ -281,10 +281,10 @@ class OVCLIExportTestCase(unittest.TestCase):
281281
"f8e5m2",
282282
"--dataset laion/220k-GPT4Vision-captions-from-LIVIS --num-samples 1 --trust-remote-code",
283283
[
284-
0, 0, 0, 174
284+
174, 0, 0, 0, 0,
285285
],
286286
[
287-
{"int8": 34}, {"int8": 42}, {"int8": 64}, {"f8e5m2": 183},
287+
{"f8e5m2": 183}, {"int8": 42}, {"int8": 34}, {"int8": 64}, {"int8": 66},
288288
],
289289
),
290290
(
@@ -293,10 +293,10 @@ class OVCLIExportTestCase(unittest.TestCase):
293293
"f8e4m3",
294294
"--dataset laion/filtered-wit --num-samples 1 --trust-remote-code",
295295
[
296-
0, 0, 0, 79
296+
79, 0, 0, 0,
297297
],
298298
[
299-
{"int8": 34}, {"int8": 42}, {"int8": 40}, {"f8e4m3": 84},
299+
{"f8e4m3": 84}, {"int8": 42}, {"int8": 34}, {"int8": 40},
300300
],
301301
),
302302
]
@@ -733,7 +733,7 @@ def test_exporters_cli_full_quantization(
733733
elif "text-generation" in task:
734734
submodels = [model]
735735
elif any(x in task for x in ("stable-diffusion", "latent-consistency")):
736-
submodels = [model.vae_encoder, model.vae_decoder, model.text_encoder, model.unet]
736+
submodels = model.ov_submodels.values()
737737
else:
738738
raise Exception("Unexpected task.")
739739

tests/openvino/test_quantization.py

+55-6
Original file line numberDiff line numberDiff line change
@@ -19,26 +19,22 @@
1919
import itertools
2020
import logging
2121
import unittest
22-
from collections import defaultdict, Iterable
22+
from collections import defaultdict
23+
from collections.abc import Iterable
2324
from enum import Enum
2425
from functools import partial
2526
from typing import Union, Type
2627

2728
import openvino as ov
2829
import pytest
29-
import evaluate
3030
import numpy as np
3131
import torch
32-
from datasets import load_dataset
3332
from parameterized import parameterized
3433
import nncf
3534
from transformers import (
3635
AutoModelForQuestionAnswering,
37-
AutoModelForSequenceClassification,
3836
AutoTokenizer,
3937
AutoProcessor,
40-
TrainingArguments,
41-
default_data_collator,
4238
)
4339
from transformers.testing_utils import slow
4440
from transformers.utils.quantization_config import QuantizationMethod
@@ -234,6 +230,57 @@ class OVQuantizerTest(unittest.TestCase):
234230
{"f8e5m2": 2, "int4": 28},
235231
],
236232
),
233+
(
234+
OVStableDiffusionPipeline,
235+
"stable-diffusion",
236+
dict(
237+
weight_only=False,
238+
dataset="conceptual_captions",
239+
num_samples=1,
240+
processor=MODEL_NAMES["stable-diffusion"],
241+
trust_remote_code=True,
242+
),
243+
[
244+
112, 0, 0, 0,
245+
],
246+
[
247+
{"int8": 121}, {"int8": 42}, {"int8": 34}, {"int8": 64},
248+
],
249+
),
250+
(
251+
OVStableDiffusionXLPipeline,
252+
"stable-diffusion-xl",
253+
dict(
254+
weight_only=False,
255+
dtype="f8e5m2",
256+
dataset="laion/220k-GPT4Vision-captions-from-LIVIS",
257+
num_samples=1,
258+
processor=MODEL_NAMES["stable-diffusion-xl"],
259+
trust_remote_code=True,
260+
),
261+
[
262+
174, 0, 0, 0, 0,
263+
],
264+
[
265+
{"f8e5m2": 183}, {"int8": 42}, {"int8": 34}, {"int8": 64}, {"int8": 66},
266+
],
267+
),
268+
(
269+
OVLatentConsistencyModelPipeline,
270+
"latent-consistency",
271+
OVQuantizationConfig(
272+
dtype="f8e4m3",
273+
dataset="laion/filtered-wit",
274+
num_samples=1,
275+
trust_remote_code=True,
276+
),
277+
[
278+
79, 0, 0, 0,
279+
],
280+
[
281+
{"f8e4m3": 84}, {"int8": 42}, {"int8": 34}, {"int8": 40},
282+
],
283+
),
237284
]
238285

239286
@parameterized.expand(SUPPORTED_ARCHITECTURES_TORCH_MODEL)
@@ -359,6 +406,8 @@ def test_ov_model_static_quantization_with_auto_dataset(
359406
tokens = tokenizer("This is a sample input", return_tensors="pt")
360407
outputs = ov_model(**tokens)
361408
self.assertTrue("logits" in outputs)
409+
elif any(x == model_cls for x in (OVStableDiffusionPipeline, OVStableDiffusionXLPipeline, OVLatentConsistencyModelPipeline)):
410+
submodels = ov_model.ov_submodels.values()
362411
else:
363412
raise Exception("Unexpected model class.")
364413

0 commit comments

Comments
 (0)