From a956a8126e6bd184cb0a6b8f7318fe4717675c2f Mon Sep 17 00:00:00 2001 From: "Kevin H. Luu" Date: Thu, 15 Oct 2026 18:00:17 -0700 Subject: [PATCH] [Bugfix][MoE] Keep the gate's hash_indices_table out of RoutedExperts parameters (#61930) Signed-off-by: khluu Co-authored-by: Claude Opus 5.5 --- vllm/model_executor/layers/fused_moe/layer.py | 2 -- vllm/model_executor/layers/fused_moe/routed_experts.py | 5 +++-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/vllm/model_executor/layers/fused_moe/layer.py b/vllm/model_executor/layers/fused_moe/layer.py index 7be89aa4c8..a57bb3472b 100644 --- a/vllm/model_executor/layers/fused_moe/layer.py +++ b/vllm/model_executor/layers/fused_moe/layer.py @@ -439,8 +439,6 @@ def FusedMoEFactory( hash_indices_table=hash_indices_table, **routed_experts_args if routed_experts_args is not None else {}, ) - if hash_indices_table is not None: - object.__setattr__(routed_experts, "hash_indices_table", hash_indices_table) if runner_cls is None: runner_cls = MoERunner diff --git a/vllm/model_executor/layers/fused_moe/routed_experts.py b/vllm/model_executor/layers/fused_moe/routed_experts.py index 2d7ab1e6aa..7b5fff06e2 100644 --- a/vllm/model_executor/layers/fused_moe/routed_experts.py +++ b/vllm/model_executor/layers/fused_moe/routed_experts.py @@ -79,7 +79,7 @@ class RoutedExperts(PluggableLayer): - Executing routed experts via quant_method.apply() """ - # Hash-routing table, owned by the gate; set by FusedMoEFactory. + # Hash-routing table, owned by the gate. hash_indices_table: torch.Tensor | None = None def __init__( @@ -156,7 +156,8 @@ class RoutedExperts(PluggableLayer): # Set by bind_routed_experts_capturer for monolithic kernels. self.routing_sink: RoutedExpertsSink | None = None self.apply_router_weight_on_input = apply_router_weight_on_input - self.hash_indices_table = hash_indices_table + # The gate owns this Parameter: keep it out of this module's parameters. + object.__setattr__(self, "hash_indices_table", hash_indices_table) # End random parameters self._loaded_expert_biases: set[str] = set() self._fused_shared_expert_quantizer = self._get_fused_shared_expert_quantizer()