执行摘要
此PR将最后两个使用已废弃/get_server_info端点的调用迁移至/server_info,提升API一致性;同时修改精度测试工具包,在所有测试混合类中打印推测解码的接受长度指标,便于性能监控。变更影响有限,主要涉及测试文件,风险较低。
功能与动机
根据PR描述,动机是迁移废弃的/get_server_info端点,以保持API一致性。具体来说:
- 迁移
test/registered/spec/test_ngram_speculative_decoding.py和python/sglang/test/kits/eval_accuracy_kit.py中的端点调用。
- 在精度测试中打印
avg_spec_accept_length,用于监控推测解码性能,对于非推测解码服务器则静默跳过,避免干扰测试。
实现拆解
主要改动集中在两个文件:
- 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。
- 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,显示团队在持续优化推测解码的测试和监控能力。
参与讨论