Prhub

#22282 [tiny] migrate /get_server_info; print accept length in accuracy tests

原始 PR 作者 hnyls2002 合并时间 2026-04-08 04:08 文件变更 2 提交数 4 评论 1 代码增减 +17 / -11

执行摘要

迁移废弃的 /get_server_info 端点至 /server_info,并在所有精度测试中打印推测解码接受长度。

根据PR描述,动机是迁移最后两个仍在使用已废弃的/get_server_info端点的调用者到/server_info端点,以保持API一致性。同时,在精度测试中打印推测解码的接受长度,便于监控和调试性能指标。

该PR变更简单直接,适合快速浏览以了解API迁移和测试工具改进。关注_check_accept_length函数的异常处理设计,确保非推测解码服务器不会导致测试失败。

讨论亮点

由于review评论为空,没有讨论内容。

实现拆解

实现分为两个主要部分:1. 在python/sglang/test/kits/eval_accuracy_kit.py中,重构_check_accept_length函数,将端点从/get_server_info改为/server_info,并添加异常处理以静默跳过非推测解码服务器;同时简化各测试混合类的调用逻辑,移除条件判断,统一调用_check_accept_length。2. 在test/registered/spec/test_ngram_speculative_decoding.py中,将端点从/get_server_info改为/server_info。

文件 模块 状态 重要度
python/sglang/test/kits/eval_accuracy_kit.py 测试工具包 modified 8.0
test/registered/spec/test_ngram_speculative_decoding.py 推测解码测试 modified 4.0

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

关键符号

_check_accept_length

评论区精华

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

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

风险与影响

风险较低:1. 端点迁移可能引入兼容性问题,但/server_info是标准端点,且已处理异常(KeyError、IndexError、requests.RequestException),降低失败风险。2. 在精度测试中打印接受长度可能增加日志输出,但不会影响测试逻辑。3. 修改涉及测试文件,需确保CI测试通过,但PR已标记run-ci标签,表明已运行测试。

影响范围有限:1. 对用户无直接影响,主要影响内部测试和监控。2. 系统层面,提升API一致性,减少技术债务。3. 团队层面,便于开发者在精度测试中查看推测解码性能指标,辅助调试和优化。

API 迁移风险 测试逻辑变更

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

此PR将最后两个使用已废弃/get_server_info端点的调用迁移至/server_info,提升API一致性;同时修改精度测试工具包,在所有测试混合类中打印推测解码的接受长度指标,便于性能监控。变更影响有限,主要涉及测试文件,风险较低。

功能与动机

根据PR描述,动机是迁移废弃的/get_server_info端点,以保持API一致性。具体来说:

  • 迁移test/registered/spec/test_ngram_speculative_decoding.pypython/sglang/test/kits/eval_accuracy_kit.py中的端点调用。
  • 在精度测试中打印avg_spec_accept_length,用于监控推测解码性能,对于非推测解码服务器则静默跳过,避免干扰测试。

实现拆解

主要改动集中在两个文件:

  1. python/sglang/test/kits/eval_accuracy_kit.py
    • 重构_check_accept_length函数:
      python def _check_accept_length(test_case, base_url, threshold=None): """Print accept length; optionally assert it exceeds threshold.""" try: server_info = requests.get(base_url + "/server_info").json() val = server_info["internal_states"][0]["avg_spec_accept_length"] except (KeyError, IndexError, requests.RequestException): return print(f"avg_spec_accept_length={val:.4f}") if threshold is not None: test_case.assertGreater(val, threshold)
    • 简化各测试混合类(GSM8K、MMLU、HumanEval、MGSM-EN)的调用,移除条件判断,统一调用_check_accept_length
  2. test/registered/spec/test_ngram_speculative_decoding.py
    • 将端点从/get_server_info改为/server_info

评论区精华

无review评论,讨论内容为空。

风险与影响

  • 风险:端点迁移可能引入兼容性问题,但已添加异常处理(KeyError、IndexError、requests.RequestException),降低失败风险;测试逻辑变更需确保CI通过,PR已标记run-ci标签。
  • 影响:对用户无直接影响;系统层面提升API一致性;团队层面便于开发者查看推测解码性能指标,辅助调试。

关联脉络

  • 与PR #22199("[Spec][Ngram] Add output-as-corpus accept length benchmark for external SAM")相关,同属推测解码领域,且修改了相同文件test/registered/spec/test_ngram_speculative_decoding.py,显示团队在持续优化推测解码的测试和监控能力。

参与讨论