Skip to content
This repository was archived by the owner on Jun 3, 2025. It is now read-only.

Commit 9c906c5

Browse files
authored
Transformers auto install - don't import before install (#1222) (#1224)
1 parent be4a6a7 commit 9c906c5

File tree

1 file changed

+30
-26
lines changed

1 file changed

+30
-26
lines changed

src/sparseml/transformers/__init__.py

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -20,22 +20,10 @@
2020

2121
import logging as _logging
2222

23-
from packaging import version
23+
import pkg_resources
2424

2525

26-
try:
27-
import transformers as _transformers
28-
29-
# triggers error if the latest neuralmagic/transformers is not installed
30-
_nm_integrated = _transformers.NM_INTEGRATED
31-
_upstream_base_version = str(version.parse(_transformers.__version__))
32-
_expected_upstream_base_version = "4.23.1"
33-
assert _nm_integrated
34-
assert _upstream_base_version == _expected_upstream_base_version
35-
_transformers_import_error = None
36-
except Exception as _transformers_import_err:
37-
_nm_integrated = False
38-
_transformers_import_error = _transformers_import_err
26+
_EXPECTED_VERSION = "4.23.1"
3927

4028

4129
_LOGGER = _logging.getLogger(__name__)
@@ -85,7 +73,17 @@ def _install_transformers_and_deps():
8573

8674

8775
def _check_transformers_install():
88-
if _transformers_import_error is not None:
76+
transformers_version = next(
77+
(
78+
pkg.version
79+
for pkg in pkg_resources.working_set
80+
if pkg.project_name.lower() == "transformers"
81+
),
82+
None,
83+
)
84+
85+
# Either no transformers install is found or wrong version installed
86+
if transformers_version != _EXPECTED_VERSION:
8987
import os
9088

9189
if os.getenv("NM_NO_AUTOINSTALL_TRANSFORMERS", False):
@@ -95,22 +93,28 @@ def _check_transformers_install():
9593
)
9694
# skip any further checks
9795
return
98-
elif _nm_integrated:
96+
else:
9997
_LOGGER.warning(
100-
f"incompatible sparseml-transformers v{_upstream_base_version} "
101-
"detected. Overwriting exiting installation with sparseml-transformers "
102-
f"v{_expected_upstream_base_version}. Set environment variable "
98+
f"sparseml-transformers v{_EXPECTED_VERSION} installation not "
99+
f"detected. Installing sparseml-transformers v{_EXPECTED_VERSION} "
100+
"dependencies if transformers is already installed in the "
101+
"environment, it will be overwritten. Set environment variable "
103102
"NM_NO_AUTOINSTALL_TRANSFORMERS to disable"
104103
)
105104
_install_transformers_and_deps()
106-
else:
107-
_LOGGER.warning(
108-
"sparseml-transformers installation not detected. Installing "
109-
"sparseml-transformers dependencies if transformers is already "
110-
"installed in the environment, it will be overwritten. Set "
111-
"environment variable NM_NO_AUTOINSTALL_TRANSFORMERS to disable"
112-
)
105+
106+
else:
107+
import transformers as _transformers
108+
109+
# Edge case where user has expected version of transformers installed, but
110+
# not the nm integrated one
111+
if not _transformers.NM_INTEGRATED:
113112
_install_transformers_and_deps()
113+
raise RuntimeError(
114+
"Installed transformers package has been overwritten with "
115+
"sparseml-transformers. Stopping process as this is likely to cause "
116+
"import issues. Please re-run command"
117+
)
114118

115119
# re check import after potential install
116120
try:

0 commit comments

Comments
 (0)