2
2
3
3
import logging
4
4
import traceback
5
+ from contextlib import suppress
5
6
from itertools import chain
6
7
from typing import TYPE_CHECKING , Optional
7
8
14
15
logger = logging .getLogger (__name__ )
15
16
16
17
18
+ def vllm_version_matches_substr (substr : str ) -> bool :
19
+ """
20
+ Check to see if the vLLM version matches a substring.
21
+ """
22
+ from importlib .metadata import PackageNotFoundError , version
23
+ try :
24
+ vllm_version = version ("vllm" )
25
+ except PackageNotFoundError as e :
26
+ logger .warning (
27
+ "The vLLM package was not found, so its version could not be "
28
+ "inspected. This may cause platform detection to fail." )
29
+ raise e
30
+ return substr in vllm_version
31
+
32
+
17
33
def tpu_platform_plugin () -> Optional [str ]:
18
34
is_tpu = False
19
35
try :
@@ -33,8 +49,6 @@ def cuda_platform_plugin() -> Optional[str]:
33
49
is_cuda = False
34
50
35
51
try :
36
- from importlib .metadata import version
37
-
38
52
from vllm .utils import import_pynvml
39
53
pynvml = import_pynvml ()
40
54
pynvml .nvmlInit ()
@@ -45,7 +59,7 @@ def cuda_platform_plugin() -> Optional[str]:
45
59
# Otherwise, vllm will always activate cuda plugin
46
60
# on a GPU machine, even if in a cpu build.
47
61
is_cuda = (pynvml .nvmlDeviceGetCount () > 0
48
- and "cpu" not in version ( "vllm " ))
62
+ and not vllm_version_matches_substr ( "cpu " ))
49
63
finally :
50
64
pynvml .nvmlShutdown ()
51
65
except Exception as e :
@@ -113,8 +127,7 @@ def xpu_platform_plugin() -> Optional[str]:
113
127
def cpu_platform_plugin () -> Optional [str ]:
114
128
is_cpu = False
115
129
try :
116
- from importlib .metadata import version
117
- is_cpu = "cpu" in version ("vllm" )
130
+ is_cpu = vllm_version_matches_substr ("cpu" )
118
131
if not is_cpu :
119
132
import platform
120
133
is_cpu = platform .machine ().lower ().startswith ("arm" )
@@ -138,11 +151,8 @@ def neuron_platform_plugin() -> Optional[str]:
138
151
139
152
def openvino_platform_plugin () -> Optional [str ]:
140
153
is_openvino = False
141
- try :
142
- from importlib .metadata import version
143
- is_openvino = "openvino" in version ("vllm" )
144
- except Exception :
145
- pass
154
+ with suppress (Exception ):
155
+ is_openvino = vllm_version_matches_substr ("openvino" )
146
156
147
157
return "vllm.platforms.openvino.OpenVinoPlatform" if is_openvino else None
148
158
0 commit comments