vllm.model_executor.layers.fused_moe.utils ¶
Functions:
-
count_expert_num_tokens–Count the number to tokens assigned to each expert.
-
fi_moe_largest_bucket–Estimate FlashInfer's MoE autotuning maximum token count.
-
is_model_fused_shared_expert_compatible–Resolve one fused-shared-expert state for a model's MoE layers.
-
moe_use_td_hw_supported–Whether the current device can run the TD (gather) path of
-
resolve_layer_fused_shared_expert–Resolve whether AITER fused shared-expert execution is enabled.
-
resolve_moe_use_td–Tri-state resolver for
VLLM_TRITON_USE_TD. -
warn_if_moe_use_td_ineffective–One-shot warning when
VLLM_TRITON_USE_TDis set but ignored.
_fp8_quantize(A, A_scale, per_act_token, block_shape=None) ¶
Perform fp8 quantization on the inputs. If a block_shape is provided, the output will be blocked.
Source code in vllm/model_executor/layers/fused_moe/utils.py
_int8_quantize(A, A_scale, per_act_token, block_shape=None) ¶
Perform int8 quantization on the inputs. If a block_shape is provided, the output will be blocked.
Source code in vllm/model_executor/layers/fused_moe/utils.py
_resize_cache(x, v) ¶
Shrink the given tensor and apply the given view to it. This is used to resize the intermediate fused_moe caches.
Source code in vllm/model_executor/layers/fused_moe/utils.py
count_expert_num_tokens(topk_ids, num_local_experts, expert_map) ¶
Count the number to tokens assigned to each expert.
Parameters: - topk_ids (torch.Tensor): Tensor mapping each token to its list of experts. - num_local_experts (int): Number of experts in this rank. - expert_map (Optional[torch.Tensor]): A tensor mapping expert indices from the global expert space to the local expert space of the expert parallel shard.
Returns: A tensor of size num_local_experts, where tensor[i] holds the number of tokens assigned to the ith expert.
Source code in vllm/model_executor/layers/fused_moe/utils.py
fi_moe_largest_bucket(moe_config) ¶
Estimate FlashInfer's MoE autotuning maximum token count.
All DP ranks may contribute max_num_tokens to one invocation. Keep FlashInfer's default moe tune_max_num_tokens=8192 floor to avoid over-underestimation. DeepEP, SP, or PCP may make this underestimate, however overestimation may be dangerous, increasing tuning- cost and memory use.
NOTE: The DP factor applies even when EP is disabled:
Without
--enable-expert-parallel, MoE layers would use tensor parallelism.
For a detailed explanation, see: docs/serving/data_parallel_deployment.md
Source code in vllm/model_executor/layers/fused_moe/utils.py
is_model_fused_shared_expert_compatible(layers, moe_cls, moe_name) ¶
Resolve one fused-shared-expert state for a model's MoE layers.
Source code in vllm/model_executor/layers/fused_moe/utils.py
moe_use_td_hw_supported() ¶
Whether the current device can run the TD (gather) path of fused_moe_kernel (ignores the VLLM_TRITON_USE_TD override).
The A-load uses tensor_descriptor.gather, which lowers to the PTX tile::gather4 instruction. That instruction is part of the tcgen05/Tensor Memory (TMEM) family introduced with Blackwell and has no Hopper (sm90) equivalent -- ptxas rejects it there ("Feature '.tile::gather4 ...' requires .target sm_100 or higher"). Unlike scatter4, gather4 is supported across the whole sm100+ range including consumer Blackwell (sm120/sm121): see triton-lang/triton#8498, which enables gather4 on sm120/sm121 while leaving scatter4 unsupported there. So this gates on a blanket has_device_capability(100) rather than the sm100 family check used for the scatter store path.
Source code in vllm/model_executor/layers/fused_moe/utils.py
resolve_layer_fused_shared_expert(quant_config, prefix, shared_expert_name='shared_experts') ¶
Resolve whether AITER fused shared-expert execution is enabled.
Parameters:
-
(quant_config¶QuantizationConfig | None) –Model quantization configuration.
-
(prefix¶str) –MoE module prefix.
-
(shared_expert_name¶str, default:'shared_experts') –Shared-expert module name under
prefix.
Returns:
-
bool–Whether AITER fused shared experts are enabled.
Raises:
-
ValueError–If requested shared-expert fusion is quantization-incompatible.
Source code in vllm/model_executor/layers/fused_moe/utils.py
resolve_moe_use_td() ¶
Tri-state resolver for VLLM_TRITON_USE_TD.
Unset auto-selects the TD path on XPU only, mirroring the attention dispatcher in triton_attn.py. 1/0 force it on/off regardless of hardware; forcing 1 where it cannot compile (see moe_use_td_hw_supported) fails at ptxas. Blackwell CUDA (sm100+) can compile it but is opt-in only, pending validation.
Source code in vllm/model_executor/layers/fused_moe/utils.py
warn_if_moe_use_td_ineffective(active_backend, is_quantized=False) ¶
One-shot warning when VLLM_TRITON_USE_TD is set but ignored.
Fires when the user set the env explicitly and either (a) the active MoE backend is not the fused Triton kernel, or (b) the model is quantized (the TD path falls back to the pointer path under any quantization).