# PR #42456 完整报告

- 仓库：`vllm-project/vllm`
- 标题：[Feature] Support compile mode for batch invariance on SM80
- 合并时间：2026-05-13 23:02
- 原文链接：http://prhub.com.cn/vllm-project/vllm/pull/42456

---

# 执行摘要

- 一句话：A100 启用 compile 模式 batch invariance 测试
- 推荐动作：建议精读 PR#27842 和关联 Issue#27433 以了解 batch invariance 的整体设计。该 PR 本身是功能演进的里程碑，值得关注后续 SM80 上 compile 模式的实际效果。

# 功能与动机

详见 Issue #27433，这是 batch invariance 功能系列工作的一部分。之前 SM80 上强制使用 eager 模式，现需支持 compile 模式并加入 CI 保护。

# 实现拆解

1. **测试文件调整**：在 `tests/v1/determinism/test_batch_invariance.py` 中移除所有测试函数的 `enforce_eager=IS_DEVICE_CAPABILITY_BELOW_90` 参数，使 SM80 设备可使用 compile 模式。
2. **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 测试。

```python
# 变更前：所有 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 支持。