{"record":{"id":"5e49eccf0118d7d9","repo":"sgl-project/sglang","slug":"multiview-attention-was-not-initialized","errorCode":null,"errorMessage":"Multiview attention was not initialized.","messagePattern":"Multiview attention was not initialized\\.","errorType":"panic","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"python/sglang/multimodal_gen/runtime/models/dits/hunyuan3d_paint.py","lineNumber":131,"sourceCode":"        if mode is not None and \"r\" in mode and self.use_reference_attention:\n            if self.attn_refview is None:\n                raise RuntimeError(\"Reference attention was not initialized.\")\n            reference = condition_embeddings[self.layer_name]\n            reference = reference.unsqueeze(1).repeat(1, num_views, 1, 1)\n            reference = rearrange(reference, \"b n l c -> (b n) l c\")\n            reference_output = self.attn_refview(\n                normalized, encoder_hidden_states=reference\n            )\n            reference_scale = self._broadcast_scale(\n                1.0 if self.is_turbo else options.get(\"ref_scale\", 1.0),\n                reference_output,\n                num_views,\n            )\n            hidden_states = hidden_states + reference_scale * reference_output\n\n        if num_views > 1 and self.use_multiview_attention:\n            if self.attn_multiview is None:\n                raise RuntimeError(\"Multiview attention was not initialized.\")\n            multiview = rearrange(normalized, \"(b n) l c -> b (n l) c\", n=num_views)\n            position_masks = options.get(\"position_attn_mask\")\n            position_mask = None\n            if isinstance(position_masks, dict):\n                position_mask = position_masks.get(multiview.shape[1])\n            multiview_output = self.attn_multiview(\n                multiview,\n                encoder_hidden_states=multiview,\n                attention_mask=position_mask,\n            )\n            multiview_output = rearrange(\n                multiview_output, \"b (n l) c -> (b n) l c\", n=num_views\n            )\n            multiview_scale = 1.0 if self.is_turbo else options.get(\"mva_scale\", 1.0)\n            hidden_states = hidden_states + multiview_scale * multiview_output\n\n        hidden_states = hidden_states + self.transformer.attn2(\n            self.transformer.norm2(hidden_states),","sourceCodeStart":113,"sourceCodeEnd":149,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/multimodal_gen/runtime/models/dits/hunyuan3d_paint.py#L113-L149","documentation":"When more than one view is generated (num_views > 1) and use_multiview_attention is enabled, the block needs self.attn_multiview. If it is None because multiview attention was never initialized for this block, forward raises this RuntimeError.","triggerScenarios":"Calling the paint block forward with num_in_batch > 1 and use_multiview_attention=True on a block whose attn_multiview is None (built with multiview attention disabled or not replaced).","commonSituations":"Generating multiview images with a model whose blocks were replaced with use_multiview_attention=False; using a single-view checkpoint/pipeline path for a multiview request.","solutions":["Replace transformer blocks with use_multiview_attention=True before running multiview inference","Set num_in_batch=1 in cross_attention_kwargs if you genuinely only need one view","Confirm every block that sees num_views>1 was covered by _replace_transformer_blocks"],"exampleFix":"# before\n_replace_transformer_blocks(unet, use_multiview_attention=False)\nout = block(x, cross_attention_kwargs={\"num_in_batch\": 4, ...})\n\n# after\n_replace_transformer_blocks(unet, use_multiview_attention=True)\nout = block(x, cross_attention_kwargs={\"num_in_batch\": 4, ...})","handlingStrategy":"validation","validationCode":"num_views = int(opts.get('num_in_batch', 1))\nif num_views > 1 and getattr(block, 'use_multiview_attention', False):\n    assert block.attn_multiview is not None, 'attn_multiview not initialized'","typeGuard":"def block_has_multiview_attn(block) -> bool:\n    return getattr(block, 'use_multiview_attention', False) and block.attn_multiview is not None","tryCatchPattern":"try:\n    out = block(x, cross_attention_kwargs=opts)\nexcept RuntimeError as e:\n    if 'Multiview attention was not initialized' in str(e) and int(opts.get('num_in_batch', 1)) == 1:\n        out = block(x, cross_attention_kwargs=opts)\n    else:\n        raise","preventionTips":["Match use_multiview_attention to your num_in_batch at build time","Verify all blocks were replaced by checking a sample block's attrs"],"tags":["runtime","initialization","multiview","diffusion"],"backgroundTag":"module-not-initialized","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}