sgl-project/sglang · error · ValueError
The hpc_ops MoE runner backend does not support no_combine (
Error message
The hpc_ops MoE runner backend does not support no_combine (the fused kernel always reduces over top-k experts).
What it means
The hpc_ops fused MoE kernel always reduces (sums) outputs over the top-k experts, so it cannot honor no_combine=True (returning per-expert outputs without combining). _check_runner_config_supported raises when no_combine is set.
Source
Thrown at python/sglang/srt/layers/moe/moe_runner/hpc_ops.py:112
def _check_runner_config_supported(runner_config: MoeRunnerConfig) -> None:
if runner_config.activation != "silu" or not runner_config.is_gated:
raise ValueError(
"The hpc_ops MoE runner backend only supports the gated silu "
f"activation, got activation={runner_config.activation}, "
f"is_gated={runner_config.is_gated}."
)
if runner_config.num_fused_shared_experts != 0:
raise ValueError(
"The hpc_ops MoE runner backend does not support fused shared experts."
)
if runner_config.apply_router_weight_on_input:
raise ValueError(
"The hpc_ops MoE runner backend does not support "
"apply_router_weight_on_input."
)
if runner_config.no_combine:
raise ValueError(
"The hpc_ops MoE runner backend does not support no_combine "
"(the fused kernel always reduces over top-k experts)."
)
if (
runner_config.gemm1_alpha is not None
or runner_config.gemm1_clamp_limit is not None
or runner_config.swiglu_limit is not None
):
raise ValueError(
"The hpc_ops MoE runner backend runs a plain SiLU-and-mul; it does "
"not support gemm1_alpha / gemm1_clamp_limit / swiglu_limit."
)
@register_fused_func("none", "hpc_ops")
def fused_experts_none_to_hpc_ops(
dispatch_output: StandardDispatchOutput,
quant_info: HpcOpsMoeQuantInfo,View on GitHub (pinned to 0132848349)
Solutions
- Switch to a backend that supports no_combine (triton/flashinfer)
- Disable the feature that requires uncombined outputs
- Avoid hpc_ops for this model
Defensive patterns
Strategy: validation
Validate before calling
if server_args.moe_runner_backend == 'hpc_ops' and runner_config.no_combine:
raise SystemExit('hpc_ops always combines top-k outputs; pick triton') Prevention
- Treat hpc_ops as opt-in per model, not a global default
- Watch server logs for the runner config dump before long runs
When it happens
Trigger: Running with --moe-runner-backend hpc_ops on a model/feature path that sets runner_config.no_combine=True (e.g. certain speculative or per-expert output paths).
Common situations: Using hpc_ops with models or features (e.g. EAGLE-style draft layers over MoE) that need uncombined expert outputs.
Related errors
- The hpc_ops MoE runner backend does not support fused shared
- The hpc_ops MoE runner backend does not support apply_router
- The hpc_ops MoE runner backend runs a plain SiLU-and-mul; it
- The hpc_ops MoE runner backend only supports FP8-quantized M
- Unsupported activation: {self.activation}
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/bfd5639c9425f9c1.
Report an issue: GitHub.