Skip to content

Commit 8d2ec41

Browse files
committed
Check OV Compatibility
1 parent 7ee347e commit 8d2ec41

File tree

2 files changed

+39
-16
lines changed

2 files changed

+39
-16
lines changed

optimum/exporters/openvino/__main__.py

+9-4
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,12 @@
2626
from optimum.utils import DEFAULT_DUMMY_SHAPES
2727
from optimum.utils.save_utils import maybe_load_preprocessors, maybe_save_preprocessors
2828

29-
from ...intel.utils.import_utils import is_nncf_available, is_optimum_version, is_transformers_version
29+
from ...intel.utils.import_utils import (
30+
is_nncf_available,
31+
is_openvino_tokenizers_available,
32+
is_optimum_version,
33+
is_transformers_version,
34+
)
3035
from .convert import export_models, export_tokenizer
3136
from .stateful import ensure_export_task_support_stateful
3237

@@ -339,7 +344,7 @@ class StoreAttr(object):
339344
generation_config.save_pretrained(output)
340345
maybe_save_preprocessors(model_name_or_path, output)
341346

342-
if tokenizer is not None:
347+
if tokenizer is not None and is_openvino_tokenizers_available():
343348
try:
344349
export_tokenizer(tokenizer, output)
345350
except Exception as exception:
@@ -375,12 +380,12 @@ class StoreAttr(object):
375380
feature_extractor.save_pretrained(output.joinpath("feature_extractor"))
376381

377382
tokenizer = getattr(model, "tokenizer", None)
378-
if tokenizer is not None:
383+
if tokenizer is not None and is_openvino_tokenizers_available():
379384
tokenizer.save_pretrained(output.joinpath("tokenizer"))
380385
export_tokenizer(tokenizer, output)
381386

382387
tokenizer_2 = getattr(model, "tokenizer_2", None)
383-
if tokenizer_2 is not None:
388+
if tokenizer_2 is not None and is_openvino_tokenizers_available():
384389
tokenizer_2.save_pretrained(output.joinpath("tokenizer_2"))
385390
export_tokenizer(tokenizer, output, suffix="_2")
386391

optimum/intel/utils/import_utils.py

+30-12
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
# limitations under the License.
1414

1515
import importlib.util
16+
import logging
1617
import operator as op
1718
import sys
1819
from collections import OrderedDict
@@ -27,6 +28,8 @@
2728
import importlib.metadata as importlib_metadata
2829

2930

31+
logger = logging.getLogger(__name__)
32+
3033
STR_OPERATION_TO_FUNC = {">": op.gt, ">=": op.ge, "==": op.eq, "!=": op.ne, "<=": op.le, "<": op.lt}
3134

3235
_optimum_version = importlib_metadata.version("optimum")
@@ -75,13 +78,38 @@
7578
version = get_version()
7679
# avoid invalid format
7780
if "-" in version:
78-
major_version, dev_info = version.split("-", 1)
81+
ov_major_version, dev_info = version.split("-", 1)
7982
commit_id = dev_info.split("-")[0]
80-
version = f"{major_version}-{commit_id}"
83+
version = f"{ov_major_version}-{commit_id}"
8184
_openvino_version = version
8285
except ImportError:
8386
_openvino_available = False
8487

88+
_openvino_tokenizers_available = importlib.util.find_spec("openvino_tokenizers") is not None and _openvino_available
89+
_openvino_tokenizers_version = "N/A"
90+
if _openvino_tokenizers_available:
91+
try:
92+
_openvino_tokenizers_version = importlib_metadata.version("openvino_tokenizers")
93+
except importlib_metadata.PackageNotFoundError:
94+
_openvino_tokenizers_available = False
95+
96+
if _openvino_tokenizers_available and _openvino_tokenizers_version != "N/A":
97+
_compatible_openvino_version = next(
98+
(
99+
requirement.split("==")[-1]
100+
for requirement in importlib_metadata.requires("openvino-tokenizers")
101+
if requirement.startswith("openvino==")
102+
),
103+
"",
104+
)
105+
_openvino_tokenizers_available = _compatible_openvino_version == ov_major_version
106+
if not _openvino_tokenizers_available:
107+
logger.warning(
108+
"OpenVINO Tokenizer version is not compatible with OpenVINO version. "
109+
f"Installed OpenVINO version: {ov_major_version},"
110+
f"OpenVINO Tokenizers requires {_compatible_openvino_version}. "
111+
f"OpenVINO Tokenizers models will not be added during export."
112+
)
85113

86114
_nncf_available = importlib.util.find_spec("nncf") is not None
87115
_nncf_version = "N/A"
@@ -91,16 +119,6 @@
91119
except importlib_metadata.PackageNotFoundError:
92120
_nncf_available = False
93121

94-
95-
_openvino_tokenizers_available = importlib.util.find_spec("openvino_tokenizers") is not None
96-
_openvino_tokenizers_version = "N/A"
97-
if _openvino_tokenizers_available:
98-
try:
99-
_openvino_tokenizers_version = importlib_metadata.version("openvino_tokenizers")
100-
except importlib_metadata.PackageNotFoundError:
101-
_openvino_tokenizers_available = False
102-
103-
104122
_diffusers_available = importlib.util.find_spec("diffusers") is not None
105123
_diffusers_version = "N/A"
106124
if _diffusers_available:

0 commit comments

Comments
 (0)