Prhub

#21793 Add latency and throughput metrics to run_eval

原始 PR 作者 hnyls2002 合并时间 2026-04-01 09:36 文件变更 2 提交数 2 评论 2 代码增减 +22 / -0

执行摘要

为 run_eval 添加延迟和吞吐量指标,支持 CI 回归检查。

根据 PR body,动机是 'Track completion_tokens in ChatCompletionSampler and compute output_throughput + latency in run_eval metrics. Foundation for regression CI checks.'

建议对 CI 工程师和测试开发者精读,以了解新的 metrics 计算方式;对于其他开发者,快速浏览即可。

讨论亮点

review 评论为空,表示没有进行讨论,变更直接通过。

实现拆解

实现包括两个关键改动:1) 在 simple_eval_common.py 中,为 ChatCompletionSampler 类添加 _completion_tokens 列表属性,并在 __call__ 方法中收集每个响应的完成令牌。2) 在 run_eval.pyrun_eval 函数中,为单个重复(repeat == 1)和多个重复(repeat > 1)场景分别计算总延迟和平均延迟,并根据累积完成令牌计算输出吞吐量,更新 metrics 字典。

文件 模块 状态 重要度
python/sglang/test/run_eval.py test modified 4.0
python/sglang/test/simple_eval_common.py test modified 3.0

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

关键符号

run_eval ChatCompletionSampler.__init__ ChatCompletionSampler.__call__

评论区精华

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

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

风险与影响

风险较低:代码逻辑简单,已处理除零情况(total_completion_tokens > 0 and latency > 0)。但需要确保 _completion_tokens 正确累积,避免在并发或错误情况下数据不一致。修改仅影响测试 metrics 收集,不涉及核心推理路径。

影响范围小:主要面向 CI 测试流程,添加了额外的性能指标,有助于监控模型变化。不影响最终用户功能,但可能影响基于这些 metrics 的自动化测试结果。

条件判断依赖 测试数据收集

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

本 PR 在 sglang 仓库的 run_eval 脚本中添加了延迟和输出吞吐量指标计算,旨在为 CI 回归检查提供性能监控基础。通过修改评估采样器来跟踪完成令牌,实现简单且风险低的增强。

功能与动机

根据 PR body,主要动机是“Track completion_tokens in ChatCompletionSampler and compute output_throughput + latency in run_eval metrics. Foundation for regression CI checks.” 这意味着为了支持 CI 流程中的性能回归测试,需要收集模型推理的延迟和令牌生成速率指标。

实现拆解

关键改动涉及两个文件:

  • python/sglang/test/simple_eval_common.py: 为 ChatCompletionSampler 类添加 _completion_tokens 列表属性,并在 __call__ 方法中累积每个 API 响应的完成令牌。
  • python/sglang/test/run_eval.py: 在 run_eval 函数中,针对单个重复和多个重复场景,分别计算延迟(总延迟或平均延迟)和输出吞吐量(总完成令牌 / 总延迟),并更新 metrics 字典。

示例代码逻辑:

if total_completion_tokens > 0 and latency > 0:
    metrics["output_throughput"] = total_completion_tokens / latency

评论区精华

review 评论为空,表明变更未经讨论直接通过,可能因为改动较小且直接。

风险与影响

风险分析:代码已处理除零情况,但需要确保 _completion_tokens 在并发评估中正确累积;影响限于测试 metrics,不改变核心功能,可能影响基于这些指标的自动化测试。

关联脉络

相关 PR #21785 同样修改了 run_eval.pysimple_eval_common.py,扩展了评估采样器,显示该仓库近期在加强评估工具链,以支持更全面的 CI 性能监控。

参与讨论