sgl-project/sglang · critical · RuntimeError
MiniMax H3 audio decode produced no output payload
Error message
MiniMax H3 audio decode produced no output payload
What it means
After the audio decode and (optional) replica broadcast of the audio payload, the payload must be a dict containing the decoded waveform and sample_rate. A non-dict payload (e.g. None or a tensor) raises this RuntimeError.
Source
Thrown at python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/stages/decoding.py:452
audio_payload = None
if is_audio_owner:
try:
audio_payload = self._decode_audio(audio_latent, server_args)
except Exception as exc:
owner_exception = exc
owner_error = f"{type(exc).__name__}: {exc}"
if replica_group is not None:
owner_error = replica_group.broadcast_object(owner_error, src=0)
if owner_error is not None:
if owner_exception is not None:
raise owner_exception
raise RuntimeError(
f"MiniMax H3 audio decode failed on rank 0: {owner_error}"
)
if replica_group is not None:
audio_payload = replica_group.broadcast_tensor_dict(audio_payload, src=0)
if not isinstance(audio_payload, dict):
raise RuntimeError("MiniMax H3 audio decode produced no output payload")
audio_waveform = _required_tensor(
audio_payload.get("waveform"), "audio_vae.decode"
)
audio_sample_rate = int(audio_payload["sample_rate"])
visual_frames = server_args.pipeline_config.post_decoding(
visual_frames, server_args
)
output_audio_waveform = _canonical_output_audio_waveform(
audio_waveform, batch_size=int(visual_frames.shape[0])
)
return OutputBatch(
output=visual_frames,
audio=output_audio_waveform,
audio_sample_rate=audio_sample_rate,
trajectory_timesteps=batch.trajectory_timesteps,
trajectory_latents=batch.trajectory_latents,
rollout_trajectory_data=batch.rollout_trajectory_data,View on GitHub (pinned to 0132848349)
Solutions
- Ensure the audio decoder returns a dict with 'waveform' and 'sample_rate'
- Verify replica_group ranks stay in sync (same broadcast calls on all ranks)
- Wrap/normalize the decoder output into the expected payload shape
Defensive patterns
Strategy: validation
Validate before calling
# in custom audio decoders
return {"waveform": waveform, "sample_rate": int(sr)} Type guard
def valid_audio_payload(p) -> bool:
return isinstance(p, dict) and "waveform" in p and "sample_rate" in p Prevention
- Return dict payloads from custom VAE decoders
- Keep broadcast calls symmetric across replica ranks
When it happens
Trigger: The audio VAE decode returning None, a bare tensor, or the tensor-dict broadcast producing a non-mapping on non-rank-0 replicas.
Common situations: Custom audio VAE implementations that don't return the expected {'waveform':..., 'sample_rate':...} dict; broadcast desynchronization between replicas.
Related errors
- MiniMax H3 audio decode failed on rank 0: {owner_error}
- fl2va requires first_frame, last_frame, or both
- ref2va requires at least one of reference_image, reference_v
- t2va takes no conditioning inputs; pick another task
- MiniMax-H3 quality="high" is validated only for the strict 4
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/bc436a6c348aa2e1.
Report an issue: GitHub.