Prhub

#21736 [Benchmark] Add auto benchmark tool with YAML-driven server flag search and canonical dataset format

原始 PR 作者 BBuf 合并时间 2026-04-04 21:46 文件变更 48 提交数 15 评论 4 代码增减 +6688 / -0

执行摘要

添加自动化基准测试工具,支持 YAML 配置驱动的服务器标志搜索和规范数据集格式。

当前手动尝试不同服务器标志组合以优化性能既繁琐又易错(PR body中提及)。此PR旨在通过自动化搜索和评估流程,减少调优工作量并提高配置优化效率。

建议工程师精读此PR,重点关注YAML配置设计、分层搜索策略和错误处理机制。该工具适用于性能调优场景,但需注意风险管理,如设置合理的搜索超时和验证数据集格式。

讨论亮点

无正式review评论;Issue评论中作者BBuf分享了Qwen3-32B和MiniMax-M2.5的基准测试结果,展示了工具的实际应用效果,但未涉及技术争议。

实现拆解

实现分为四个主要模块:1) CLI入口点(auto_enchmark.py)提供run、convert、validate命令;2) 核心库(auto_benchmark_lib.py)处理YAML配置加载、搜索空间生成、服务器管理和基准测试执行;3) 数据集模块(autobench.py)实现规范格式加载器,支持多种输入格式归一化;4) 单元测试(test_auto_benchmark_tools.py)验证工具功能。修改现有文件以集成autobench数据集选项。

文件 模块 状态 重要度
python/sglang/auto_benchmark.py benchmark 工具 added 8.0
python/sglang/auto_benchmark_lib.py benchmark 工具 added 9.0
python/sglang/benchmark/datasets/autobench.py 数据集处理 added 7.0
test/registered/unit/test_auto_benchmark_tools.py 测试 added 6.0

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

关键符号

run_auto_benchmark convert_dataset validate_dataset sample_autobench_requests serialize_dataset_row_to_autobench

评论区精华

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

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

风险与影响

技术风险包括:1) 搜索空间过大可能导致基准测试耗时过长,影响CI/CD流水线;2) 数据集格式转换错误可能影响基准测试准确性;3) 自动化服务器管理可能因进程清理不当导致端口冲突或资源泄漏;4) 新工具复杂性高,用户配置错误可能产生无效结果。

对用户:显著降低性能调优门槛,提升效率;对系统:新增工具不干扰核心推理路径,但增加代码维护负担;对团队:促进标准化基准测试流程,有助于持续性能监控和优化。

搜索空间管理复杂 数据集格式兼容性 进程管理风险

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

本PR引入了自动化基准测试工具,通过YAML配置驱动服务器标志搜索和规范数据集格式,旨在简化SGLang性能调优流程。该工具自动管理服务器生命周期、执行QPS搜索并输出最优配置,显著提升调优效率,但需注意搜索耗时和数据格式风险。

功能与动机

当前手动尝试不同服务器标志组合以优化性能既繁琐又易错。此PR旨在通过自动化搜索和评估流程,减少调优工作量。如PR body所述:“Currently, finding the optimal SGLang server configuration for a specific model and workload requires manually trying different flag combinations with bench_serving, which is tedious and error-prone.” 工具支持YAML配置文件定义搜索空间、SLA约束和数据集,实现端到端自动化。

实现拆解

实现分为以下模块:

  • CLI入口点python/sglang/auto_benchmark.py 提供run、convert、validate子命令。
  • 核心库python/sglang/auto_benchmark_lib.py 处理YAML加载、搜索空间生成(支持分层策略Tier 1-3)、服务器管理(启动/停止)和QPS二分搜索。
  • 数据集模块python/sglang/benchmark/datasets/autobench.py 实现规范格式加载器,支持sharegpt、custom等格式归一化。
  • 单元测试test/registered/unit/test_auto_benchmark_tools.py 验证工具功能。
    修改文件如python/sglang/bench_serving.py添加'autobench'数据集选项。

评论区精华

无正式review评论;Issue评论中作者BBuf分享了基准测试结果,例如:

“在H100上面跑mimimax2.5 autobenchmark,并实时回传进度”
展示了工具的实际应用效果,但未涉及技术争议或设计权衡。

风险与影响

风险

  1. 搜索空间爆炸可能导致基准测试耗时过长,影响CI/CD效率(例如,全笛卡尔积搜索Tier 3)。
  2. 数据集格式转换错误(如JSON解析失败)可能影响基准测试准确性。
  3. 自动化服务器管理可能因进程清理不当导致端口冲突或资源泄漏。
    影响
  • 对用户:简化性能调优流程,降低技术门槛。
  • 对系统:新增工具不干扰核心推理路径,但增加代码库维护复杂度。
  • 对团队:促进标准化基准测试,有助于持续性能监控和优化。

关联脉络

与本PR相关的历史PR包括:

  • PR #15562:添加推理tokens使用统计,涉及性能监控,与基准测试工具共享数据收集目标。
  • PR #22100:放宽推测解码测试阈值,修复CI不稳定问题,影响基准测试的可靠性和稳定性。
  • PR #22098:恢复TRTLLM attention以提升性能,涉及服务器配置调优,与本PR的自动化搜索功能互补。
    这些PR共同推动了SGLang在性能测试和优化方面的演进,形成更完整的调优生态。

参与讨论