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
- Migrate the request to the canonical minimax_h3 schema so a resolved plan (with reference audio conditions) is produced
- 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
- Never rely on sampling_params.audio_path for MiniMax H3
- Always go through the canonical request builder
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
- MiniMaxH3TextEncodingStage direct Qwen3VL encoder forward re
- MiniMax H3 ring parallelism requires the FlashAttention back
- ref2va video preparation requires a video or video_audio ref
- MiniMax H3 audio encode failed on rank 0: {owner_error}
- /v1/models ${response.status}
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/df33d88476ad3ede.
Report an issue: GitHub.