[XPU] Use encoder-only model runner for EC producer instances (#59320)
Signed-off-by: zhenwei-intel <zhenwei.liu@intel.com>
liuzhenwei committed
Sep 30, 2026 at 13:43 UTC
6945d142e51cb9b4ea1ad0d054280b80734339ae
2 files changed
+26
-2
vllm/v1/worker/xpu_model_runner.py
+13
@@ -11,6 +11,7 @@ from vllm.v1.worker.gpu.model_runner import (
11
GPUModelRunner as GPUModelRunnerV2,
12
)
13
from vllm.v1.worker.gpu_model_runner import GPUModelRunner
14
+from vllm.v1.worker.mm_encoder_model_runner import MMEncoderModelRunner
15
16
17
class XPUModelRunner(GPUModelRunner):
@@ -39,6 +40,18 @@ class XPUModelRunnerV2(GPUModelRunnerV2):
40
super().__init__(vllm_config, device)
41
42
43
+class XPUMMEncoderModelRunner(MMEncoderModelRunner):
44
+ """An encoder-only model runner for XPU devices."""
45
+
46
+ def __init__(
47
+ self,
48
+ vllm_config: VllmConfig,
49
+ device: torch.device,
50
+ ):
51
+ with _torch_cuda_wrapper():
52
+ super().__init__(vllm_config, device)
53
+
54
+
55
@contextmanager
56
def _torch_cuda_wrapper():
57
# Replace cuda APIs with xpu APIs. Each callable gets its own functools.partial
vllm/v1/worker/xpu_worker.py
+13
-2
@@ -13,7 +13,11 @@ from vllm.utils.torch_utils import set_random_seed
13
from vllm.v1.utils import report_usage_stats
14
from vllm.v1.worker.gpu_worker import Worker, init_worker_distributed_environment
15
from vllm.v1.worker.workspace import init_workspace_manager
16
-from vllm.v1.worker.xpu_model_runner import XPUModelRunner, XPUModelRunnerV2
16
+from vllm.v1.worker.xpu_model_runner import (
17
+ XPUMMEncoderModelRunner,
18
+ XPUModelRunner,
19
+ XPUModelRunnerV2,
20
+)
21
22
from .utils import request_memory
23
@@ -215,7 +219,14 @@ class XPUWorker(Worker):
219
init_workspace_manager(self.device, num_ubatches)
220
221
# Construct the model runner
218
- model_runner = XPUModelRunnerV2 if self.use_v2_model_runner else XPUModelRunner
222
+ if self.use_v2_model_runner:
223
+ model_runner = (
224
+ XPUMMEncoderModelRunner
225
+ if self.vllm_config.is_mm_encoder_only
226
+ else XPUModelRunnerV2
227
+ )
228
+ else:
229
+ model_runner = XPUModelRunner # type: ignore[assignment]
230
self.model_runner = model_runner( # type: ignore
231
self.vllm_config, self.device
232
)