Prhub

#22187 [HiSparse]: Add benchmark for hisparse kernel

原始 PR 作者 hzh0425 合并时间 2026-04-13 12:49 文件变更 1 提交数 3 评论 5 代码增减 +190 / -0

执行摘要

为 hisparse JIT 内核添加基准测试脚本,评估缓存加载性能。

PR body中的性能数据表格显示了hisparse内核在不同batch size、hot buffer size和miss rate下的延迟,表明需要标准化的基准测试来评估性能。结合历史PR 22155(为hisparse添加CI测试),此PR是持续改进测试覆盖和性能监控的一部分,旨在为内核优化提供数据支撑。

对于负责jit-kernel性能优化的工程师,建议浏览此PR以了解基准测试设计和配置参数;但对于一般开发者,无需深入阅读,因为核心代码未变。关注点可放在基准测试方法论和review中的改进建议上。

讨论亮点

gemini-code-assist[bot]在review中提出了四项改进建议:1)增加WARMUP_ROUNDS和ROUNDS(从5增至10/20)以获得更稳定结果;2)使用host_cache.normal_()代替host_cache.copy_(torch.randn_like(host_cache))以减少内存分配;3)建议使用triton.testing.do_bench进行更鲁棒的统计测量;4)修正函数返回值,避免重复相同值。讨论聚焦于基准测试的准确性和效率,没有争议,作者通过提交修复了lint问题,可能已采纳部分建议。

实现拆解

实现集中在单个文件bench_hisparse.py中:定义了基准测试配置(batch sizes为[1,10,100],hot buffer sizes为[4096,8192],miss rates为[0.2,0.001]);使用torch构建模拟输入张量(如top_k_tokens、host_cache、device_buffer);调用load_cache_to_device_buffer_mla函数执行内核;通过时间循环测量延迟,并注册到CI的stage-b-kernel-benchmark套件中。代码结构清晰,遵循现有基准测试工具模式。

文件 模块 状态 重要度
python/sglang/jit_kernel/benchmark/bench_hisparse.py jit-kernel/benchmark added 8.0

关键符号

load_cache_to_device_buffer_mla _make_top_k_tokens _miss_tokens_per_req _build_inputs _time_kernel

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

基准测试轮数优化 性能

gemini-code-assist[bot] 建议增加 WARMUP_ROUNDS 和 ROUNDS 以提升结果稳定性。

结论:建议值从 5 增至 10/20,可能被采纳以改进测量精度。 · 已解决

in-place 张量初始化 性能

建议使用 host_cache.normal_() 代替 copy_ 以降低内存开销。

结论:优化性建议,可能被采纳以提高效率。 · 已解决

使用 do_bench 进行测量 性能

建议采用 triton.testing.do_bench 或类似工具以获得更鲁棒的统计。

结论:讨论未明确是否采纳,但提供了改进方向,可能留待未来优化。 · unresolved

返回值修正 正确性

指出函数返回三个相同值,建议返回单个浮点数以提升代码清晰度。

结论:建议修正,可能已通过代码调整解决。 · 已解决

风险与影响

风险较低:脚本不修改核心内核逻辑,但测量准确性是关键风险点——如果输入构建或计时逻辑有误,可能导致性能数据偏差,误导优化决策。此外,依赖triton等外部库的版本可能影响结果可复现性。代码风格和lint问题已在提交中修复,降低了维护风险。

影响范围限于测试基础设施:为hisparse内核提供了标准化的性能基准,有助于团队监控和优化内核性能;集成到CI中,确保后续变更不会导致性能回归。不影响用户端功能或系统核心路径,对系统整体无直接功能影响。

测量准确性依赖 外部库兼容性

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论