Prhub

#54823 [CI] Remove MRV2-specific tests

原始 PR 作者 njhill 合并时间 2026-09-02 05:15 文件变更 3 提交数 2 评论 2 代码增减 +11 / -172

执行摘要

移除冗余的 MRV2 专属 CI 测试,将相关测试整合至现有分组。

PR body 明确指出:'These are redundant now that MRV2 is the default for all tests.'。核心动机是 V2 模型运行器已成为默认选项,因此任何强制启用 V2 (VLLM_USE_V2_MODEL_RUNNER=1) 的测试分组和相关环境变量设置都失去了独立存在的意义,需要进行清理和整合。

这是一个值得精读的清理性 PR。它清晰地展示了项目在架构演进(V2 runner 成为默认)后,如何对 CI 基础设施和测试策略进行适应性调整。关键的设计决策在于:通过删除专属配置文件和修改 skipif 逻辑的默认值来体现“默认”语义,并通过测试迁移确保覆盖无损。对于关注 CI 效率、测试策略或 vLLM 内部演进的工程师有参考价值。

讨论亮点

本 PR 的讨论较少。自动化审查机器人(claude[bot])指出因 PR 来自 fork 而禁用了自动审查,需维护者手动触发。另一位审查者 sfeng33 给予了批准,但未留下具体评论。核心变更(删除冗余配置和调整测试默认值)逻辑清晰,旨在响应 MRV2 成为默认的架构演进,因此未引发显著争议。

实现拆解

  1. 删除冗余 CI 配置:完全删除 .buildkite/test_areas/model_runner_v2.yaml 文件。该文件定义了多个独立的 CI 测试组(如 Core、Examples、Distributed、Pipeline Parallelism、Spec Decode),每个都在执行命令前设置 export VLLM_USE_V2_MODEL_RUNNER=1。删除此文件直接移除了这些冗余的测试任务。
  2. 调整测试默认行为:修改 tests/v1/distributed/test_pp_dp_v2.py 中的 pytestmark 跳过条件。将 os.environ.get("VLLM_USE_V2_MODEL_RUNNER", "0") != "1" 改为 os.environ.get("VLLM_USE_V2_MODEL_RUNNER", "1") == "0"。这使得测试在 V2 为默认值时自动运行,只有当显式禁用 V2 时才跳过,符合当前默认策略。
  3. 整合测试到现有分组:在 .buildkite/test_areas/distributed.yaml 中进行两处关键调整:
    a. 在 :nvidia: (L4) Distributed DP Basic 测试组中,新增了 tests/v1/e2e/general/test_sharded_sampling.py 和 tests/v1/e2e/spec_decode/test_sharded_sampling.py 的 source_file_dependencies 和执行命令(pytest -v -s v1/e2e/general/test_sharded_sampling.py 等),并将超时时间从 35 分钟增加到 45 分钟以容纳新增测试。
    b. 在 :nvidia: (L4) Pipeline + Context Parallelism 测试组中,新增了 tests/v1/distributed/test_pp_dp_v2.py 的依赖和执行命令(pytest -v -s v1/distributed/test_pp_dp_v2.py)。
    这确保了原本在 model_runner_v2.yaml 中运行的测试不会丢失。
文件 模块 状态 重要度
.buildkite/test_areas/model_runner_v2.yaml CI 配置 removed 6.89
tests/v1/distributed/test_pp_dp_v2.py 并行测试 modified 4.39
.buildkite/test_areas/distributed.yaml CI 配置 modified 4.32

关键源码片段

tests/v1/distributed/test_pp_dp_v2.py test-coverage

修改了测试的默认跳过条件,将行为从“需要显式启用 V2”改为“默认运行,除非显式禁用”,是本次变更在测试代码层面的关键体现。

# 变更前:只有显式设置为 '1' 才运行,否则跳过
pytestmark = [
    pytest.mark.skipif(
        os.environ.get("VLLM_USE_V2_MODEL_RUNNER", "0") != "1",
        reason="VLLM_USE_V2_MODEL_RUNNER=1 required",
    ),
    # ...
]
​
# 变更后:默认运行,只有显式设置为 '0' 才跳过
pytestmark = [
    pytest.mark.skipif(
        os.environ.get("VLLM_USE_V2_MODEL_RUNNER", "1") == "0",
        reason="V2 model runner disabled via VLLM_USE_V2_MODEL_RUNNER=0",
    ),
    # ...
]

此变更使测试行为与“V2 是默认值”的前提保持一致。

评论区精华

MRV2 测试策略演进 设计

PR 核心讨论点在于当 MRV2 成为默认后,如何清理不再需要的 CI 配置。自动化审查提示需手动触发,无技术争议。

结论:变更被批准(sfeng33 APPROVED),确认删除专属配置文件并迁移测试的方案。 · 已解决

风险与影响

  1. 测试覆盖调整风险:整合测试时可能遗漏某些场景或依赖关系。但作者在第二个提交中明确将“未覆盖的测试移动到其他组”,降低了此风险。
  2. 环境变量默认值变更:test_pp_dp_v2.py 中跳过条件的变更(从“需要显式启用”变为“显式禁用才跳过”)可能影响其他依赖此逻辑的测试或配置,但此影响范围有限,仅限于该测试文件自身。
  3. CI 流水线稳定性:删除配置文件和修改 YAML 可能会因语法或引用错误导致 CI 失败,但变更内容相对简单,风险较低。

用户影响:无直接影响。系统影响:简化了 CI 配置,减少了测试任务数量,可能略微加快 CI 总运行时间。团队影响:降低了维护成本,统一了 V2 作为默认运行器的测试策略。开发者不再需要在 MRV2 专属测试和通用测试之间做区分。

测试覆盖率调整 环境变量默认值改变

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论