sgl-project/sglang · error · ValueError
DeepEP v2 MoE is not validated for {architecture!r}; support
Error message
DeepEP v2 MoE is not validated for {architecture!r}; supported architectures are {sorted(validated_architectures)}. Other model workflows may require an all-reduce after A2A combine. Use --moe-a2a-backend deepep. What it means
Raised during server-args resolution when --moe-a2a-backend deepep_v2 is used with a model architecture outside the validated set (DeepseekV3ForCausalLM, DeepseekV4ForCausalLM, Qwen3MoeForCausalLM). DeepEP v2's low-latency buffer/combine path is only validated on those models; other workflows may miss the all-reduce after A2A combine and produce incorrect results.
Source
Thrown at python/sglang/srt/server_args.py:7614
"DeepEP v2 MoE cannot validate a model loaded through an instance "
"connector. Load it from a model path or use "
"--moe-a2a-backend deepep."
)
architectures = (
getattr(self.get_model_config().hf_config, "architectures", None) or []
)
architecture = architectures[0] if architectures else None
# These architectures take the A2A MoE path and skip post-expert
# all-reduce.
validated_architectures = (
"DeepseekV3ForCausalLM",
"DeepseekV4ForCausalLM",
"Qwen3MoeForCausalLM",
)
if architecture not in validated_architectures:
raise ValueError(
f"DeepEP v2 MoE is not validated for {architecture!r}; supported "
f"architectures are {sorted(validated_architectures)}. "
"Other model workflows may require an all-reduce after A2A "
"combine. Use --moe-a2a-backend deepep."
)
def _validate_deepep_v2_speculative_draft(self) -> None:
"""Reject an explicit or inherited DeepEP v2 draft backend."""
view = resolved_view(self)
draft_backend = view.speculative_moe_a2a_backend
if draft_backend is None and view.speculative_algorithm:
from sglang.srt.speculative.spec_info import SpeculativeAlgorithm
algorithm = SpeculativeAlgorithm.from_string(view.speculative_algorithm)
if not algorithm.is_ngram():
draft_backend = view.moe_a2a_backend
if draft_backend == "deepep_v2":
raise ValueError(View on GitHub (pinned to 0132848349)
Solutions
- Switch to --moe-a2a-backend deepep (v1), which supports the broader set of models
- Use a DeepseekV3/V4 or Qwen3MoE checkpoint with deepep_v2
- Remove --moe-a2a-backend deepep_v2 and let the default a2a backend run
Example fix
# before python -m sglang.launch_server --model mistralai/Mixtral-8x7B-Instruct --moe-a2a-backend deepep_v2 # after python -m sglang.launch_server --model mistralai/Mixtral-8x7B-Instruct --moe-a2a-backend deepep
Defensive patterns
Strategy: validation
Validate before calling
from transformers import AutoConfig
VALID = {"DeepseekV3ForCausalLM","DeepseekV4ForCausalLM","Qwen3MoeForCausalLM"}
arch = AutoConfig.from_pretrained(model).architectures[0]
if a2a_backend == "deepep_v2" and arch not in VALID:
a2a_backend = "deepep" Prevention
- Check config.json architectures before selecting deepep_v2
- Pin deepep (v1) in shared launch scripts for heterogeneous model fleets
When it happens
Trigger: Launching the server with --moe-a2a-backend deepep_v2 where config.json architectures[] contains something like LlamaForCausalLM, MixtralForCausalLM, or any MoE arch not in the validated tuple.
Common situations: Switching an existing serving stack to deepep_v2 for perf gains on a non-DeepSeek/Qwen MoE model; using a fine-tuned/custom checkpoint with a renamed architecture string.
Related errors
- DeepEP v2 MoE is not validated as a speculative draft backen
- DeepEP v2 does not forward deterministic=True to ElasticBuff
- DeepEP v2 MoE currently supports only --moe-runner-backend d
- DeepEP v2 MoE has not implemented the TBO/SBO overlap hooks
- DeepEP v2 MoE has not validated fused shared experts yet. Re
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/e06cd5f724ab16c0.
Report an issue: GitHub.