{"record":{"id":"243515b08df68ca5","repo":"sgl-project/sglang","slug":"kitchen-int8-group-size-must-be-one-of-supported","errorCode":null,"errorMessage":"kitchen_int8 group_size must be one of {_SUPPORTED_GROUP_SIZES}, got {group_size}","messagePattern":"kitchen_int8 group_size must be one of (.+?), got (.+?)","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/multimodal_gen/runtime/layers/quantization/configs/kitchen_int8_config.py","lineNumber":35,"sourceCode":"\nlogger = init_logger(__name__)\n\n_SUPPORTED_GROUP_SIZES = (16, 64, 256)\n\n\nclass KitchenInt8Config(QuantizationConfig):\n    \"\"\"Dispatch online quantization or serialized Comfy ConvRot layers.\"\"\"\n\n    def __init__(\n        self,\n        group_size: int = 256,\n        ignored_layers: list[str] | None = None,\n        packed_modules_mapping: dict[str, list[str]] | None = None,\n        layer_markers: dict[str, dict[str, Any]] | None = None,\n    ) -> None:\n        super().__init__()\n        if group_size not in _SUPPORTED_GROUP_SIZES:\n            raise ValueError(\n                f\"kitchen_int8 group_size must be one of {_SUPPORTED_GROUP_SIZES}, \"\n                f\"got {group_size}\"\n            )\n        self.group_size = group_size\n        self.ignored_layers = ignored_layers or []\n        self.packed_modules_mapping = packed_modules_mapping or {}\n        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:","sourceCodeStart":17,"sourceCodeEnd":53,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/multimodal_gen/runtime/layers/quantization/configs/kitchen_int8_config.py#L17-L53","documentation":"KitchenInt8Config.__init__ validates that group_size is in _SUPPORTED_GROUP_SIZES and raises immediately otherwise. The ConvRot INT8 kernels only work for specific group sizes, so an out-of-set value cannot be silently coerced.","triggerScenarios":"Constructing KitchenInt8Config (or passing quant config kwargs) with group_size not in the supported set (check the module's _SUPPORTED_GROUP_SIZES constant).","commonSituations":"Copying a group_size like 32 or 64 from other quant methods (GPTQ/AWQ) into kitchen_int8; typos in config files.","solutions":["Read _SUPPORTED_GROUP_SIZES in kitchen_int8_config.py and use one of those values","If you need a different group size, re-quantize with a supported scheme"],"exampleFix":"// before\nKitchenInt8Config(group_size=32)\n// after\nfrom ...kitchen_int8_config import _SUPPORTED_GROUP_SIZES\nKitchenInt8Config(group_size=next(iter(_SUPPORTED_GROUP_SIZES)))","handlingStrategy":"validation","validationCode":"from sglang.multimodal_gen.runtime.layers.quantization.configs.kitchen_int8_config import _SUPPORTED_GROUP_SIZES\nassert group_size in _SUPPORTED_GROUP_SIZES, f\"pick from {_SUPPORTED_GROUP_SIZES}\"","typeGuard":"def is_supported_group_size(gs: int) -> bool:\n    return gs in _SUPPORTED_GROUP_SIZES","tryCatchPattern":null,"preventionTips":["Always import and check the supported-set constant rather than hardcoding group sizes"],"tags":["quantization","config-validation","group-size"],"backgroundTag":"invalid-config-parameter","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}