Prhub

#21156 [Fix][Eval] Keep `--dataset-path` scoped to `longbench_v2`

sgl-project/sglang · 作者 mmangkad · 合并时间 2026-03-24 17:25

分析状态 已生成
文件变更 1提交数 2 · 评论 3
代码增减 +2 / -2
bugfix test ci

执行摘要

修复 gpqa 评估因错误使用 --dataset-path 导致的文件未找到错误。

PR body 指出:'--dataset-path appears to be meant for longbench_v2 only, since it is defined under the LongBench-v2-specific arguments and defaults to THUDM/LongBench-v2. After #20469, gpqa started reading args.dataset_path, which can make it try to open THUDM/LongBench-v2 as a local CSV path.' 因此,需要修复此 bug 并保持参数作用域正确,避免评估脚本运行失败。

该 PR 值得快速浏览以了解参数作用域和 bug 修复的简单实现,但设计决策直白,无需深入分析。建议关注点:是否应在后续 PR 中恢复 gpqa 的自定义路径能力,或添加如 --gpqa-dataset-path 的专用参数,以避免功能回归。

讨论亮点

review 中,gemini-code-assist[bot] 评论:'This change fixes a bug where the gpqa evaluation would incorrectly use the default dataset for longbench_v2 when no path was specified. However, it also removes the ability to specify a custom dataset path for gpqa via the --dataset-path argument. This is a functional regression for users who were correctly using this feature.' 并建议添加专用参数或检查默认值。Fridge003 批准了 PR,表明可能接受当前修复或认为风险可管理,但讨论未解决自定义路径功能的缺失。

实现拆解

python/sglang/test/run_eval.pyrun_eval 函数中,修改两个关键点:

  1. 对于 gpqa 评估,将 filename = getattr(args, "dataset_path", None) or ("https://openaipublic.blob.core.windows.net/simple-evals/gpqa_diamond.csv") 改为硬编码 URL,移除了对 dataset_path 参数的依赖。
  2. 对于 longbench_v2 评估,将 data_source = getattr(args, "dataset_path", None) 改为 data_source = args.dataset_path,确保参数被正确使用且作用域限定。
文件 模块 状态 重要度
python/sglang/test/run_eval.py 测试 / 评估 modified 5.0

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

关键符号

run_eval

评论区精华

功能回归与参数作用域设计 设计

gemini-code-assist[bot] 指出修复 bug 的同时移除了 gpqa 自定义数据集路径的能力,这是一个功能回归,建议更稳健的解决方案如添加专用参数。

结论:PR 被批准合并,但评论中的建议未在本次变更中采纳,功能回归问题未解决。 · unresolved

风险与影响

主要风险是功能回归:gpqa 评估无法再通过 --dataset-path 指定自定义数据集路径,可能影响需要使用本地或不同数据集的用户,导致测试灵活性下降。性能和安全风险低,未涉及核心逻辑变更。兼容性方面,恢复了之前的行为,但与 #20469 引入的变更不兼容,且可能引发用户混淆。

对用户:修复了 gpqa 评估的 FileNotFoundError,确保默认配置下能正常运行;但自定义数据集用户将无法使用此功能,需要手动修改代码或等待后续改进。对系统:仅影响测试评估脚本 run_eval.py,不涉及核心模型或推理逻辑,系统稳定性无显著变化。对团队:提示了参数作用域设计的重要性,未来需考虑更清晰的参数分离以避免类似问题。

功能回归 参数作用域混淆

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

本 PR 修复了 run_eval.pygpqa 评估因错误使用 --dataset-path 参数导致的 FileNotFoundError。通过恢复硬编码数据集 URL 并明确参数仅作用于 longbench_v2,解决了运行错误,但移除了 gpqa 的自定义路径能力,建议关注后续是否需恢复此功能以避免功能回归。

功能与动机

PR 旨在修复由 #20469 引入的 bug。--dataset-path 参数原设计仅用于 longbench_v2 评估(默认值为 THUDM/LongBench-v2),但变更后 gpqa 意外读取该参数,导致尝试打开默认数据集作为本地 CSV 路径而失败。如 PR body 所述:"--dataset-path appears to be meant for longbench_v2 only",修复后恢复 gpqa 的先前行为,保持参数作用域正确。

实现拆解

变更集中在 python/sglang/test/run_eval.py 文件的 run_eval 函数中:

变更点 原代码 新代码 影响
gpqa 评估 filename = getattr(args, "dataset_path", None) or ("https://...") filename = ("https://...") 移除对 dataset_path 的依赖,硬编码数据集 URL
longbench_v2 评估 data_source = getattr(args, "dataset_path", None) data_source = args.dataset_path 确保参数被直接使用,作用域限定

此实现简单直接,但牺牲了 gpqa 的配置灵活性。

评论区精华

review 中,gemini-code-assist[bot] 指出关键问题:

"This change fixes a bug ... However, it also removes the ability to specify a custom dataset path for gpqa ... This is a functional regression."

并建议长期解决方案(如添加 --gpqa-dataset-path 参数)或临时修复(检查默认值)。Fridge003 批准了 PR,表明可能接受当前方案,但讨论未解决回归问题,揭示了参数作用域设计的重要性。

风险与影响

  • 风险:功能回归——gpqa 评估无法指定自定义数据集路径,影响测试灵活性;参数作用域混淆可能引发未来类似 bug。
  • 影响:用户层面,默认配置下 gpqa 评估能正常运行,但自定义路径用户需寻找替代方案;系统层面,仅测试脚本变更,核心功能不受影响;团队层面,提示需优化参数设计以避免交叉污染。

关联脉络

从同仓库历史 PR 看,本 PR 与 #21276(回滚测试脚本变更)和 #21195(修复测试 bug)类似,均涉及测试评估模块的 bugfix 主题。虽然 PR body 提及 #20469,但未在提供的近期列表中出现,推测为早期变更。整体上,这反映了测试脚本维护中的常见问题:参数作用域管理需谨慎,以避免意外行为。建议未来 PR 考虑更模块化的参数设计,如为不同评估类型添加专用参数。

参与讨论