sgl-project/sglang · error · ValueError

Pi05Pipeline v1 supports same-process execution only. Use pr

Error message

Pi05Pipeline v1 supports same-process execution only. Use prefix/action logical groups inside one worker; cross-node multimodal_gen disaggregation is a v2 target.

What it means

Raised by Pi05Pipeline.validate_disagg_role for any role except RoleType.MONOLITHIC. Pi05 (VLA) v1 runs prefix and action experts in one process; cross-node multimodal_gen disaggregation is deferred to v2, so the guard blocks PD deployments early.

Source

Thrown at python/sglang/multimodal_gen/runtime/pipelines/pi05.py:38

    VLAObservationPreprocessStage,
    VLAPrefixEncodingStage,
)
from sglang.multimodal_gen.runtime.server_args import ServerArgs
from sglang.multimodal_gen.runtime.utils.logging_utils import init_logger
from sglang.multimodal_gen.runtime.vla.prefix_cache import VLAPrefixCacheManager

logger = init_logger(__name__)


class Pi05Pipeline(ComposedPipelineBase):
    pipeline_name = "Pi05Pipeline"
    pipeline_config_cls = Pi05PipelineConfig
    sampling_params_cls = Pi05SamplingParams
    _required_config_modules: list[str] = []

    def validate_disagg_role(self, role: RoleType) -> None:
        if role != RoleType.MONOLITHIC:
            raise ValueError(
                "Pi05Pipeline v1 supports same-process execution only. "
                "Use prefix/action logical groups inside one worker; cross-node "
                "multimodal_gen disaggregation is a v2 target."
            )

    def load_modules(
        self,
        server_args: ServerArgs,
        loaded_modules: dict[str, torch.nn.Module] | None = None,
    ) -> dict[str, torch.nn.Module]:
        if loaded_modules is not None:
            return loaded_modules

        pipeline_config: Pi05PipelineConfig = server_args.pipeline_config
        pipeline_config.offload_prefix_image_encoder = (
            pipeline_config.offload_prefix_image_encoder
            or bool(server_args.image_encoder_cpu_offload)
        )

View on GitHub (pinned to 0132848349)

Solutions

  1. Deploy Pi05 monolithically: unset the disaggregation role / remove PD flags from the launch command
  2. Use prefix/action logical groups within one worker for the parallelism you need (as the message suggests)
  3. Track upstream v2 for cross-node Pi05 disaggregation instead of forcing the role

Example fix

# before
--disaggregation-role decode --model pi05

# after
--model pi05  # monolithic; use logical groups inside one worker
Defensive patterns

Strategy: validation

Validate before calling

if role != RoleType.MONOLITHIC:
    raise SystemExit('Pi05 v1 is monolithic-only; remove disaggregation settings')

Prevention

When it happens

Trigger: Starting the server with a prefill or decode disaggregation role while the pipeline resolves to Pi05Pipeline; PD-aware orchestrators assigning roles to every replica trigger it at validation time.

Common situations: Cluster templates with role env vars set globally; migrating a serving fleet to Pi05 without stripping PD flags; experimenting with PD on a newly added VLA model.

Related errors


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