Skip to content

Commit 86a1eca

Browse files
committed
Update OV Tokenizers Availability Check
1 parent feb12dd commit 86a1eca

File tree

1 file changed

+39
-58
lines changed

1 file changed

+39
-58
lines changed

optimum/intel/utils/import_utils.py

+39-58
Original file line numberDiff line numberDiff line change
@@ -175,67 +175,48 @@ def _create_pip_update_command(package_name: str, compatible_version: str, is_de
175175

176176
@functools.lru_cache(1)
177177
def is_openvino_tokenizers_available():
178-
_openvino_tokenizers_available = (
179-
importlib.util.find_spec("openvino_tokenizers") is not None and _openvino_available
180-
)
181-
_openvino_tokenizers_version = "N/A"
182-
if _openvino_tokenizers_available:
183-
try:
184-
_openvino_tokenizers_version = importlib_metadata.version("openvino_tokenizers")
185-
except importlib_metadata.PackageNotFoundError:
186-
return False
187-
188-
if _openvino_available and _openvino_tokenizers_available and _openvino_tokenizers_version != "N/A":
189-
_is_ovt_dev_version = "dev" in _openvino_tokenizers_version
190-
try:
191-
_ov_version = importlib_metadata.version("openvino")
192-
except importlib_metadata.PackageNotFoundError:
193-
try:
194-
_ov_version = importlib_metadata.version("openvino-nightly")
195-
except importlib_metadata.PackageNotFoundError:
196-
_ov_version = _openvino_version
197-
198-
_is_ov_dev_version = "dev" in _ov_version
199-
if _is_ovt_dev_version:
200-
_compatible_openvino_major_version, _, _dev_date = _openvino_tokenizers_version.rsplit(".", 2)
201-
_compatible_ov_version = _compatible_openvino_major_version + "." + _dev_date
202-
_compatible_ovt_version = _ov_version.replace("dev", "0.dev")
203-
else:
204-
_compatible_openvino_major_version = _openvino_tokenizers_version.rsplit(".", 1)[0]
205-
_compatible_ov_version = _compatible_openvino_major_version
206-
if _is_ov_dev_version:
207-
_compatible_ovt_version = _ov_version.replace("dev", "0.dev")
208-
else:
209-
_compatible_ovt_version = _ov_version + ".0"
210-
211-
_update_ov_command = _create_pip_update_command(
212-
"openvino", _compatible_ov_version, is_dev_version=_is_ovt_dev_version
178+
if not is_openvino_available():
179+
return False
180+
181+
try:
182+
import openvino_tokenizers
183+
except ImportError:
184+
logger.info(
185+
"OpenVINO Tokenizers is not available, tokenizer won't be converted. To automatically "
186+
"convert tokenizer during OpenVINO model export install OpenVINO Tokenizers.\n"
187+
"For PyPI distribution of OpenVINO:\n"
188+
"pip install openvino-tokenizers[transformers]\n"
189+
"For pre-release OpenVINO version:\n"
190+
"pip install --pre -U openvino openvino-tokenizers"
191+
"--extra-index-url https://storage.openvinotoolkit.org/simple/wheels/nightly\n"
192+
"For archive OpenVINO distribution:\n"
193+
"pip install --no-deps openvino-tokenizers\n"
194+
"For detailed installation instructions go to "
195+
"https://github.com/openvinotoolkit/openvino_tokenizers/tree/master?tab=readme-ov-file#installation"
213196
)
214-
_update_ovt_command = _create_pip_update_command(
215-
"openvino-tokenizers", _compatible_ovt_version, is_dev_version=_is_ov_dev_version
197+
return False
198+
199+
try:
200+
openvino_tokenizers._get_factory()
201+
except RuntimeError as e:
202+
tokenizers_version = openvino_tokenizers.__version__
203+
if tokenizers_version == "0.0.0.0":
204+
tokenizers_version = importlib_metadata.version("openvino_tokenizers") or tokenizers_version
205+
logger.warning(
206+
"OpenVINO and OpenVINO Tokenizers versions are not binary compatible.\n"
207+
f"OpenVINO version: {_openvino_version}\n"
208+
f"OpenVINO Tokenizers version: {tokenizers_version}\n"
209+
"First 3 numbers should be the same. Update OpenVINO Tokenizers to compatible version. "
210+
"It is recommended to use the same day builds for pre-release version.\n"
211+
"For archive installation of OpenVINO try to build OpenVINO Tokenizers from source: "
212+
"https://github.com/openvinotoolkit/openvino_tokenizers/tree/master?tab=readme-ov-file"
213+
"#build-and-install-from-source\n"
214+
f"Error: {e}\n"
215+
"Tokenizer won't be converted."
216216
)
217+
return False
217218

218-
_openvino_tokenizers_available = _ov_version.startswith(_compatible_openvino_major_version)
219-
220-
if not _openvino_tokenizers_available:
221-
logger.warning(
222-
"OpenVINO Tokenizers version is not compatible with OpenVINO version. "
223-
f"Installed OpenVINO version: {_ov_version}, "
224-
f"OpenVINO Tokenizers requires {_compatible_ov_version}. "
225-
"OpenVINO Tokenizers models will not be added during export. "
226-
f"Update OpenVINO with \n{_update_ov_command}\n"
227-
f"Or update OpenVINO Tokenizers with \n{_update_ovt_command}"
228-
)
229-
elif _ov_version != _compatible_ov_version:
230-
logger.info(
231-
"OpenVINO Tokenizers version is not aligned with OpenVINO version. "
232-
f"Installed OpenVINO version: {_ov_version}, "
233-
f"OpenVINO Tokenizers version: {_compatible_ov_version}. "
234-
"If you didn't get OpenVINO Tokenizer after model conversion "
235-
f"try to align libraries versions with one of two commands:\n{_update_ov_command}\n"
236-
f"Or\n{_update_ovt_command}"
237-
)
238-
return _openvino_tokenizers_available
219+
return True
239220

240221

241222
def is_nncf_available():

0 commit comments

Comments
 (0)