{"record":{"id":"0cdae1f35f02bbc1","repo":"sgl-project/sglang","slug":"minicpm-fused-top-k-only-supports-bfloat16-and-flo","errorCode":null,"errorMessage":"MiniCPM fused top-k only supports bfloat16 and float16, got {self.model_dtype}.","messagePattern":"MiniCPM fused top-k only supports bfloat16 and float16, got (.+?)\\.","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/layers/attention/minicpm/backend.py","lineNumber":227,"sourceCode":"        self.head_dim = model_runner.model_config.head_dim\n        self.head_group_num = self.num_kv_heads\n        self.heads_per_group = self.num_q_heads // self.head_group_num\n        if self.heads_per_group != 16:\n            raise ValueError(\n                \"MiniCPM sparse attention requires 16 query heads per KV head, \"\n                f\"got {self.heads_per_group}.\"\n            )\n        self.k1_kernel_size = self.kernel_size\n        self.k1_kernel_stride = self.kernel_stride\n        self.k2_kernel_size = self.kernel_size * 4\n        self.k2_kernel_stride = self.kernel_stride * 4\n\n        self.minicpm_fuse_topk = (\n            use_blackwell and use_flashinfer\n        ) or envs.SGLANG_MINICPM_FUSE_TOPK.get()\n        dtype_str = str(self.model_dtype).removeprefix(\"torch.\")\n        if self.minicpm_fuse_topk and dtype_str not in (\"bfloat16\", \"float16\"):\n            raise ValueError(\n                \"MiniCPM fused top-k only supports bfloat16 and float16, \"\n                f\"got {self.model_dtype}.\"\n            )\n\n        max_cache_len = self.max_context_len\n        pooled_k_len = (max_cache_len + self.block_size - 1) // self.block_size\n\n        output_topk = min(self.sparse_topk, pooled_k_len)\n\n        # For the kernel, we need power of 2 topk\n        topk_power2 = next_power_of_2(output_topk)\n        kernel_topk = min(topk_power2, pooled_k_len)\n        # Make sure it's still power of 2\n        if kernel_topk != next_power_of_2(kernel_topk):\n            kernel_topk = next_power_of_2(kernel_topk) // 2\n        kernel_topk = max(8, kernel_topk)\n        self.kernel_topk = kernel_topk\n        self.decode_fused_kernels = {}","sourceCodeStart":209,"sourceCodeEnd":245,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/layers/attention/minicpm/backend.py#L209-L245","documentation":"Error \"MiniCPM fused top-k only supports bfloat16 and float16, got {self.model_dtype}.\" thrown in sgl-project/sglang.","triggerScenarios":"Thrown at python/sglang/srt/layers/attention/minicpm/backend.py:227 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}