sgl-project/sglang · error · NotImplementedError

MiniMaxH3AudioEncodingStage direct audio tokenizer encode re

Error message

MiniMaxH3AudioEncodingStage direct audio tokenizer encode requires a canonical minimax_h3 request (resolved plan); legacy audio_path-only requests are unsupported.

What it means

MiniMaxH3AudioEncodingStage only encodes audio via the canonical minimax_h3 resolved plan. If no plan was produced but the legacy batch.sampling_params.audio_path is set, it raises NotImplementedError rather than silently skipping audio.

Source

Thrown at python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/stages/audio_encoding.py:75

            minimax_h3_cleanup_temp_dirs(batch, owners=("material",))

    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:
            routed = plan.encoders.get("audio")
            if not routed:
                return batch
            self._encode_references_from_plan(batch, plan, routed)
            return batch
        if (
            batch.sampling_params is not None
            and batch.sampling_params.audio_path is not None
        ):
            raise NotImplementedError(
                "MiniMaxH3AudioEncodingStage direct audio tokenizer encode "
                "requires a canonical minimax_h3 request (resolved plan); "
                "legacy audio_path-only requests are unsupported."
            )
        return batch

    def _encode_references_from_plan(self, batch: Req, plan, routed) -> None:
        """Direct reference-audio encode: audio VAE posterior mean ->
        normalized channel-major rows in batch.extra."""
        routed_set = set(routed)
        routed_materials = [
            material
            for material in plan.materials
            if material.condition_index in routed_set
        ]
        from .replica_broadcast import (
            minimax_h3_replica_broadcast_error,
            minimax_h3_replica_broadcast_extra,

View on GitHub (pinned to 0132848349)

Solutions

  1. Migrate the request to the canonical minimax_h3 schema so a resolved plan (with reference audio conditions) is produced
  2. Clear audio_path if no audio conditioning is intended and rely on the plan path

Example fix

# before
req.sampling_params.audio_path = "ref.wav"  # legacy
# after
canonical["conditions"].append({"type":"audio","path":"ref.wav", ...})  # canonical plan path
Defensive patterns

Strategy: fallback

Validate before calling

if batch.sampling_params is not None and batch.sampling_params.audio_path is not None and plan is None:
    raise ValueError("migrate request to canonical minimax_h3 schema")

Try / catch

try:
    out = stage.forward(batch)
except NotImplementedError as e:
    if "legacy audio_path" in str(e):
        raise ValueError("rebuild request as canonical minimax_h3") from e
    raise

Prevention

When it happens

Trigger: Sending a legacy request that only sets sampling_params.audio_path without a canonical minimax_h3 request/plan through the pipeline.

Common situations: Porting old audio_path-based workflows or reusing generic pipeline request builders that populate sampling_params directly instead of the canonical multimodal request schema.

Related errors


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