sgl-project/sglang · error · ValueError

MiniMax H3 requires num_inference_steps >= 2 because its vid

Error message

MiniMax H3 requires num_inference_steps >= 2 because its video/audio sigma schedules include both interval endpoints

What it means

MiniMax H3's video/audio sigma schedules include both interval endpoints, so at least two inference steps are required. The admission stage rejects requests with batch.num_inference_steps < 2.

Source

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

        if partition_for_task(canonical) != self.partition:
            raise ValueError(
                f"task {task!r} resolves outside partition {self.partition!r}"
            )
        return canonical


class MiniMaxH3PartitionAdmissionStage(PipelineStage):
    def __init__(self, metadata: MiniMaxH3ReleaseMetadata) -> None:
        super().__init__()
        self.metadata = metadata

    def forward(self, batch: Req, server_args: ServerArgs) -> Req:
        task = None if batch.sampling_params is None else batch.sampling_params.task
        if not isinstance(task, str) or not task.strip():
            raise ValueError("MiniMax H3 request task must be a non-empty string")
        self.metadata.canonical_task(task)
        if batch.num_inference_steps < 2:
            raise ValueError(
                "MiniMax H3 requires num_inference_steps >= 2 because its "
                "video/audio sigma schedules include both interval endpoints"
            )
        quality = getattr(batch.sampling_params, "quality", "lossless")
        if quality not in QUALITY_LEVELS:
            raise ValueError(
                f"quality must be one of {list(QUALITY_LEVELS)}, got {quality!r}"
            )
        high_quality = quality == "high"
        if high_quality and not batch.is_warmup:
            server_args.pipeline_config.validate_quality_deployment(server_args)
            plan = minimax_h3_plan_from_batch(batch)
            if plan is None:
                raise ValueError(
                    'MiniMax-H3 quality="high" requires a resolved request plan'
                )
            shape = plan.shape
            actual = {

View on GitHub (pinned to 0132848349)

Solutions

  1. Set num_inference_steps >= 2 on the request
  2. If a default is being applied, configure the server/client default for this model to at least 2
  3. Reject or clamp step counts at request-admission time upstream

Example fix

# before
req.num_inference_steps = 1
# after
req.num_inference_steps = 8
Defensive patterns

Strategy: validation

Validate before calling

if not isinstance(req.num_inference_steps, int) or req.num_inference_steps < 2:
    reject("num_inference_steps must be >= 2")

Type guard

def steps_ok(req) -> bool:
    return isinstance(req.num_inference_steps, int) and req.num_inference_steps >= 2

Prevention

When it happens

Trigger: A Req with num_inference_steps set to 1 (or 0/None coerced low) reaching MiniMaxH3PartitionAdmissionStage.forward.

Common situations: Single-step preview/prototype clients, defaults from a generic sampler that assumes 1 step, or warmup requests not overriding the step count.

Related errors


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