Prhub

#30001 [NPU] bugfix for dsv4 memory pool

原始 PR 作者 khalil2ji3mp6 合并时间 2026-07-03 16:41 文件变更 1 提交数 1 评论 2 代码增减 +9 / -0

执行摘要

为 NPU 添加空实现的 clear_unaccepted_c128_draft_states

PR #28612 引入了 clear_unaccepted_c128_draft_states 方法,NPU 路径也需要具备同名接口以避免 AttributeError,即使 NPU 上无需实际清理。

值得快速合并以修复 NPU 兼容性。建议未来添加注释说明为何留空,方便后续维护。

讨论亮点

无 review 讨论,PR 由 sglang-npu-bot 提交并合并。

实现拆解

在文件 python/sglang/srt/hardware_backend/npu/dsv4/dsv4_memory_pool.py 的 NPUDeepSeekV4MemoryPool 类中新增 clear_unaccepted_c128_draft_states 方法,位于 _make_indexer_state_pool 方法之后。方法签名与 CUDA 版本一致,但方法体仅为 pass。

文件 模块 状态 重要度
python/sglang/srt/hardware_backend/npu/dsv4/dsv4_memory_pool.py NPU 后端 modified 6.11

关键符号

clear_unaccepted_c128_draft_states

关键源码片段

python/sglang/srt/hardware_backend/npu/dsv4/dsv4_memory_pool.py core-logic

新增 clear_unaccepted_c128_draft_states 方法以匹配 CUDA 接口,修复 NPU 上缺少方法定义的 bug。

def clear_unaccepted_c128_draft_states(
    self,
    req_pool_indices: torch.Tensor,
    seq_lens: torch.Tensor,
    accept_lens: torch.Tensor,
    num_draft_tokens: int,
) -> None:
    # NPU 的 fused compressor 不需要实际清理草稿状态,
    # 此方法仅提供空实现以匹配 CUDA 接口,
    # 避免调用时抛出 AttributeError。
    pass

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

风险极低。新增的方法为空实现(pass),不会改变现有行为。但如果未来 NPU 需要实际清理逻辑,空实现可能被遗忘更新。

仅影响 NPU 硬件后端,修复了调用 clear_unaccepted_c128_draft_states 时抛出的 AttributeError。不影响 CUDA 或其他后端。

空实现可能被遗忘

关联 Issue

未识别关联 Issue

当前没有检测到明确关联的 Issue 链接,后续同步到相关引用后会出现在这里。

完整报告

参与讨论