{"record":{"id":"b01f0737127554d2","repo":"sgl-project/sglang","slug":"unsupported-dtype-in-flattened-bucket-metadata-d","errorCode":null,"errorMessage":"Unsupported dtype in flattened_bucket metadata: {dtype!r}","messagePattern":"Unsupported dtype in flattened_bucket metadata: (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/multimodal_gen/runtime/post_training/weights_updater.py","lineNumber":823,"sourceCode":"                    numel=int(meta.numel),\n                )\n            )\n\n        bucket = FlattenedTensorBucket(\n            flattened_tensor=flattened_tensor,\n            metadata=converted_metadata,\n        )\n        return bucket.reconstruct_tensors()\n\n    def _normalize_torch_dtype(self, dtype: Any) -> torch.dtype:\n        if isinstance(dtype, torch.dtype):\n            return dtype\n        if isinstance(dtype, str):\n            name = dtype.split(\".\")[-1]\n            normalized = getattr(torch, name, None)\n            if isinstance(normalized, torch.dtype):\n                return normalized\n        raise ValueError(f\"Unsupported dtype in flattened_bucket metadata: {dtype!r}\")\n","sourceCodeStart":805,"sourceCodeEnd":824,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/multimodal_gen/runtime/post_training/weights_updater.py#L805-L824","documentation":"Raised by WeightsUpdater._normalize_torch_dtype when a dtype in flattened_bucket metadata cannot be resolved to a torch.dtype. Strings like 'torch.float32', 'float32', or 'bfloat16' work via getattr on the last dotted component; anything else (integers, unknown names) fails.","triggerScenarios":"Metadata carrying dtype=16 (a numeric id), dtype='fp32', dtype=torch.float32 already fine, but 'FloatTensor' or a numpy dtype string fails; also None dtype.","commonSituations":"Custom flattener writing numpy dtype ids or shorthand names ('fp16' vs 'float16'); version skew between producer and consumer dtype vocabularies.","solutions":["Use canonical torch dtype strings: 'torch.float32', 'float16', 'bfloat16'","Fix the producer to emit str(tensor.dtype)"],"exampleFix":"// before\nmeta.dtype = \"fp32\"\n// after\nmeta.dtype = \"float32\"  # or str(t.dtype)","handlingStrategy":"validation","validationCode":"import torch\nname = str(dtype).split(\".\")[-1]\nassert isinstance(getattr(torch, name, None), torch.dtype), f\"bad dtype {dtype}\"","typeGuard":"def dtype_resolvable(dtype: Any) -> bool:\n    import torch\n    if isinstance(dtype, torch.dtype): return True\n    return isinstance(getattr(torch, str(dtype).split(\".\")[-1], None), torch.dtype)","tryCatchPattern":null,"preventionTips":["Emit str(tensor.dtype) from producers","Keep a whitelist mapping for shorthand names like fp16→float16"],"tags":["weights-update","dtype","flattened-bucket","multimodal"],"backgroundTag":"unsupported-dtype","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}