{"record":{"id":"6df634fd044c55d3","repo":"sgl-project/sglang","slug":"minimaxh3textencodingstage-requires-the-pipeline-p","errorCode":null,"errorMessage":"MiniMaxH3TextEncodingStage requires the pipeline processor component (model_index.json: processor)","messagePattern":"MiniMaxH3TextEncodingStage requires the pipeline processor component \\(model_index\\.json: processor\\)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/stages/text_encoding.py","lineNumber":42,"sourceCode":"\nlogger = init_logger(__name__)\n\n_MINIMAX_H3_SINGLE_COPY_TEXT_ENCODE_EXTRA_KEY = \"minimax_h3_single_copy_text_encode\"\n\n\nclass MiniMaxH3TextEncodingStage(TextEncodingStage):\n    deduplicated_output_fields = (\"prompt_embeds\", \"prompt_seq_lens\")\n    deduplicated_extra_output_keys = (MINIMAX_H3_TEXT_EMBEDDINGS_EXTRA_KEY,)\n\n    def __init__(self, text_encoder, tokenizer, processor) -> None:\n        super().__init__(\n            text_encoders=[text_encoder],\n            tokenizers=[tokenizer],\n        )\n        self.text_encoder = text_encoder\n        self.tokenizer = tokenizer\n        if processor is None:\n            raise ValueError(\n                \"MiniMaxH3TextEncodingStage requires the pipeline processor \"\n                \"component (model_index.json: processor)\"\n            )\n        self.processor = processor\n\n    @torch.no_grad()\n    def forward(self, batch: Req, server_args: ServerArgs) -> Req:\n        from sglang.multimodal_gen.runtime.pipelines_core.stages.model_specific_stages.minimax_h3.resolved_plan import (\n            minimax_h3_plan_from_batch,\n        )\n\n        plan = minimax_h3_plan_from_batch(batch)\n        if plan is not None:\n            try:\n                self._encode_from_plan(\n                    batch,\n                    plan,\n                    include_video_token_mask=(","sourceCodeStart":24,"sourceCodeEnd":60,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/stages/text_encoding.py#L24-L60","documentation":"MiniMaxH3TextEncodingStage's constructor requires the pipeline's 'processor' component (declared in model_index.json) because it drives the Qwen3VL image processor during direct encode. If the loaded pipeline lacks that component, init fails immediately with this ValueError.","triggerScenarios":"Instantiating MiniMaxH3TextEncodingStage from a pipeline whose model_index.json has no processor entry, so the components lookup passes processor=None into __init__.","commonSituations":"Loading a partial/partially-downloaded MiniMax H3 pipeline snapshot, a hand-built pipeline dict missing the processor, or a model_index.json from an incompatible pipeline revision.","solutions":["Verify model_index.json contains a 'processor' entry and its subfolder exists in the snapshot","Re-download / repair the pipeline snapshot (hf snapshot download or cache clear) before loading","If constructing programmatically, pass the processor component explicitly"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"components = json.load(open(snapshot / \"model_index.json\"))\nassert \"processor\" in {k for k, v in components.items() if isinstance(v, (str, tuple))}, \"snapshot missing processor\"","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Validate model_index.json components before constructing stages","Repair partial HF snapshots before loading the pipeline"],"tags":["minimax-h3","pipeline-components","model-index","init-validation"],"backgroundTag":"missing-pipeline-component","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}