执行摘要
- 一句话:为评估数据集下载添加网络超时,避免CI因网络问题无限挂起。
- 推荐动作:该PR变更直接,适合快速浏览以了解CI优化措施。关注点:超时值30秒的合理性,以及是否需要在其他类似场景中推广此模式。
功能与动机
根据PR body描述,pandas.read_csv(url)默认无超时设置,当网络到Azure Blob Storage缓慢或不可达时,CI作业会无限挂起。具体案例包括:https://github.com/sgl-project/sglang/actions/runs/23846257201/job/69514908983(MMLU下载挂起15分钟)和https://github.com/sgl-project/sglang/actions/runs/23846257201/job/69579769522(挂起11分钟后按文件超时)。PR #21800修复了simple_eval_common.py和simple_eval_mgsm.py,但遗漏了pandas.read_csv()路径,本PR旨在补全这些遗漏。
实现拆解
实现分为两部分:1) 在python/sglang/test/目录下的simple_eval_mmlu.py、simple_eval_gpqa.py、simple_eval_math.py中,修改pandas.read_csv()调用,通过检查文件名是否包含"://"来区分本地文件和远程URL,对远程URL添加storage_options={"timeout": 30}参数;2) 在python/sglang/test/simple_eval_common.py和sgl-model-gateway/e2e_test/infra/simple_eval_common.py中,将requests.get()调用的超时从120秒调整为30秒,以保持一致性。
关键文件:
python/sglang/test/simple_eval_mmlu.py(模块 test): 修改了MMLU评估数据集的下载逻辑,添加超时以避免CI挂起,是核心变更文件之一。
python/sglang/test/simple_eval_gpqa.py(模块 test): 修改了GPQA评估数据集的下载逻辑,添加超时以避免CI挂起,是核心变更文件之一。
python/sglang/test/simple_eval_math.py(模块 test): 修改了MATH评估数据集的下载逻辑,添加超时以避免CI挂起,是核心变更文件之一。
sgl-model-gateway/e2e_test/infra/simple_eval_common.py(模块 model-gateway): 调整了模型网关中数据集下载的超时设置,从无超时改为30秒,确保一致性。
关键符号:pandas.read_csv, download_dataset
评论区精华
无review评论,但PR body中提到了与PR #21800的关联,表明这是对先前修复的补充。提交信息显示作者将超时从120秒调整为30秒,但未提供调整理由的讨论。
风险与影响
- 风险:技术风险较低:1) 超时设置可能过短(30秒),在正常网络波动下导致不必要的下载失败,影响CI稳定性;2) 修改涉及多个文件,但逻辑简单,回归风险小;3) 对本地文件路径(不含"://")的pandas.read_csv()调用保持不变,兼容性良好。
- 影响:影响范围限于CI测试环境:1) 对用户无直接影响,仅影响内部测试流程;2) 系统层面,避免了CI无限挂起,提高了资源利用率和测试可靠性;3) 团队层面,减少了因网络问题导致的CI阻塞,提升了开发效率。
- 风险标记:超时设置可能过短
关联脉络
- PR #21800 [Misc] Add network timeout to eval dataset downloads: 本PR是#21800的补充,修复了#21800中遗漏的pandas.read_csv()路径,两者共同解决CI因网络问题挂起的问题。
参与讨论