sgl-project/sglang · error · NotImplementedError
triton runner was supported but it's temporarily disabled
Error message
triton runner was supported but it's temporarily disabled
What it means
In DeepEP combine_a, after experts compute, the dispatcher needs a deep-GEMM-compatible layout: it passes hidden_states through only when JIT DeepGEMM is enabled, aiter is used, or on NPU. On plain GPU without deep_gemm (e.g. triton runner), the branch is a NotImplementedError placeholder because the triton combine path was temporarily disabled upstream.
Source
Thrown at python/sglang/srt/layers/moe/token_dispatcher/deepep.py:635
return (
recv_x,
recv_topk_ids,
recv_topk_weights,
num_recv_tokens_per_expert,
event,
)
def combine_a(
self,
hidden_states: torch.Tensor,
topk_ids: torch.Tensor,
topk_weights: torch.Tensor,
):
if deep_gemm_wrapper.ENABLE_JIT_DEEPGEMM or _use_aiter or _is_npu:
output = hidden_states
else:
raise NotImplementedError() # triton runner was supported but it's temporarily disabled
previous_event = Buffer.capture() if self.async_finish else None
return output, previous_event
def combine_b(self, output, previous_event):
hidden_states, event = self._combine_core(output, previous_event)
event.current_stream_wait() if self.async_finish else ()
self.handle = None
self.src2dst = None
return hidden_states
def _combine_core(self, x: torch.Tensor, previous_event):
buffer = self._get_buffer()
_deepep_precompile_tp_barrier()
combined_x, _, event = buffer.combine(
x,
self.handle,
async_finish=self.async_finish,View on GitHub (pinned to 0132848349)
Solutions
- Enable DeepGEMM: remove --disable-deepgemm / unset SGLANG_ENABLE_JIT_DEEPGEMM=0-related flags and ensure the deep_gemm package is installed and enabled
- Switch --moe-a2a-backend away from deepep (e.g. naive) if you must run without DeepGEMM
- Upgrade (or pin to a version where) the triton combine path is re-enabled / deepep+triton is rejected earlier with a clearer message
Example fix
# before --moe-a2a-backend deepep --disable-deepgemm # combine_a raises NotImplementedError # after --moe-a2a-backend deepep # with deep_gemm installed/enabled
Defensive patterns
Strategy: validation
Validate before calling
if server_args.moe_a2a_backend == "deepep" and server_args.disable_deepgemm:
raise SystemExit("deepep currently requires DeepGEMM enabled (or aiter/NPU)") Prevention
- Don't combine --disable-deepgemm with deepep a2a backend
- Verify deep_gemm imports cleanly before launching EP servers
When it happens
Trigger: Using deepep dispatch with the triton MoE runner and no DeepGEMM (ENABLE_JIT_DEEPGEMM false, not _use_aiter, not NPU) — the second stage combine_a hits the disabled path. Typically from disabling deepgemm (--disable-deepgemm or env) while keeping --moe-a2a-backend deepep on a non-Ascend setup.
Common situations: Toggling off DeepGEMM to debug or on GPUs where deepgemm wheels are unavailable, leaving deepep dispatcher with no supported combine layout; version regressions after the triton path was disabled.
Related errors
- topk kernels only support streaming implementation: {_impl=}
- {self._op_label()}: no triton backend
- num_token_non_padded must be a torch.Tensor
- num_token_non_padded must be a single-element tensor, got sh
- num_token_non_padded must be an integer tensor, got {num_tok
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/244894d4e3cfe730.
Report an issue: GitHub.