Prhub

#43538 [CI/Perf] Fix malformed serving benchmark config

原始 PR 作者 fallintoplace 合并时间 2026-07-29 17:52 文件变更 1 提交数 1 评论 6 代码增减 +0 / -5

执行摘要

修复性能基准 JSON 配置格式错误

关联 Issue #43537 指出 .buildkite/performance-benchmarks/tests/serving-tests.json 是无效 JSON,导致默认 serving benchmark 配置解析失败。Issue 明确要求“Remove the stray duplicate object”并建议增加验证保护。

值得快速合并,属于高频阻塞型 bugfix。关注其中对预发布流程的教训:未来修改 benchmark 配置应确保 JSON 合法性校验被纳入 CI 流程。

讨论亮点

review 中主要讨论了是否应引入自定义 JSON 校验器。审阅者 hmellor 明确否决了该方案(“We're not going to merge a custom JSON linter”),作者随后移除了相关脚本,只保留 JSON 修复本身。最终 hmellor 批准了简化后的变更。

实现拆解

  1. 定位问题:通过 git blame 确认 PR #43262 在转换配置格式时,在 serving_llama8B_tp1_sharegpt 对象后遗留了一个重复的 dataset_name / dataset_path 对象。
  2. 删除多余对象:直接从 JSON 文件中删除了第 31-34 行(base 版本)的无效对象,使 tests 数组元素连续合法。
  3. 本地验证:使用 json.toolpre-commit 验证 JSON 已合法。
文件 模块 状态 重要度
.buildkite/performance-benchmarks/tests/serving-tests.json 基准配置 modified 4.06

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

评论区精华

是否引入自定义 JSON 校验器 设计

作者最初尝试添加一个 Python 脚本来验证 JSON 文件,但审阅者 hmellor 明确拒绝合并自定义 JSON linter。

结论:不引入新工具,仅修复 JSON 本身。 · 已解决

风险与影响

该变更风险极低:只删除 5 行无效 JSON,不影响其他配置项;本地已通过 Python 和 pre-commit 验证。无回归、性能、安全或兼容性风险。

修复了默认 serving benchmark 配置的解析失败,使得 CI 性能基准测试恢复正常运行。无其他影响。

关联 Issue

#43537 [CI/Perf] Invalid JSON in serving benchmark config

完整报告

参与讨论