sgl-project/sglang · error · ValueError

MiniMaxH3TextEncodingStage requires the pipeline processor c

Error message

MiniMaxH3TextEncodingStage requires the pipeline processor component (model_index.json: processor)

What it means

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.

Source

Thrown at python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/stages/text_encoding.py:42

logger = init_logger(__name__)

_MINIMAX_H3_SINGLE_COPY_TEXT_ENCODE_EXTRA_KEY = "minimax_h3_single_copy_text_encode"


class MiniMaxH3TextEncodingStage(TextEncodingStage):
    deduplicated_output_fields = ("prompt_embeds", "prompt_seq_lens")
    deduplicated_extra_output_keys = (MINIMAX_H3_TEXT_EMBEDDINGS_EXTRA_KEY,)

    def __init__(self, text_encoder, tokenizer, processor) -> None:
        super().__init__(
            text_encoders=[text_encoder],
            tokenizers=[tokenizer],
        )
        self.text_encoder = text_encoder
        self.tokenizer = tokenizer
        if processor is None:
            raise ValueError(
                "MiniMaxH3TextEncodingStage requires the pipeline processor "
                "component (model_index.json: processor)"
            )
        self.processor = processor

    @torch.no_grad()
    def forward(self, batch: Req, server_args: ServerArgs) -> Req:
        from sglang.multimodal_gen.runtime.pipelines_core.stages.model_specific_stages.minimax_h3.resolved_plan import (
            minimax_h3_plan_from_batch,
        )

        plan = minimax_h3_plan_from_batch(batch)
        if plan is not None:
            try:
                self._encode_from_plan(
                    batch,
                    plan,
                    include_video_token_mask=(

View on GitHub (pinned to 0132848349)

Solutions

  1. Verify model_index.json contains a 'processor' entry and its subfolder exists in the snapshot
  2. Re-download / repair the pipeline snapshot (hf snapshot download or cache clear) before loading
  3. If constructing programmatically, pass the processor component explicitly
Defensive patterns

Strategy: validation

Validate before calling

components = json.load(open(snapshot / "model_index.json"))
assert "processor" in {k for k, v in components.items() if isinstance(v, (str, tuple))}, "snapshot missing processor"

Prevention

When it happens

Trigger: Instantiating MiniMaxH3TextEncodingStage from a pipeline whose model_index.json has no processor entry, so the components lookup passes processor=None into __init__.

Common situations: 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.

Related errors


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