Prhub

#21931 [CI] Migrate mgsm_en eval to gsm8k to remove openaipublic dependency

原始 PR 作者 dougyster 合并时间 2026-04-08 07:29 文件变更 7 提交数 7 评论 1 代码增减 +82 / -77

执行摘要

迁移 CI 测试数据集从 MGSM-EN 到 GSM8K,移除外部依赖并调整阈值。

PR body中指出,多个CI测试运行时从https://openaipublic.blob.core.windows.net/下载数据集,这是一个由OpenAI托管的外部Azure blob,导致CI依赖脆弱——如果端点慢、限速或不可用,测试会因无关原因失败。MGSM-EN数据集下载12个TSV文件且无缓存,而GSM8K使用download_and_cache_file缓存到/tmp/test.jsonl,首次获取后离线运行,旨在消除CI不稳定因素。

建议CI维护者、测试工程师和关注模型准确性的开发者精读,重点关注阈值校准策略和依赖管理决策;对一般工程师,了解变更背景即可,无需深入代码细节,但可参考如何优化CI稳定性。

讨论亮点

review中仅有一个bot评论,由gemini-code-assist[bot]发表,确认变更内容无误,表示'没有反馈可提供',表明变更被简单接受,没有实质性讨论、争议或未解决疑虑。

实现拆解

实现分为两部分:一是将8个测试文件中的eval_name="mgsm_en"统一替换为eval_name="gsm8k",涉及分布式、量化、AMD准确性和调度器测试;二是基于GSM8K(5-shot/CoT)基准重新校准阈值,将所有阈值设置为基准值的95%以考虑硬件差异,并修正了如Mistral-7B、Llama-3.1-70B等模型的错误阈值;同时调整测试参数,如移除硬编码num_examples以使用默认值。

文件 模块 状态 重要度
test/registered/amd/accuracy/mi30x/test_gsm8k_eval_amd.py testing modified 5.0
test/registered/eval/test_text_models_gsm8k_eval.py testing modified 5.0
test/registered/quant/test_quantization.py testing modified 4.0
test/registered/piecewise_cuda_graph/test_piecewise_cuda_graph_support_1_gpu.py testing modified 4.0

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

关键符号

test_gsm8k test_gsm8k_all_models test_1_gsm8k_has_prefill_delayer test_2_gsm8k_no_prefill_delayer

评论区精华

变更确认 other

reviewer gemini-code-assist[bot] 评论确认变更内容无误,无进一步反馈。

结论:变更被接受,无需修改。 · 已解决

风险与影响

风险包括:阈值调整基于GSM8K基准,但校准可能不准确,导致测试假阳性(过于宽松,遗漏回归)或假阴性(过于严格,误报失败);GSM8K数据集虽然缓存,但GitHub可用性也可能影响CI稳定性;迁移后测试覆盖范围是否与MGSM-EN一致存在不确定性,可能遗漏某些模型行为或边缘案例。具体文件如test/registered/amd/accuracy/mi30x/test_gsm8k_eval_amd.py中的阈值变化需谨慎验证。

对终端用户无直接影响,主要影响CI流程和团队开发体验;系统层面,移除外部依赖提高CI稳定性、可重复性和离线能力,减少因网络问题导致的失败;团队层面,开发者将受益于更可靠的测试套件,加速代码合并流程,但需适应新阈值可能带来的测试结果变化。

阈值校准风险 外部依赖移除 测试覆盖一致性

关联 Issue

未识别关联 Issue

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

完整报告

执行摘要

  • 一句话:迁移CI测试数据集从MGSM-EN到GSM8K,移除外部依赖并调整阈值。
  • 推荐动作:建议CI维护者、测试工程师和关注模型准确性的开发者精读,重点关注阈值校准策略和依赖管理决策;对一般工程师,了解变更背景即可,无需深入代码细节,但可参考如何优化CI稳定性。

功能与动机

PR body中指出,多个CI测试运行时从https://openaipublic.blob.core.windows.net/下载数据集,这是一个由OpenAI托管的外部Azure blob,导致CI依赖脆弱——如果端点慢、限速或不可用,测试会因无关原因失败。MGSM-EN数据集下载12个TSV文件且无缓存,而GSM8K使用download_and_cache_file缓存到/tmp/test.jsonl,首次获取后离线运行,旨在消除CI不稳定因素。

实现拆解

实现分为两部分:一是将8个测试文件中的eval_name="mgsm_en"统一替换为eval_name="gsm8k",涉及分布式、量化、AMD准确性和调度器测试;二是基于GSM8K(5-shot/CoT)基准重新校准阈值,将所有阈值设置为基准值的95%以考虑硬件差异,并修正了如Mistral-7B、Llama-3.1-70B等模型的错误阈值;同时调整测试参数,如移除硬编码num_examples以使用默认值。

关键文件:

  • test/registered/amd/accuracy/mi30x/test_gsm8k_eval_amd.py(模块 testing): 阈值调整最全面,涉及AMD GPU多模型测试,涵盖FP8和FP16变体,是迁移的核心文件之一。
  • test/registered/eval/test_text_models_gsm8k_eval.py(模块 testing): 通用文本模型GSM8K评估文件,阈值更新影响广泛,包括多个主流模型,是CI测试套件的关键部分。
  • test/registered/quant/test_quantization.py(模块 testing): 量化模型测试文件,阈值重新校准以匹配GSM8K格式,影响AWQ和GPTQ等量化方法的准确性验证。
  • test/registered/piecewise_cuda_graph/test_piecewise_cuda_graph_support_1_gpu.py(模块 testing): CUDA图测试文件,调整参数和阈值以适配GSM8K,用于验证piecewise CUDA graph不影响模型准确性。

关键符号:test_gsm8k, test_gsm8k_all_models, test_1_gsm8k_has_prefill_delayer, test_2_gsm8k_no_prefill_delayer

评论区精华

review中仅有一个bot评论,由gemini-code-assist[bot]发表,确认变更内容无误,表示'没有反馈可提供',表明变更被简单接受,没有实质性讨论、争议或未解决疑虑。

  • 变更确认 (other): 变更被接受,无需修改。

风险与影响

  • 风险:风险包括:阈值调整基于GSM8K基准,但校准可能不准确,导致测试假阳性(过于宽松,遗漏回归)或假阴性(过于严格,误报失败);GSM8K数据集虽然缓存,但GitHub可用性也可能影响CI稳定性;迁移后测试覆盖范围是否与MGSM-EN一致存在不确定性,可能遗漏某些模型行为或边缘案例。具体文件如test/registered/amd/accuracy/mi30x/test_gsm8k_eval_amd.py中的阈值变化需谨慎验证。
  • 影响:对终端用户无直接影响,主要影响CI流程和团队开发体验;系统层面,移除外部依赖提高CI稳定性、可重复性和离线能力,减少因网络问题导致的失败;团队层面,开发者将受益于更可靠的测试套件,加速代码合并流程,但需适应新阈值可能带来的测试结果变化。
  • 风险标记:阈值校准风险, 外部依赖移除, 测试覆盖一致性

关联脉络

  • PR #22288 [CI] Update nightly test models for H200/B200: 同为CI测试更新,涉及模型和依赖调整,反映CI基础设施的持续优化趋势。
  • PR #22188 [AMD] Fix test_kimi_k25_mxfp4.py : stage-c-test-large-8-gpu-amd-mi35x (linux-mi35x-gpu-8, 1): 修复AMD测试中的权重加载问题,与本PR的AMD准确性测试相关,共同提升AMD平台CI稳定性。
  • PR #22282 [tiny] migrate /get_server_info; print accept length in accuracy tests: 迁移废弃端点并在精度测试中打印信息,类似本PR的测试基础设施更新,显示团队对CI细节的改进关注。

参与讨论