{"record":{"id":"f31c28a13adcabda","repo":"sgl-project/sglang","slug":"unsupported-module-payload-type-for-load-format-l","errorCode":null,"errorMessage":"Unsupported module payload type for load_format={load_format}: {type(module_payload).__name__}","messagePattern":"Unsupported module payload type for load_format=(.+?): (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/multimodal_gen/runtime/post_training/weights_updater.py","lineNumber":783,"sourceCode":"    def _materialize_weights_iter(self, module_payload: Any, load_format: str | None):\n        if load_format == \"flattened_bucket\":\n            if not isinstance(module_payload, dict):\n                raise ValueError(\n                    \"flattened_bucket payload must be a dict with \"\n                    \"'flattened_tensor' and 'metadata'.\"\n                )\n            flattened_tensor = module_payload.get(\"flattened_tensor\")\n            metadata = module_payload.get(\"metadata\")\n            if flattened_tensor is None or metadata is None:\n                raise ValueError(\n                    \"flattened_bucket payload missing 'flattened_tensor' or 'metadata'.\"\n                )\n            return self._reconstruct_from_flattened_bucket(flattened_tensor, metadata)\n\n        if isinstance(module_payload, (list, tuple)):\n            return iter(module_payload)\n\n        raise ValueError(\n            f\"Unsupported module payload type for load_format={load_format}: \"\n            f\"{type(module_payload).__name__}\"\n        )\n\n    def _reconstruct_from_flattened_bucket(self, flattened_tensor: Any, metadata: Any):\n        if not isinstance(flattened_tensor, torch.Tensor):\n            raise ValueError(\n                \"flattened_bucket 'flattened_tensor' must be a torch.Tensor.\"\n            )\n        if not isinstance(metadata, list):\n            raise ValueError(\"flattened_bucket 'metadata' must be a list.\")\n\n        converted_metadata: list[FlattenedTensorMetadata] = []\n        for meta in metadata:\n            converted_metadata.append(\n                FlattenedTensorMetadata(\n                    name=meta.name,\n                    shape=torch.Size(meta.shape),","sourceCodeStart":765,"sourceCodeEnd":801,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/multimodal_gen/runtime/post_training/weights_updater.py#L765-L801","documentation":"Raised by WeightsUpdater._materialize_weights_iter when the module payload is neither a flattened_bucket dict nor a list/tuple. Only lists and tuples (or the special bucket format) can be iterated into weight tensors.","triggerScenarios":"update_weights_from_tensor with a payload that is a single torch.Tensor, a generator, a dict of named tensors (without load_format='flattened_bucket'), or any custom object.","commonSituations":"Passing a state_dict directly instead of a list of tensors; passing a generator expecting lazy iteration; passing a single tensor per module.","solutions":["Convert to a list/tuple of tensors: list(payload.values()) for a state_dict","For single-tensor modules, wrap it: [tensor]","Use the flattened_bucket format with a proper bucket dict"],"exampleFix":"// before\nupdater.update_weights_from_tensor(named_tensors=some_generator)\n// after\nupdater.update_weights_from_tensor(named_tensors=list(some_generator))","handlingStrategy":"type-guard","validationCode":"from collections.abc import Iterable\np = list(p) if not isinstance(p, (list, tuple)) else p","typeGuard":"def is_materializable(p: Any, load_format: str | None) -> bool:\n    return isinstance(p, (list, tuple)) or (load_format == \"flattened_bucket\" and isinstance(p, dict))","tryCatchPattern":null,"preventionTips":["Always pass sequences of tensors; wrap single tensors in a list","Document the payload contract next to your training-side export code"],"tags":["weights-update","payload-type","validation","multimodal"],"backgroundTag":"invalid-payload-format","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}