执行摘要
- 一句话:A100 启用 compile 模式 batch invariance 测试
- 推荐动作:建议精读 PR#27842 和关联 Issue#27433 以了解 batch invariance 的整体设计。该 PR 本身是功能演进的里程碑,值得关注后续 SM80 上 compile 模式的实际效果。
功能与动机
详见 Issue #27433,这是 batch invariance 功能系列工作的一部分。之前 SM80 上强制使用 eager 模式,现需支持 compile 模式并加入 CI 保护。
实现拆解
- 测试文件调整:在
tests/v1/determinism/test_batch_invariance.py 中移除所有测试函数的 enforce_eager=IS_DEVICE_CAPABILITY_BELOW_90 参数,使 SM80 设备可使用 compile 模式。
- CI 配置新增:在
.buildkite/test_areas/misc.yaml 中新增 Batch Invariance (A100) 测试步骤,使用 a100 设备运行 batch invariance 测试。
关键文件:
tests/v1/determinism/test_batch_invariance.py(模块 测试;类别 test;类型 test-coverage): 移除 enforce_eager 参数,允许 SM80 使用 compile 模式执行 batch invariance 测试。
.buildkite/test_areas/misc.yaml(模块 CI;类别 config;类型 configuration): 新增 A100 CI 步骤,确保 batch invariance 在 compile 模式下持续被验证。
关键符号:未识别
关键源码片段
tests/v1/determinism/test_batch_invariance.py
移除 enforce_eager 参数,允许 SM80 使用 compile 模式执行 batch invariance 测试。
# 变更前:所有 LLM 初始化都包含 enforce_eager=IS_DEVICE_CAPABILITY_BELOW_90
# 变更后:移除该参数,让 SM80 设备可以使用 compile 模式
# 删除了以下导入行和全局变量
# from utils import is_device_capability_below_90
# IS_DEVICE_CAPABILITY_BELOW_90 = is_device_capability_below_90()
# 以 test_logprobs_bitwise_batch_invariance_bs1_vs_bsN 为例,移除前:
llm = LLM(
model=TEST_MODEL,
tensor_parallel_size=tp_size,
max_num_seqs=128,
max_model_len=8192,
dtype="auto",
gpu_memory_utilization=0.9,
enforce_eager=IS_DEVICE_CAPABILITY_BELOW_90, # 已移除
attention_config={"backend": backend},
)
# 类似改动应用于所有测试函数中的 LLM 调用
评论区精华
gemini-code-assist[bot] 建议在 A100 步骤中也运行 test_rms_norm_batch_invariant.py 以保持一致性,但 yewentao256 回应称该测试对结构不敏感,未采纳。最终 reviewer sfeng33 批准了 PR。
- A100 步骤是否添加 test_rms_norm_batch_invariant.py (testing): 作者 yewentao256 认为该测试对结构不敏感,未添加。
风险与影响
- 风险:移除
enforce_eager 后,SM80 上的 batch invariance 测试默认使用 compile 模式,可能暴露编译相关的非确定性或性能退化。但因变更仅影响测试,且已在 A100 上验证通过,风险可控。
- 影响:仅影响测试和 CI 配置,无用户侧影响。对开发团队而言,新增了 A100 CI 步骤,确保 batch invariance 在 compile 模式下仍能通过测试。
- 风险标记:测试覆盖调整, 核心路径变更
关联脉络
- PR #27842 Adds Batch invariant tests to CI: 该 PR 是此 PR 的前序工作,为 CI 添加了 batch invariance 测试(H100 和 B200)。
- PR #25603 [Feature] Batch Invariant Support: 实现 batch invariance 基本框架的 PR,此 PR 在其基础上扩展 SM80 支持。
参与讨论