执行摘要
- 一句话:修复批量不变性测试中因使用两个引擎导致测试范围超出预期的问题。
- 推荐动作:该PR值得快速浏览,以了解测试设计中的常见陷阱(如使用多个独立组件测试不变性可能导致范围溢出)。对于工程师,关注点在于如何正确设计批量不变性测试:应使用同一组件在不同配置下运行,而非创建多个实例。无需深入阅读源码,但可参考变更学习测试重构技巧。
功能与动机
根据PR body的描述,原测试使用两个引擎进行对比是“out of the domain with batch invariance”(超出批量不变性范畴)。这意味着原测试设计存在逻辑缺陷,无法准确验证同一引擎在不同批次大小下的输出一致性,因此需要修复以正确测试批量不变性。
实现拆解
- 重构测试策略:修改
tests/v1/determinism/test_batch_invariance.py 中 test_v1_generation_is_deterministic_across_batch_sizes_with_needle 函数的测试策略。将原策略“创建两个引擎(bs=1 vs bs=N)”改为“创建单个引擎(配置为bs=N)”,并更新函数文档字符串以反映新策略。
- 简化引擎管理:删除原代码中用于管理两个引擎的变量
llm_bs1 和 llm_bsN,改为使用单个变量 llm。移除创建第二个引擎的代码段,并调整基准生成和混合批次生成逻辑,使它们都使用同一个 llm 实例。
- 清理资源管理:更新
finally 块中的引擎关闭逻辑,从分别关闭两个引擎改为只关闭单个引擎,确保测试后正确释放GPU/VRAM资源。
- 测试配套:本次变更仅涉及测试文件,没有修改源码主路径、配置或部署脚本,属于纯测试逻辑修复。
关键文件:
tests/v1/determinism/test_batch_invariance.py(模块 批量不变性测试;类别 test;类型 test-coverage;符号 test_v1_generation_is_deterministic_across_batch_sizes_with_needle): 这是唯一变更的文件,包含批量不变性测试的核心逻辑修复,直接影响测试的准确性和设计。
关键符号:test_v1_generation_is_deterministic_across_batch_sizes_with_needle
评论区精华
Review 中讨论较少:
风险与影响
关联脉络
参与讨论