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.
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
- adaln out_features mismatch
- adapt_shape_v1 ratio must be within the inclusive range 1:4…
- aligned video noise shape
- attention_head_dim must be positive.
AI-assisted analysis of sgl-project/sglang@0132848349 (2026-08-28).
Data as JSON: /api/errors/bc436a6c348aa2e1.
Report an issue: GitHub.
Appendix: 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)