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

  1. Switch to --moe-a2a-backend deepep (v1), which supports the broader set of models
  2. Use a DeepseekV3/V4 or Qwen3MoE checkpoint with deepep_v2
  3. 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

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


AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28). Data as JSON: /api/errors/e06cd5f724ab16c0. Report an issue: GitHub.