{"record":{"id":"acaa0dd7f6069bcc","repo":"sgl-project/sglang","slug":"intern-s2-mobius-baseline-does-not-support-pp-tens","errorCode":null,"errorMessage":"Intern-S2-Mobius baseline does not support PP tensors","messagePattern":"Intern-S2-Mobius baseline does not support PP tensors","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/models/interns2_mobius.py","lineNumber":780,"sourceCode":"                self.config.hidden_size,\n                self.config.shared_expert_intermediate_size * 2,\n            )\n        if module_name == \"down_proj\":\n            return self.config.shared_expert_intermediate_size, self.config.hidden_size\n        return super().get_hidden_dim(module_name, layer_idx)\n\n    @torch.no_grad()\n    def forward(\n        self,\n        input_ids: torch.Tensor,\n        positions: torch.Tensor,\n        forward_batch: ForwardBatch,\n        input_embeds: torch.Tensor | None = None,\n        pp_proxy_tensors: PPProxyTensors | None = None,\n        input_deepstack_embeds: torch.Tensor | None = None,\n    ) -> torch.Tensor | PPProxyTensors:\n        if pp_proxy_tensors is not None:\n            raise ValueError(\"Intern-S2-Mobius baseline does not support PP tensors\")\n        hidden_states = (\n            self.embed_tokens(input_ids) if input_embeds is None else input_embeds\n        )\n        residual = None\n        aux_hidden_states = []\n        for layer_idx, layer in enumerate(self.layers):\n            hidden_states, residual = layer(\n                positions=positions,\n                hidden_states=hidden_states,\n                residual=residual,\n                forward_batch=forward_batch,\n                meta_mlp=self.meta_mlp,\n                captured_last_layer_outputs=(\n                    aux_hidden_states\n                    if getattr(layer, \"_is_layer_to_capture\", False)\n                    else None\n                ),\n            )","sourceCodeStart":762,"sourceCodeEnd":798,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/models/interns2_mobius.py#L762-L798","documentation":"The baseline forward() does not accept pipeline-parallel proxy tensors; passing pp_proxy_tensors means the scheduler believes this stage is not first, contradicting the model's PP=1 design.","triggerScenarios":"forward(..., pp_proxy_tensors=<non-None>) — happens when the model runs in a PP pipeline that hands received proxy tensors to a non-first stage.","commonSituations":"PP flags left enabled, or a wrapper forwarding proxy tensors unconditionally to the baseline model.","solutions":["Run with pipeline parallelism disabled (pp size 1)","Use the ConditionalGeneration wrapper which owns the PP boundary","Ensure callers pass pp_proxy_tensors=None for the baseline class"],"exampleFix":"# before\nmodel.forward(hidden, forward_batch, pp_proxy_tensors=proxy)\n\n# after\nmodel.forward(hidden, forward_batch)  # pp disabled","handlingStrategy":"type-guard","validationCode":"assert pp_proxy_tensors is None, \"baseline model cannot consume PP tensors\"","typeGuard":"def can_forward_baseline(pp_proxy_tensors) -> bool:\n    return pp_proxy_tensors is None","tryCatchPattern":null,"preventionTips":["Never pass PP proxy tensors to non-PP stages of the baseline model","Gate PP plumbing on pp_group.world_size == 1"],"tags":["pipeline-parallel","runtime-misuse"],"backgroundTag":"unsupported-parallelism-configuration","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}