From 006af4b9562d0b60de0f1b11ab2fb33dea646cde Mon Sep 17 00:00:00 2001 From: aoshen02 Date: Sun, 10 May 2026 09:01:04 +0800 Subject: [PATCH] [Bugfix] Skip routed-experts hot path when disabled (#42148) --- vllm/v1/worker/gpu_model_runner.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/vllm/v1/worker/gpu_model_runner.py b/vllm/v1/worker/gpu_model_runner.py index bef78130680..bbd4bb35f60 100644 --- a/vllm/v1/worker/gpu_model_runner.py +++ b/vllm/v1/worker/gpu_model_runner.py @@ -6154,7 +6154,8 @@ class GPUModelRunner( "Skipping CUDA graph capture. To turn on CUDA graph capture, " "ensure `cudagraph_mode` was not manually set to `NONE`" ) - self.init_routed_experts_capturer() + if self.model_config.enable_return_routed_experts: + self.init_routed_experts_capturer() return 0 # Initialize encoder CUDA graph manager if enabled. @@ -6193,7 +6194,8 @@ class GPUModelRunner( # address is baked into the graph. Do NOT call this inside # _capture_cudagraphs() -- creating the capturer twice replaces # the device buffer, causing graphs to write to a dead buffer. - self.init_routed_experts_capturer() + if self.model_config.enable_return_routed_experts: + self.init_routed_experts_capturer() # Trigger CUDA graph capture for specific shapes. # Capture the large shapes first so that the smaller shapes @@ -6989,6 +6991,10 @@ class GPUModelRunner( "Initializing routed experts capturer, enable_return_routed_experts: %s", self.model_config.enable_return_routed_experts, ) + if not self.model_config.enable_return_routed_experts: + self.routed_experts_initialized = False + return + from vllm.distributed import get_tp_group if hasattr(self.model_config.hf_text_config, "n_shared_experts"):