Prhub

#7242 [CI] Reduce execution time for ngram kernel tests

PaddlePaddle/FastDeploy · 作者 EmmonsCurse · 合并时间 2026-04-08 16:54

分析状态 已生成
文件变更 2提交数 1 · 评论 5
代码增减 +22 / -22
CI Optimization Speculative Decoding test

执行摘要

大幅缩减 ngram kernel 测试执行时间,从 6 分钟降至 20 秒,提升 CI 效率。

PR body明确指出:PR #7136添加的两个测试文件执行时间过长(test_ngram_gpu_kernel.py约2分钟,test_benchmark_ngram_kernel.py约4分钟),影响CI效率。其中test_benchmark_ngram_kernel.py是性能基准测试,用于验证GPU kernel加速比,不适合在CI中作为功能验证运行。

该PR展示了CI优化中测试时间与覆盖率的典型权衡。建议精读fastdeploy-bot的评论,思考如何平衡CI效率与测试有效性。对于性能基准测试,可考虑在CI配置中排除或仅在特定触发条件下运行,而非修改参数使其失效。

讨论亮点

fastdeploy-bot提出两点建议:

  1. 针对test_benchmark_ngram_kernel.py:NUM_ITERS=1后基准测试失去性能测量统计意义,建议从CI中移除或跳过,而非修改参数使其失去作用。
  2. 针对test_ngram_gpu_kernel.py:随机种子从4个减少到1个,降低了对随机数据情况的测试覆盖率,建议至少保留2-3个不同种子。
    CSWYF3634076批准了PR,未回应这些建议。

实现拆解

修改两个测试文件:

  1. test_benchmark_ngram_kernel.py:将NUM_ITERS从1000降至1,WARMUP从5降至1。
  2. test_ngram_gpu_kernel.py
    • 将随机种子测试从[0,7,123,999]四个种子缩减为仅[42]。
    • 将大序列测试的seq_len从128k降至16k。
    • 将latency测试的迭代次数从100降至1,warmup从5降至1。
    • 将latency_scaling测试的n_runs从50降至1。
    • 将latency_extreme测试的seq_len从128k降至16k。
文件 模块 状态 重要度
tests/spec_decode/test_benchmark_ngram_kernel.py spec_decode modified 7.0
tests/spec_decode/test_ngram_gpu_kernel.py spec_decode modified 6.0

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

关键符号

test_correctness_varied_seeds test_large_batch_long_seq test_latency test_latency_scaling

评论区精华

基准测试参数调整导致性能测量失效 测试

fastdeploy-bot 指出 NUM_ITERS=1 使基准测试失去统计意义,timing 数据不可靠,建议从 CI 中移除或跳过执行。

结论:未采纳建议,PR 保持 NUM_ITERS=1 的修改。 · 已解决

随机种子覆盖减少可能降低测试覆盖率 测试

fastdeploy-bot 建议至少保留 2-3 个不同种子以保持合理的随机性测试覆盖,减少到单个种子可能遗漏边界条件。

结论:未采纳建议,PR 保持仅使用种子 42。 · 已解决

风险与影响

  1. 测试覆盖风险:随机种子减少可能遗漏某些边界条件,降低GPU kernel在不同随机输入下的正确性验证强度。
  2. 性能验证失效:test_benchmark_ngram_kernel.py的NUM_ITERS=1使性能基准测试失去统计意义,无法可靠测量GPU kernel加速比。
  3. 大序列测试缩减:seq_len从128k降至16k,可能无法充分测试极端规模下的kernel稳定性。
  1. CI效率提升:测试执行时间从6分钟降至20秒,显著加快CI流水线。
  2. 功能验证保留:核心正确性测试仍运行,确保GPU kernel基本功能正常。
  3. 性能监控弱化:基准测试失去原有性能监控价值,需依赖其他机制(如手动触发)进行性能回归检测。
测试覆盖降低 性能验证失效 极端场景测试缩减

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

  • 一句话:大幅缩减ngram kernel测试执行时间,从6分钟降至20秒,提升CI效率。
  • 推荐动作:该PR展示了CI优化中测试时间与覆盖率的典型权衡。建议精读fastdeploy-bot的评论,思考如何平衡CI效率与测试有效性。对于性能基准测试,可考虑在CI配置中排除或仅在特定触发条件下运行,而非修改参数使其失效。

功能与动机

PR body明确指出:PR #7136添加的两个测试文件执行时间过长(test_ngram_gpu_kernel.py约2分钟,test_benchmark_ngram_kernel.py约4分钟),影响CI效率。其中test_benchmark_ngram_kernel.py是性能基准测试,用于验证GPU kernel加速比,不适合在CI中作为功能验证运行。

实现拆解

修改两个测试文件:

  1. test_benchmark_ngram_kernel.py:将NUM_ITERS从1000降至1,WARMUP从5降至1。
  2. test_ngram_gpu_kernel.py
    • 将随机种子测试从[0,7,123,999]四个种子缩减为仅[42]。
    • 将大序列测试的seq_len从128k降至16k。
    • 将latency测试的迭代次数从100降至1,warmup从5降至1。
    • 将latency_scaling测试的n_runs从50降至1。
    • 将latency_extreme测试的seq_len从128k降至16k。

关键文件:

  • tests/spec_decode/test_benchmark_ngram_kernel.py(模块 spec_decode): 性能基准测试文件,NUM_ITERS从1000降至1,使基准测试失去统计意义,是review讨论焦点。
  • tests/spec_decode/test_ngram_gpu_kernel.py(模块 spec_decode): GPU kernel功能测试文件,缩减迭代次数、测试数据规模和随机种子覆盖,是CI时间优化的主要改动点。

关键符号:test_correctness_varied_seeds, test_large_batch_long_seq, test_latency, test_latency_scaling

评论区精华

fastdeploy-bot提出两点建议:

  1. 针对test_benchmark_ngram_kernel.py:NUM_ITERS=1后基准测试失去性能测量统计意义,建议从CI中移除或跳过,而非修改参数使其失去作用。
  2. 针对test_ngram_gpu_kernel.py:随机种子从4个减少到1个,降低了对随机数据情况的测试覆盖率,建议至少保留2-3个不同种子。
    CSWYF3634076批准了PR,未回应这些建议。
  • 基准测试参数调整导致性能测量失效 (testing): 未采纳建议,PR保持NUM_ITERS=1的修改。
  • 随机种子覆盖减少可能降低测试覆盖率 (testing): 未采纳建议,PR保持仅使用种子42。

风险与影响

  • 风险:1. 测试覆盖风险:随机种子减少可能遗漏某些边界条件,降低GPU kernel在不同随机输入下的正确性验证强度。
    2. 性能验证失效:test_benchmark_ngram_kernel.py的NUM_ITERS=1使性能基准测试失去统计意义,无法可靠测量GPU kernel加速比。
    3. 大序列测试缩减:seq_len从128k降至16k,可能无法充分测试极端规模下的kernel稳定性。
  • 影响:1. CI效率提升:测试执行时间从6分钟降至20秒,显著加快CI流水线。
    2. 功能验证保留:核心正确性测试仍运行,确保GPU kernel基本功能正常。
    3. 性能监控弱化:基准测试失去原有性能监控价值,需依赖其他机制(如手动触发)进行性能回归检测。
  • 风险标记:测试覆盖降低, 性能验证失效, 极端场景测试缩减

关联脉络

  • PR #7136 [Optimization]【Hackathon 10th Spring No.49】GPU ngram_match: BlockScan Phase 2 -optimized: 本PR优化的测试文件正是由PR #7136引入,该PR添加了ngram GPU kernel优化及相应测试。
  • PR #7231 [Speculative Decoding] Remove arctic_inference deps: 同属Speculative Decoding模块的优化,关注依赖管理和部署简化。
  • PR #7201 [OP][Optimization] Remove ENABLE_PREFILL template parameter in multi_query_append_attention_warp1_4_kernel: 同属GPU kernel优化相关PR,涉及模板参数简化和内存布局统一。

参与讨论