sgl-project/sglang · error · ValueError

MiniMax H3 DiffGenerator requires save_output=True and a non

Error message

MiniMax H3 DiffGenerator requires save_output=True and a non-empty output_path for validated file delivery

What it means

MiniMax H3 generation in SGLang requires that outputs be persisted: the DiffGenerator path needs save_output=True and a non-empty output_path so it can return validated file paths (the only supported output_mode is decoded_files). Omitting either makes delivery impossible to validate.

Source

Thrown at python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/video_adapter.py:243

        """Apply the HTTP task/delivery gate to offline requests as well."""

        task = getattr(sampling_params, "task", None)
        self.validate_task_gate(task, provided=task is not None)
        sampling_params.task = canonical_minimax_h3_task(task)
        if getattr(sampling_params, "enable_frame_interpolation", False):
            raise ValueError(
                "MiniMax H3 does not support enable_frame_interpolation: the "
                "accepted delivery contract is the canonical 24 fps output"
            )
        if getattr(sampling_params, "enable_upscaling", False):
            raise ValueError(
                "MiniMax H3 does not support enable_upscaling: the accepted "
                "delivery contract is the resolved target canvas"
            )
        if not bool(getattr(sampling_params, "save_output", False)) or not getattr(
            sampling_params, "output_path", None
        ):
            raise ValueError(
                "MiniMax H3 DiffGenerator requires save_output=True and a non-empty "
                "output_path for validated file delivery"
            )
        output_mode = getattr(sampling_params, "output_mode", None)
        if output_mode not in (None, "decoded_files"):
            raise ValueError(
                "MiniMax H3 SGLang backend only supports "
                f"output_mode='decoded_files', got {output_mode!r}"
            )

    def prepare_for_queue_sync(self, batch: Req) -> None:
        from sglang.multimodal_gen.runtime.pipelines_core.stages.model_specific_stages.minimax_h3.prequeue import (
            minimax_h3_prepare_for_queue,
        )

        minimax_h3_prepare_for_queue(batch)

    def cleanup_request_sync(self, batch: Req) -> None:

View on GitHub (pinned to 0132848349)

Solutions

  1. Set sampling_params.save_output = True
  2. Set sampling_params.output_path to a writable file or directory path
  3. Verify the process has write permissions on that path

Example fix

// before
sp = SamplingParams(temperature=0.7)
// after
sp = SamplingParams(temperature=0.7, save_output=True, output_path="/data/out.mp4")
Defensive patterns

Strategy: validation

Validate before calling

assert sp.save_output and sp.output_path, "set save_output=True and output_path"
import os; assert os.access(os.path.dirname(sp.output_path) or ".", os.W_OK)

Prevention

When it happens

Trigger: validate_sampling_params called on SamplingParams where save_output is falsy or output_path is None/empty, for a MiniMax H3 video model.

Common situations: Default SamplingParams (save_output defaults to False); reusing LLM-style params that expect in-memory returns; forgetting to set output_path in batch scripts.

Understand the failure class

Background: Missing required parameter errors: what 'X is required' and 'the required X param is missing' mean, and how to fix them — this error's family across 27 libraries.

Related errors


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