sgl-project/sglang · error · ValueError
Intern-S2-Mobius baseline does not support PP tensors
Error message
Intern-S2-Mobius baseline does not support PP tensors
What it means
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.
Source
Thrown at python/sglang/srt/models/interns2_mobius.py:780
self.config.hidden_size,
self.config.shared_expert_intermediate_size * 2,
)
if module_name == "down_proj":
return self.config.shared_expert_intermediate_size, self.config.hidden_size
return super().get_hidden_dim(module_name, layer_idx)
@torch.no_grad()
def forward(
self,
input_ids: torch.Tensor,
positions: torch.Tensor,
forward_batch: ForwardBatch,
input_embeds: torch.Tensor | None = None,
pp_proxy_tensors: PPProxyTensors | None = None,
input_deepstack_embeds: torch.Tensor | None = None,
) -> torch.Tensor | PPProxyTensors:
if pp_proxy_tensors is not None:
raise ValueError("Intern-S2-Mobius baseline does not support PP tensors")
hidden_states = (
self.embed_tokens(input_ids) if input_embeds is None else input_embeds
)
residual = None
aux_hidden_states = []
for layer_idx, layer in enumerate(self.layers):
hidden_states, residual = layer(
positions=positions,
hidden_states=hidden_states,
residual=residual,
forward_batch=forward_batch,
meta_mlp=self.meta_mlp,
captured_last_layer_outputs=(
aux_hidden_states
if getattr(layer, "_is_layer_to_capture", False)
else None
),
)View on GitHub (pinned to 0132848349)
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
Example fix
# before model.forward(hidden, forward_batch, pp_proxy_tensors=proxy) # after model.forward(hidden, forward_batch) # pp disabled
Defensive patterns
Strategy: type-guard
Validate before calling
assert pp_proxy_tensors is None, "baseline model cannot consume PP tensors"
Type guard
def can_forward_baseline(pp_proxy_tensors) -> bool:
return pp_proxy_tensors is None Prevention
- Never pass PP proxy tensors to non-PP stages of the baseline model
- Gate PP plumbing on pp_group.world_size == 1
When it happens
Trigger: 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.
Common situations: PP flags left enabled, or a wrapper forwarding proxy tensors unconditionally to the baseline model.
Related errors
- Currently DFLASH speculative decoding only supports pp_size
- Currently DSpark speculative decoding only supports pp_size
- Unexpected compressed-MLA dst_kv_ptrs length {len(dst_kv_ptr
- PP consensus is required when pp_size > 1
- rids_to_check cannot be used in PP mode
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/acaa0dd7f6069bcc.
Report an issue: GitHub.