{"record":{"id":"78fa585bfd525ab3","repo":"sgl-project/sglang","slug":"unsupported-sana-wm-update-rule-self-update-rule","errorCode":null,"errorMessage":"Unsupported SANA-WM update_rule: {self.update_rule}","messagePattern":"Unsupported SANA-WM update_rule: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/multimodal_gen/runtime/models/dits/sana_wm_components.py","lineNumber":1889,"sourceCode":"    ) -> None:\n        super().__init__()\n        out_dim = heads * head_dim\n        assert (\n            out_dim == in_dim\n        ), f\"in_dim ({in_dim}) must equal heads*head_dim ({out_dim})\"\n        self.in_dim = in_dim\n        self.out_dim = out_dim\n        self.heads = heads\n        self.dim = head_dim\n        self.eps = eps\n        self.softmax_main = softmax_main\n        self.update_rule = update_rule\n        self.cam_update_rule = cam_update_rule\n        self.chunk_gdn_chunk_size = chunk_gdn_chunk_size\n        self.use_chunked_softmax_attention = use_chunked_softmax_attention\n        self.gdn_backend = gdn_backend\n        if self.update_rule not in (\"torch_chunk\", \"torch_recurrent\"):\n            raise ValueError(f\"Unsupported SANA-WM update_rule: {self.update_rule}\")\n        if self.cam_update_rule not in (\"torch_chunk\", \"torch_recurrent\"):\n            raise ValueError(\n                f\"Unsupported SANA-WM cam_update_rule: {self.cam_update_rule}\"\n            )\n        if self.gdn_backend not in (\"auto\", \"torch\", \"triton\"):\n            raise ValueError(\n                \"Unsupported SANA-WM gdn_backend: \"\n                f\"{self.gdn_backend}. Expected one of auto, torch, triton.\"\n            )\n\n        # Fused QKV + output proj (proj shared with cam branch).\n        self.qkv = nn.Linear(in_dim, 3 * out_dim, bias=False)\n        self.proj = nn.Linear(out_dim, out_dim, bias=True)\n\n        if qk_norm:\n            self.q_norm = _RMSNorm(in_dim, eps=1e-5)\n            self.k_norm = _RMSNorm(in_dim, eps=1e-5)\n            self.q_norm_cam = _RMSNorm(in_dim, eps=1e-5)","sourceCodeStart":1871,"sourceCodeEnd":1907,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/multimodal_gen/runtime/models/dits/sana_wm_components.py#L1871-L1907","documentation":"The SANA-WM GDN mixer validates update_rule at construction; only 'torch_chunk' and 'torch_recurrent' are supported. Any other value fails fast with this ValueError.","triggerScenarios":"Instantiating the GDN block (or the containing SANA-WM model) with update_rule='triton', 'chunk', 'cuda', or similar from a config dict.","commonSituations":"Config files ported from another implementation using different rule names; trying to select a Triton update rule (Triton is selected via gdn_backend, not update_rule).","solutions":["Set update_rule to 'torch_chunk' (fast, parallel) or 'torch_recurrent' (lower memory) — use torch_chunk unless memory-bound","To use Triton kernels, set gdn_backend='triton' or 'auto', keeping update_rule as one of the two valid values","Check the model config JSON/dict for a typo in update_rule"],"exampleFix":"# before\nblock = GDNBlock(dim, update_rule=\"triton\")\n# after\nblock = GDNBlock(dim, update_rule=\"torch_chunk\", gdn_backend=\"triton\")","handlingStrategy":"validation","validationCode":"assert update_rule in (\"torch_chunk\", \"torch_recurrent\"), update_rule","typeGuard":"def valid_update_rule(r: str) -> bool: return r in (\"torch_chunk\", \"torch_recurrent\")","tryCatchPattern":null,"preventionTips":["Remember Triton is chosen via gdn_backend, not update_rule"],"tags":["sana-wm","gdn","invalid-enum","config"],"backgroundTag":"invalid-argument-value","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}