Prhub

#21785 Add CompletionSampler for non-chat eval in run_eval

原始 PR 作者 hnyls2002 合并时间 2026-04-01 07:33 文件变更 2 提交数 2 评论 2 代码增减 +85 / -3

执行摘要

新增 CompletionSampler,支持通过 /v1/completions API 进行非聊天模型评估。

根据 PR body,一些 CI 测试模型(如 DeepSeek-V3 INT8 量化检查点、基于 Llama-2 的 EAGLE 模型)通过 Completion API 在 GSM8K 上表现良好,但在 Chat API 下得分接近零。为了统一所有评估路径到 run_eval 以支持回归 CI,需要添加 Completion API 采样器。

建议工程团队精读此 PR,关注 CompletionSampler 的设计如何与现有 ChatCompletionSampler 集成,以及参数提取的优化方式。对于使用非聊天模型的开发者,此功能值得关注。

讨论亮点

没有 review 讨论,因此无讨论要点。

实现拆解

实现分为两个文件:

1) simple_eval_common.py 中添加了 CompletionSampler 类,使用 client.completions.create() 发送原始文本提示,并跟踪完成令牌数。
2) run_eval.py 中新增 --api 参数(选项 'chat' 或 'completion'),在 run_eval_once 函数中根据参数选择采样器。第二个提交提取了公共参数以避免重复代码。

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

关键符号

CompletionSampler.__init__ CompletionSampler.__call__ run_eval_once run_eval

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

评论区精华

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

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

风险与影响

风险包括:

1) API 兼容性:Completion API 可能不支持某些模型参数,如 reasoning_effort,在 CompletionSampler 中未处理。
2) 错误处理:CompletionSampler.__call__ 中对 BadRequestError 和其他异常的捕获可能导致返回空字符串,影响评估准确性。
3) 测试覆盖:PR body 中提到测试计划,但未提供具体测试代码,需确保新功能经过充分验证。

影响范围:

1) 用户:模型评估者和开发者现在可以使用 Completion API 进行非聊天评估,提高特定模型的评估准确性。
2) 系统:统一了评估路径,减少了维护多个评估脚本的需要。
3) 团队:简化 CI 回归测试,确保评估一致性。影响程度中等,主要限于评估工具。

API 兼容性风险 错误处理可能不完整 测试覆盖待验证

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论