Prhub

#21710 [AMD] Add GLM-5-FP8 nightly performance benchmarks for MI30x and MI35x

sgl-project/sglang · 作者 michaelzhang-ai · 合并时间 2026-04-08 13:43

分析状态 已生成
文件变更 6提交数 2 · 评论 6
代码增减 +345 / -5
amd test performance run-ci

执行摘要

为 AMD MI30x 和 MI35x 平台新增 GLM-5-FP8 模型的夜间性能基准测试。

根据PR body,动机是添加GLM-5-FP8夜间性能基准测试以匹配NV/InferenceX配置,确保跨平台行为一致性。作者引用关联Issue评论,建议添加--reasoning-parser和--tool-call-parser标志以对齐测试设置。

建议团队关注此PR以了解AMD性能测试框架的扩展,但需后续处理review中提出的代码质量问题,如重构重复函数和修复除零风险,以确保测试健壮性。

讨论亮点

review中gemini-code-assist[bot]指出多个问题:函数generate_simple_markdown_report在多个文件重复,应移至共享模块;ITL计算存在除零风险;MI35x测试硬编码HF_HOME路径降低可移植性;MI35x配置缺少SGLANG_USE_AITER环境变量可能导致性能偏差。这些评论未被直接解决,PR在获得批准后合并。

实现拆解

实现分为三个部分:1) 修改CI工作流文件(nightly-test-amd.yml和nightly-test-amd-rocm720.yml),在GLM-5测试任务中添加性能测试步骤,设置continue-on-error以避免阻塞CI。2) 新增性能测试文件(test_glm5_perf_amd.py和test_glm5_perf_mi35x.py),定义测试类使用bench_one_batch方法,配置模型路径、TP=8、FP8 KV缓存等参数。3) 更新准确性测试文件,切换模型至zai-org/GLM-5-FP8并添加parser flags。

文件 模块 状态 重要度
.github/workflows/nightly-test-amd.yml ci-workflow modified 7.0
test/registered/amd/perf/mi30x/test_glm5_perf_amd.py test-performance added 8.0
test/registered/amd/perf/mi35x/test_glm5_perf_mi35x.py test-performance added 8.0
test/registered/amd/accuracy/mi30x/test_glm5_eval_amd.py test-accuracy modified 5.0

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

关键符号

generate_simple_markdown_report TestNightlyGLM5Performance.setUpClass TestGLM5PerfMI35x.setUpClass

评论区精华

代码重复问题 设计

gemini-code-assist[bot] 指出 generate_simple_markdown_report 函数在多个测试文件中重复,建议移至共享模块以提升维护性。

结论:未在 PR 中解决,可能作为未来改进项。 · 待处理

除零错误风险 正确性

reviewer 提示 ITL 计算中 result.output_throughput 可能为零,导致 ZeroDivisionError,建议添加零值检查。

结论:未修复,存在测试崩溃的潜在风险。 · 待处理

硬编码路径可移植性 设计

MI35x 测试中硬编码 HF_HOME 和 HF_HUB_CACHE 路径至 /data2/...,降低测试在非 CI 环境的可移植性。

结论:未调整,可能限制测试运行灵活性。 · 待处理

环境变量不一致 性能

MI35x 配置缺少 SGLANG_USE_AITER 环境变量,而 MI30x 启用,可能导致性能结果偏差,影响跨平台比较。

结论:未添加,可能使性能监控数据不准确。 · 待处理

风险与影响

技术风险包括:除零错误可能导致测试崩溃,影响CI稳定性;硬编码路径使测试依赖特定环境,降低可移植性;环境变量不一致可能使MI35x性能结果不准确;代码重复增加维护成本。此外,性能测试使用continue-on-error,失败可能被忽略,掩盖潜在问题。

对用户无直接影响,属于内部测试增强。对系统:新增夜间性能监控,有助于识别AMD平台性能回归。对团队:提供标准化基准数据,支持性能优化决策,并促进跨平台配置对齐。

代码重复 除零风险 硬编码依赖 环境变量不一致

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

本PR为AMD MI30x和MI35x平台新增GLM-5-FP8模型的夜间性能基准测试,通过扩展CI工作流和添加测试文件,实现性能监控与跨平台配置对齐,但存在代码质量和可移植性风险需后续关注。

功能与动机

为解决AMD平台性能监控缺失问题,本PR旨在添加GLM-5-FP8的夜间性能测试,以匹配NV和InferenceX的配置标准。PR body强调“matching NV/InferenceX configs”并引用关联Issue评论建议添加--reasoning-parser=glm45 --tool-call-parser=glm47标志,减少跨平台行为漂移。

实现拆解

  • CI工作流修改:在.github/workflows/nightly-test-amd.ymlnightly-test-amd-rocm720.yml中添加性能测试步骤,设置continue-on-error: true,确保准确性测试失败时作业仍可继续。
  • 性能测试文件新增:创建test/registered/amd/perf/mi30x/test_glm5_perf_amd.pytest/registered/amd/perf/mi35x/test_glm5_perf_mi35x.py,使用bench_one_batch方法,关键配置如下:
    python other_args=[ "--trust-remote-code", "--reasoning-parser", "glm45", "--tool-call-parser", "glm47", "--tp", "8", "--kv-cache-dtype", "fp8_e4m3", "--mem-fraction-static", "0.85" ]
  • 准确性测试更新:同步test/registered/amd/accuracy/下的文件,将模型路径从zai-org/GLM-5切换至zai-org/GLM-5-FP8,并添加相同parser flags。

评论区精华

  • gemini-code-assist[bot]指出:“generate_simple_markdown_report函数是重复的,应考虑移至共享模块”,但此建议未在PR中采纳。
  • 关于除零风险:“Potential ZeroDivisionError if result.output_throughput is zero”,提示添加检查以避免崩溃。
  • 硬编码路径问题:“Hardcoding environment variables like HF_HOME reduces portability”,建议通过CI环境配置提升可移植性。
  • 环境变量不一致:“SGLANG_USE_AITER is missing for MI35x”,可能影响性能比较的准确性。

风险与影响

  • 风险:除零错误可导致测试中断,影响CI稳定性;硬编码路径限制测试在非CI环境运行;环境变量缺失使MI35x性能数据可能不准确;代码重复增加维护负担。性能测试使用continue-on-error,失败可能被忽略,掩盖潜在问题。
  • 影响:对用户无直接影响,但增强内部测试覆盖,有助于团队监控AMD平台性能趋势,支持优化决策。新增测试提供标准化基准数据,促进跨平台配置对齐。

关联脉络

本PR依赖#22314(修复FP8 KV量化路径)和#22232(优化NSA indexer)的修复以启用关键功能,与近期PR如#22288(测试模型更新)共同反映AMD测试套件的持续演进。提交历史显示第二个提交启用了FP8 KV缓存,表明实现基于依赖PR的合并状态进行演进。

参与讨论