sgl-project/sglang · critical · ValueError

task {task!r} is not served by MiniMax H3 partition {self.pa

Error message

task {task!r} is not served by MiniMax H3 partition {self.partition!r}; supported tasks: {list(self.tasks)!r}

What it means

from_model_index validates a loaded partition's declared task list: every task must belong to the declared partition (fl2va or ref2va) and aliases must resolve via canonical_minimax_h3_task. A task listed in model_index.json that doesn't map to the partition fails config load.

Source

Thrown at python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/release_metadata.py:113

            partition=partition,
            tasks=tasks,
            task_aliases=dict(aliases),
            video_sigma_shift=video_sigma,
            audio_sigma_shift=audio_sigma,
        )
        for task in metadata.tasks:
            if canonical_minimax_h3_task(task) != task:
                raise ValueError(
                    f"tasks must contain canonical task names, got {task!r}"
                )
            if partition_for_task(task) != partition:
                raise ValueError(
                    f"task {task!r} does not belong to partition {partition!r}"
                )
        for alias, target in metadata.task_aliases.items():
            if target not in metadata.tasks:
                raise ValueError(
                    f"task alias {alias!r} targets undeclared task {target!r}"
                )
            if canonical_minimax_h3_task(alias) != target:
                raise ValueError(
                    f"unsupported task alias mapping {alias!r} -> {target!r}"
                )
        return metadata

    @property
    def sigma_shift_scales(self) -> dict[str, float]:
        return {"video": self.video_sigma_shift, "audio": self.audio_sigma_shift}

    def canonical_task(self, task: str) -> str:
        normalized = task.strip().lower()
        canonical = self.task_aliases.get(normalized, normalized)
        if canonical not in self.tasks:
            raise ValueError(
                f"task {task!r} is not served by MiniMax H3 partition {self.partition!r}; "
                f"supported tasks: {list(self.tasks)!r}"

View on GitHub (pinned to 0132848349)

Solutions

  1. Check _minimax_h3.tasks in model_index.json and remove/fix entries that don't belong to the partition
  2. Regenerate model_index.json from the official release tooling
  3. Compare against a known-good release of the same partition

Example fix

// before
"_minimax_h3": {"partition": "ref2va", "tasks": ["t2v", "image_gen"]}

// after
"_minimax_h3": {"partition": "ref2va", "tasks": ["ref2v"]}  // tasks valid for ref2va
Defensive patterns

Strategy: try-catch

Try / catch

try:
    MiniMaxH3ReleaseMetadata.from_model_index(idx)
except ValueError as e:
    raise ConfigError(f"bad model_index.json: {e}") from e

Prevention

When it happens

Trigger: model_index.json's _minimax_h3.tasks containing a task name that belongs to the other partition, or a typo'd task string; raised while loading weights/config (_load_config).

Common situations: Hand-edited or merged model_index.json, a fine-tune exported with wrong task tags, or a version change renaming tasks.

Related errors


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