{"record":{"id":"27b6060b52f8840c","repo":"sgl-project/sglang","slug":"ptxkdakernel-does-not-support-target-verify","errorCode":null,"errorMessage":"PtxKDAKernel does not support target_verify","messagePattern":"PtxKDAKernel does not support target_verify","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"python/sglang/srt/layers/attention/linear/kernels/kda_ptx.py","lineNumber":82,"sourceCode":"        self._staging = {}\n\n    def _ensure_loaded(self):\n        if self._fwd is None:\n            from sglang.kernels.ops.attention.linear.kda_ptx_prefill import (\n                chunk_kda_fwd,\n                load_ext,\n            )\n\n            logger.info(\"Building the PTX KDA prefill extension (first use, ~1-2 min)\")\n            load_ext()\n            self._fwd = chunk_kda_fwd\n            logger.info(\"Using PTX KDA chunked prefill (GB300 / sm_103a)\")\n\n    def decode(self, *args, **kwargs):\n        raise NotImplementedError(\"PtxKDAKernel is prefill-only\")\n\n    def target_verify(self, *args, **kwargs):\n        raise NotImplementedError(\"PtxKDAKernel does not support target_verify\")\n\n    def _flat_param(self, t: Optional[torch.Tensor]) -> Optional[torch.Tensor]:\n        if t is None:\n            return None\n        key = (t.data_ptr(), t.dtype, tuple(t.shape))\n        flat = self._param_flat.get(key)\n        if flat is None:\n            flat = t.detach().reshape(-1).float().contiguous()\n            self._param_flat[key] = flat\n        return flat\n\n    def _get_staging(self, bucket, num_heads, head_k_dim, head_v_dim, dev):\n        key = (bucket, num_heads, head_k_dim, head_v_dim, dev.index)\n        st = self._staging.get(key)\n        if st is None:\n            st = {\n                \"q\": torch.zeros(\n                    1, bucket, num_heads, head_k_dim, dtype=torch.bfloat16, device=dev","sourceCodeStart":64,"sourceCodeEnd":100,"githubUrl":"https://github.com/sgl-project/sglang/blob/0132848349585cfe6aae51c4941cbae872505f8a/python/sglang/srt/layers/attention/linear/kernels/kda_ptx.py#L64-L100","documentation":"PtxKDAKernel is prefill-only and does not implement the speculative-decoding target_verify path; calling it raises NotImplementedError.","triggerScenarios":"Enabling speculative decoding while the PTX KDA kernel is selected, causing target_verify to dispatch to it.","commonSituations":"Spec decoding (EAGLE) enabled on a KDA model on GB300 hardware with the PTX backend active for verify.","solutions":["Switch the verify path to a backend that supports target_verify (e.g. flashinfer)","Disable speculative decoding","Configure per-phase backends so verify avoids the PTX kernel"],"exampleFix":"# before\n--speculative-algorithm EAGLE  # with PTX KDA backend\n# after\n--speculative-algorithm NONE   # or use flashinfer for verify","handlingStrategy":"validation","validationCode":"if server_args.speculative_algorithm and isinstance(kernel, PtxKDAKernel):\n    raise SystemExit('PTX KDA kernel does not support target_verify; disable spec or use flashinfer')","typeGuard":"def supports_target_verify(kernel) -> bool:\n    return type(kernel).target_verify.__code__ is not PtxKDAKernel.target_verify.__code__","tryCatchPattern":null,"preventionTips":["Validate spec config against backend support before enabling EAGLE"],"tags":["sglang","ptx","kda","speculative-decoding","not-implemented"],"backgroundTag":"unsupported-operation","analyzedSha":"0132848349585cfe6aae51c4941cbae872505f8a","analyzedAt":"2026-08-28T05:10:05.995Z","schemaVersion":2},"datasetVersion":"2026-08-28T06:17:29.519Z"}