{"record":{"id":"23676755d2ea9218","repo":"sgl-project/sglang","slug":"minimax-h3-tasks-require-the-video-vae-output-deco","errorCode":null,"errorMessage":"MiniMax H3 tasks require the video_vae output decoder","messagePattern":"MiniMax H3 tasks require the video_vae output decoder","errorType":"error_code","errorClass":"RuntimeError","httpStatus":null,"severity":"critical","filePath":"python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/stages/decoding.py","lineNumber":370,"sourceCode":"            return {\n                \"waveform\": waveform,\n                \"sample_rate\": int(audio_vae.sample_rate),\n            }\n\n    @torch.no_grad()\n    def forward(self, batch: Req, server_args: ServerArgs) -> OutputBatch:\n        _minimax_h3_decoder_task(batch)\n        visual_latent = _required_tensor(batch.latents, \"batch.latents\")\n        audio_latent = _required_tensor(batch.audio_latents, \"batch.audio_latents\")\n        if visual_latent.ndim != 5:\n            raise ValueError(\"batch.latents must be [B, C, T, H, W]\")\n        if audio_latent.ndim != 3:\n            raise ValueError(\n                \"batch.audio_latents must be [audio_channel, latent_dim, T]\"\n            )\n\n        if self.video_vae is None:\n            raise RuntimeError(\"MiniMax H3 tasks require the video_vae output decoder\")\n        with self.use_declared_component(\n            component_name=\"video_vae\",\n            module=self.video_vae,\n        ) as selected_video_vae:\n            if selected_video_vae is None:\n                raise RuntimeError(\"video_vae became unavailable during decode\")\n            self.video_vae = selected_video_vae\n            if selected_video_vae.training:\n                selected_video_vae.eval()\n            visual_arch_config = server_args.pipeline_config.vae_config.arch_config\n            visual_decode_latent = _reverse_normalize_latents(\n                visual_latent,\n                mean_values=visual_arch_config.latents_mean,\n                std_values=visual_arch_config.latents_std,\n                name=\"video_vae\",\n            )\n            video_vae_dtype = resolve_decode_precision(server_args, \"video_vae\")\n            visual_autocast_enabled = autocast_enabled_for_device(","sourceCodeStart":352,"sourceCodeEnd":388,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/multimodal_gen/runtime/pipelines_core/stages/model_specific_stages/minimax_h3/stages/decoding.py#L352-L388","documentation":"MiniMaxH3DecodingStage.forward requires a video VAE decoder to decode visual latents; if the stage was constructed with video_vae=None it raises this RuntimeError before decoding.","triggerScenarios":"Instantiating MiniMaxH3DecodingStage without a video_vae module, or a pipeline config that omits/loads no video VAE.","commonSituations":"Building a decode-only pipeline and forgetting the video VAE; the VAE failing to load earlier and None being passed downstream; running an audio-only config against this combined stage.","solutions":["Load and pass the video VAE module when constructing MiniMaxH3DecodingStage","Check pipeline config / server_args.vae_config so the video VAE is instantiated","If you intended audio-only decoding, use the audio path/stage rather than this stage's video branch"],"exampleFix":"# before\nstage = MiniMaxH3DecodingStage(video_vae=None, audio_vae=audio_vae)\n# after\nstage = MiniMaxH3DecodingStage(video_vae=load_video_vae(), audio_vae=audio_vae)","handlingStrategy":"validation","validationCode":"assert stage.video_vae is not None, \"video VAE required before decode\"","typeGuard":"def can_decode(stage) -> bool:\n    return stage.video_vae is not None","tryCatchPattern":null,"preventionTips":["Verify VAE loading succeeded before constructing decoding stages","Fail fast at pipeline init if video_vae is None"],"tags":["minimax-h3","vae","missing-module","decoding"],"backgroundTag":"missing-required-dependency","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}