2020
2121import 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
8775def _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