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
- Set num_inference_steps >= 2 on the request
- If a default is being applied, configure the server/client default for this model to at least 2
- 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
- Default this model's step count to >= 2 in server config
- Clamp client-side before submit
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
- num_inference_steps must be positive, got {steps}
- MiniMax H3 request task must be a non-empty string
- quality must be one of {list(QUALITY_LEVELS)}, got {quality!
- {path} must be a non-empty string
- {path} must be an integer
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/54b1bd50bea9a79f.
Report an issue: GitHub.