@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 71557a5f7c
Fork 0

A high-throughput and memory-efficient inference and serving engine for LLMs

Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git

Synced Nov 14, 05:30 UTC

[CI] Fix mypy for `vllm/executor` (#26845)

Signed-off-by: yewentao256 <zhyanwentao@126.com>

Wentao Ye committed Oct 15, 2025 at 04:23 UTC 71557a5f7c221b63759a0d87c0b175b1bab243e6
4 files changed +23 -11
tools/pre_commit/mypy.py
+1 -1
@@ -28,6 +28,7 @@ FILES = [
28 "vllm/assets",
29 "vllm/distributed",
30 "vllm/entrypoints",
31 + "vllm/executor",
32 "vllm/inputs",
33 "vllm/logging_utils",
34 "vllm/multimodal",
@@ -44,7 +45,6 @@ SEPARATE_GROUPS = [
45 "vllm/attention",
46 "vllm/compilation",
47 "vllm/engine",
47 - "vllm/executor",
48 "vllm/inputs",
49 "vllm/lora",
50 "vllm/model_executor",
vllm/executor/executor_base.py
+4 -3
@@ -18,7 +18,7 @@ from vllm.lora.request import LoRARequest
18 from vllm.sequence import ExecuteModelRequest
19 from vllm.tasks import SupportedTask
20 from vllm.utils import make_async
21 -from vllm.v1.outputs import PoolerOutput, SamplerOutput
21 +from vllm.v1.outputs import SamplerOutput
22 from vllm.v1.worker.worker_base import WorkerBase
23
24 logger = init_logger(__name__)
@@ -54,7 +54,7 @@ class ExecutorBase(ABC):
54 self._init_executor()
55 self.is_sleeping = False
56 self.sleeping_tags: set[str] = set()
57 - self.kv_output_aggregator = None
57 + self.kv_output_aggregator: KVOutputAggregator | None = None
58
59 @abstractmethod
60 def _init_executor(self) -> None:
@@ -143,8 +143,9 @@ class ExecutorBase(ABC):
143
144 def execute_model(
145 self, execute_model_req: ExecuteModelRequest
146 - ) -> list[SamplerOutput | PoolerOutput] | None:
146 + ) -> list[SamplerOutput]:
147 output = self.collective_rpc("execute_model", args=(execute_model_req,))
148 + assert output[0] is not None
149 return output[0]
150
151 def stop_remote_worker_execution_loop(self) -> None:
vllm/executor/ray_distributed_executor.py
+12 -6
@@ -217,7 +217,9 @@ class RayDistributedExecutor(DistributedExecutorBase):
217 num_gpus=num_gpus,
218 scheduling_strategy=scheduling_strategy,
219 **ray_remote_kwargs,
220 - )(RayWorkerWrapper).remote(vllm_config=self.vllm_config, rpc_rank=rank)
220 + )(RayWorkerWrapper).remote( # type: ignore[attr-defined]
221 + vllm_config=self.vllm_config, rpc_rank=rank
222 + )
223 else:
224 worker = ray.remote(
225 num_cpus=0,
@@ -225,7 +227,9 @@ class RayDistributedExecutor(DistributedExecutorBase):
227 resources={current_platform.ray_device_key: num_gpus},
228 scheduling_strategy=scheduling_strategy,
229 **ray_remote_kwargs,
228 - )(RayWorkerWrapper).remote(vllm_config=self.vllm_config, rpc_rank=rank)
230 + )(RayWorkerWrapper).remote( # type: ignore[attr-defined]
231 + vllm_config=self.vllm_config, rpc_rank=rank
232 + )
233 worker_metadata.append(RayWorkerMetaData(worker=worker, created_rank=rank))
234
235 worker_ips = ray.get(
@@ -303,7 +307,7 @@ class RayDistributedExecutor(DistributedExecutorBase):
307 continue
308 worker_node_and_gpu_ids.append(
309 ray.get(worker.get_node_and_gpu_ids.remote())
306 - ) # type: ignore
310 + ) # type: ignore[attr-defined]
311
312 node_workers = defaultdict(list) # node id -> list of worker ranks
313 node_gpus = defaultdict(list) # node id -> list of gpu ids
@@ -495,7 +499,9 @@ class RayDistributedExecutor(DistributedExecutorBase):
499 if async_run_tensor_parallel_workers_only:
500 ray_workers = self.non_driver_workers
501 ray_worker_outputs = [
498 - worker.execute_method.remote(sent_method, *args, **kwargs)
502 + worker.execute_method.remote( # type: ignore[attr-defined]
503 + sent_method, *args, **kwargs
504 + )
505 for worker in ray_workers
506 ]
507
@@ -715,7 +721,7 @@ class RayDistributedExecutor(DistributedExecutorBase):
721 tasks.append(
722 asyncio.create_task(
723 _run_task_with_lock(
718 - driver_worker.execute_method.remote,
724 + driver_worker.execute_method.remote, # type: ignore[attr-defined]
725 self.pp_locks[pp_rank],
726 "execute_model",
727 execute_model_req,
@@ -733,7 +739,7 @@ class RayDistributedExecutor(DistributedExecutorBase):
739 "worker loop is disabled for VLLM_USE_RAY_SPMD_WORKER=1"
740 )
741 coros = [
736 - worker.execute_method.remote("start_worker_execution_loop")
742 + worker.execute_method.remote("start_worker_execution_loop") # type: ignore[attr-defined]
743 for worker in self.non_driver_workers
744 ]
745 return await asyncio.gather(*coros)
vllm/executor/ray_utils.py
+6 -1
@@ -90,14 +90,17 @@ try:
90
91 execute_model_req = self.input_decoder.decode(serialized_req)
92
93 + assert self.worker is not None, "Worker is not initialized"
94 +
95 # TODO(swang): This is needed right now because Ray Compiled Graph
96 # executes on a background thread, so we need to reset torch's
97 # current device.
98 if not self.compiled_dag_cuda_device_set:
99 + assert self.worker.device is not None
100 current_platform.set_device(self.worker.device)
101 self.compiled_dag_cuda_device_set = True
102
100 - output = self.worker._execute_model_spmd(
103 + output = self.worker._execute_model_spmd( # type: ignore[attr-defined]
104 execute_model_req, intermediate_tensors
105 )
106 # Pipeline model request and output to the next pipeline stage.
@@ -119,6 +122,7 @@ try:
122 # Not needed
123 pass
124 else:
125 + assert self.worker.device is not None
126 current_platform.set_device(self.worker.device)
127
128 self.compiled_dag_cuda_device_set = True
@@ -139,6 +143,7 @@ try:
143 scheduler_output, intermediate_tensors = scheduler_output
144 else:
145 scheduler_output, intermediate_tensors = scheduler_output, None
146 + assert self.worker.model_runner is not None
147 output = self.worker.model_runner.execute_model(
148 scheduler_output, intermediate_tensors
149 )