{"record":{"id":"9caad750d4307cc8","repo":"sgl-project/sglang","slug":"vla-action-expert-should-not-share-the-prefix-tp-l","errorCode":null,"errorMessage":"VLA action expert should not share the prefix TP layout. Use SP, Ulysses, Ring, DP, or monolithic fallback for the action path.","messagePattern":"VLA action expert should not share the prefix TP layout\\. Use SP, Ulysses, Ring, DP, or monolithic fallback for the action path\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/multimodal_gen/runtime/pipelines/pi05.py","lineNumber":90,"sourceCode":"            pipeline_config.offload_prefix_image_encoder,\n            pipeline_config.offload_prefix_image_encoder_after_embed,\n            pipeline_config.offload_prefix_token_embedding,\n            pipeline_config.offload_prefix_language_layers,\n            pipeline_config.offload_prefix_language_layers_after_prefix,\n            pipeline_config.offload_prefix_language_layer_count_after_prefix,\n            pipeline_config.offload_action_expert_after_denoise,\n            pipeline_config.empty_cache_after_prefix,\n        )\n        policy_model = Pi05PolicyModel.from_pretrained(\n            self.model_path,\n            pipeline_config,\n        )\n        if (\n            pipeline_config.prefix_parallel_strategy\n            == pipeline_config.action_parallel_strategy\n            == \"tp\"\n        ):\n            raise ValueError(\n                \"VLA action expert should not share the prefix TP layout. \"\n                \"Use SP, Ulysses, Ring, DP, or monolithic fallback for the \"\n                \"action path.\"\n            )\n        return {\n            \"policy_model\": policy_model,\n        }\n\n    def initialize_pipeline(self, server_args: ServerArgs) -> None:\n        pipeline_config: Pi05PipelineConfig = server_args.pipeline_config\n        self.preprocessor = Pi05Preprocessor(pipeline_config)\n        self.prefix_cache = VLAPrefixCacheManager(\n            max_entries=pipeline_config.prefix_cache_max_entries\n        )\n\n    def create_pipeline_stages(self, server_args: ServerArgs):\n        self.add_stage(\n            VLAObservationPreprocessStage(self.preprocessor),","sourceCodeStart":72,"sourceCodeEnd":108,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/multimodal_gen/runtime/pipelines/pi05.py#L72-L108","documentation":"Raised by Pi05Pipeline.load_modules when both prefix_parallel_strategy and action_parallel_strategy on the pipeline config are 'tp'. The VLA action expert must not be sharded identically to the prefix backbone over the same TP layout; a different strategy (SP, Ulysses, Ring, DP) or a monolithic fallback is required.","triggerScenarios":"Setting Pi05PipelineConfig.prefix_parallel_strategy='tp' and action_parallel_strategy='tp' (including via defaults that copy the prefix strategy to the action path); single-GPU-style configs reused on multi-GPU hosts where 'tp' becomes the fallback for both experts.","commonSituations":"Config generators that propagate one parallel strategy to all components; upgrading from versions where sharing TP was permitted; users assuming TP applies uniformly to mixture-of-experts-style VLA architectures.","solutions":["Set action_parallel_strategy to a supported non-TP strategy (sp, ulysses, ring, or dp) while keeping the prefix on tp","Or drop both to the monolithic fallback for single-process layouts","Audit any config templating code that assigns 'tp' to every *_parallel_strategy field"],"exampleFix":"# before\ncfg = Pi05PipelineConfig(prefix_parallel_strategy='tp', action_parallel_strategy='tp')\n\n# after\ncfg = Pi05PipelineConfig(prefix_parallel_strategy='tp', action_parallel_strategy='dp')","handlingStrategy":"validation","validationCode":"cfg = server_args.pipeline_config\nif cfg.prefix_parallel_strategy == cfg.action_parallel_strategy == 'tp':\n    cfg.action_parallel_strategy = 'dp'  # or 'sp'/'ulysses'/'ring' per hardware layout","typeGuard":"def is_valid_pi05_parallelism(cfg) -> bool:\n    return not (cfg.prefix_parallel_strategy == cfg.action_parallel_strategy == 'tp')","tryCatchPattern":null,"preventionTips":["Never copy the prefix strategy blindly onto the action expert","Add a config lint step for VLA parallel-strategy fields"],"tags":["pi05","vla","parallelism-strategy","tp","config","sglang"],"backgroundTag":"invalid-parallelism-config","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}