{"record":{"id":"a0a2f074b20faedd","repo":"sgl-project/sglang","slug":"intern-s2-mobius-does-not-support-join-u","errorCode":null,"errorMessage":"Intern-S2-Mobius does not support: \" + \"; \".join(unsupported) + \".\"","messagePattern":"Intern-S2-Mobius does not support: \" \\+ \"; \"\\.join\\(unsupported\\) \\+ \"\\.\"","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/server_args.py","lineNumber":5780,"sourceCode":"            uses_mamba_radix_cache=False,\n        )\n        if parse_connector_type(cfg.model_path) == ConnectorType.INSTANCE:\n            # No model overrides for an instance connector: no hf_config to\n            # key them on.\n            return\n\n        model_config = self.get_model_config()\n        hf_config = model_config.hf_config\n        model_arch = hf_config.architectures[0]\n\n        if model_arch == \"InternS2MobiusForConditionalGeneration\":\n            unsupported = []\n            if cfg.pp_size != 1:\n                unsupported.append(\"pipeline parallelism (--pp-size must be 1)\")\n            if cfg.ep_size != 1:\n                unsupported.append(\"expert parallelism (--ep-size must be 1)\")\n            if unsupported:\n                raise ValueError(\n                    \"Intern-S2-Mobius does not support: \" + \"; \".join(unsupported) + \".\"\n                )\n\n        if cfg.enable_dsa_cache_layer_split and not is_deepseek_dsa(hf_config):\n            raise ValueError(\n                \"--enable-dsa-cache-layer-split is only supported for DSA \"\n                \"(DeepSeek Sparse Attention) models.\"\n            )\n\n        if cfg.enable_cp_decode_attn_tp:\n            from sglang.srt.layers.cp.cp_decode_attn_tp import (\n                CP_DECODE_ATTN_TP_SUPPORTED_ARCHS,\n            )\n\n            if model_arch not in CP_DECODE_ATTN_TP_SUPPORTED_ARCHS:\n                raise ValueError(\n                    \"--enable-cp-decode-attn-tp is only supported for models \"\n                    \"whose attention linears are replicated across CP ranks \"","sourceCodeStart":5762,"sourceCodeEnd":5798,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/server_args.py#L5762-L5798","documentation":"The Intern-S2-Mobius model in SGLang only supports single-node parallelism: pipeline parallelism (--pp-size != 1) and expert parallelism (--ep-size != 1) are both rejected, with the message listing every violated constraint.","triggerScenarios":"Loading an Intern-S2-Mobius checkpoint (per its hf_config) with --pp-size > 1 and/or --ep-size > 1 in ServerArgs.","commonSituations":"Reusing TP/PP/EP cluster launch scripts tuned for DeepSeek-style MoE models when serving Intern-S2-Mobius; default cluster profiles that set ep_size = tensor count.","solutions":["Set --pp-size 1 and --ep-size 1 for Intern-S2-Mobius","Use tensor parallelism (--tp-size) instead if you need multi-GPU scaling","Move to a model arch that supports PP/EP if those are hard requirements"],"exampleFix":"# before\npython -m sglang.launch_server --model intern-s2-mobius --pp-size 2\n# after\npython -m sglang.launch_server --model intern-s2-mobius --pp-size 1 --tp-size 2","handlingStrategy":"validation","validationCode":"if \"intern-s2-mobius\" in model_path.lower():\n    assert args.get(\"pp_size\", 1) == 1 and args.get(\"ep_size\", 1) == 1, \"Intern-S2-Mobius requires pp=ep=1\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Maintain per-model launch profiles instead of one generic cluster template","Default pp_size/ep_size to 1 unless the model docs say otherwise"],"tags":["model-support","pipeline-parallelism","expert-parallelism","config-validation"],"backgroundTag":"unsupported-parallelism-config","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}