{"record":{"id":"7fee841efbfadd3d","repo":"sgl-project/sglang","slug":"serialized-kitchen-int8-layer-prefix-r-must-decl","errorCode":null,"errorMessage":"Serialized kitchen_int8 layer {prefix!r} must declare convrot_groupsize in {_SUPPORTED_GROUP_SIZES}, got {marker_group_size!r}","messagePattern":"Serialized kitchen_int8 layer (.+?) must declare convrot_groupsize in (.+?), got (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"critical","filePath":"python/sglang/multimodal_gen/runtime/layers/quantization/configs/kitchen_int8_config.py","lineNumber":60,"sourceCode":"        self.layer_markers = layer_markers\n        self.is_checkpoint_int8_serialized = layer_markers is not None\n        self.checkpoint_uses_native_qkv_layout = self.is_checkpoint_int8_serialized\n        self._serialized_group_sizes: dict[str, int] = {}\n        if layer_markers is not None:\n            for prefix, marker in layer_markers.items():\n                if marker.get(\"format\") != \"int8_tensorwise\":\n                    raise ValueError(\n                        f\"Unsupported Comfy INT8 format for {prefix!r}: \"\n                        f\"{marker.get('format')!r}\"\n                    )\n                if marker.get(\"convrot\") is not True:\n                    raise ValueError(\n                        f\"Serialized kitchen_int8 layer {prefix!r} must set \"\n                        \"convrot=true\"\n                    )\n                marker_group_size = marker.get(\"convrot_groupsize\")\n                if marker_group_size not in _SUPPORTED_GROUP_SIZES:\n                    raise ValueError(\n                        f\"Serialized kitchen_int8 layer {prefix!r} must declare \"\n                        f\"convrot_groupsize in {_SUPPORTED_GROUP_SIZES}, got \"\n                        f\"{marker_group_size!r}\"\n                    )\n                self._serialized_group_sizes[prefix] = marker_group_size\n        # Which layers actually got quantized is worth stating plainly in the\n        # log: a silent fallback to BF16 looks exactly like a slow kernel.\n        self.selected: list[str] = []\n        self.skipped: list[str] = []\n        self._processed = 0\n        self._quantized_bytes = 0\n\n    @classmethod\n    def get_name(cls) -> str:\n        return \"kitchen_int8\"\n\n    @classmethod\n    def get_supported_act_dtypes(cls) -> list[torch.dtype]:","sourceCodeStart":42,"sourceCodeEnd":78,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/multimodal_gen/runtime/layers/quantization/configs/kitchen_int8_config.py#L42-L78","documentation":"Each serialized kitchen_int8 marker must declare convrot_groupsize from the supported set. The group size determines the ConvRot kernel layout, so an unknown or missing value cannot be handled.","triggerScenarios":"A marker whose 'convrot_groupsize' is missing, None, or not in _SUPPORTED_GROUP_SIZES.","commonSituations":"Typos in convrot_groupsize; exporter version mismatch emitting a different key name (e.g. 'group_size').","solutions":["Set convrot_groupsize to a value from _SUPPORTED_GROUP_SIZES matching how the weights were quantized","Re-export with the matching exporter version"],"exampleFix":"// before\n{\"format\": \"int8_tensorwise\", \"convrot\": true, \"convrot_groupsize\": 100}\n// after\n{\"format\": \"int8_tensorwise\", \"convrot\": true, \"convrot_groupsize\": 128}","handlingStrategy":"validation","validationCode":"from ...kitchen_int8_config import _SUPPORTED_GROUP_SIZES\nfor prefix, m in layer_markers.items():\n    assert m.get(\"convrot_groupsize\") in _SUPPORTED_GROUP_SIZES, (prefix, m)","typeGuard":"def valid_convrot_groupsize(m: dict) -> bool:\n    return m.get(\"convrot_groupsize\") in _SUPPORTED_GROUP_SIZES","tryCatchPattern":null,"preventionTips":["Emit convrot_groupsize from the quantizer, never hand-edit it"],"tags":["quantization","convrot","group-size","checkpoint"],"backgroundTag":"invalid-config-parameter","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}