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()