Prhub

#39966 [CI/Build] Improve stability of CPU tests

原始 PR 作者 bigPYJ1151 合并时间 2026-04-16 21:50 文件变更 4 提交数 2 评论 0 代码增减 +8 / -6

执行摘要

优化 CPU 测试稳定性,调整测试标记、编译配置和 CI 并行度。

根据PR描述,目的是修复CPU测试中因舍入误差和慢速I/O主机导致的偶发性失败(flaky failures)。

该PR主要涉及测试和CI配置调整,对于关注CPU平台测试稳定性和CI流水线优化的工程师值得快速浏览。重点关注 vllm/platforms/cpu.py 中编译配置的变更,理解 ir_enable_torch_wrap 设置对CPU推理性能的潜在影响。

讨论亮点

reviewer gemini-code-assist[bot] 总结了PR的变更点(增加并行度、添加GPT-2到舍入误差敏感列表、禁用ir_enable_torch_wrap),并表示无反馈。reviewer jikunshang 直接批准,未提出具体讨论。因此,本次PR没有实质性的技术争议或深度设计权衡讨论。

实现拆解

  1. 调整测试模型标记与舍入误差处理:在 tests/models/language/generation/test_common.py 中,将 TitanML/tiny-mixtral 模型的 pytest.mark.cpu_model 标记移除,并将对舍入误差敏感模型的检查从 TitanML/tiny-mixtral 改为 openai-community/gpt2。这旨在避免未训练模型在CPU上因bfloat16舍入误差导致的测试不稳定。
  2. 修改CPU平台编译配置:在 vllm/platforms/cpu.py 的 check_and_update_config 方法中,新增 compilation_config.ir_enable_torch_wrap = False 设置,以优化编译行为,可能减少与Torch包装相关的开销或错误。
  3. 增加CI测试并行度与超时:在 .buildkite/hardware_tests/cpu.yaml 中,将“CPU-Language Generation and Pooling Model Tests”步骤的超时从30分钟延长至40分钟,并将“CPU-Multi-Modal Model Tests”的并行度从2提升至3,以应对慢速I/O环境并加速测试执行。
  4. 扩展CPU模型测试覆盖:在 tests/models/language/generation/test_granite.py 中,为 test_models 函数添加 @pytest.mark.cpu_model 标记,确保该测试在CPU测试套件中被执行。
文件 模块 状态 重要度
tests/models/language/generation/test_common.py 通用测试 modified 4.98
vllm/platforms/cpu.py 平台配置 modified 5.15
.buildkite/hardware_tests/cpu.yaml CI 配置 modified 3.99
tests/models/language/generation/test_granite.py 模型测试 modified 3.32

关键符号

test_models check_and_update_config

关键源码片段

vllm/platforms/cpu.py core-logic

CPU 平台的核心配置逻辑文件,新增编译配置项以优化测试环境下的行为。

def check_and_update_config(cls, vllm_config: VllmConfig) -> None:
    # ... 其他配置逻辑 ...
    if vllm_config.compilation_config is not None:
        # 为 CPU CI 测试设置编译后端
        if os.environ.get("VLLM_CPU_CI_ENV", "0") != "0":
            backend = "eager"
        else:
            backend = "inductor"
        compilation_config.mode = CompilationMode.DYNAMO_TRACE_ONCE
        compilation_config.backend = backend
        compilation_config.inductor_compile_config.update({
            "dce": True,
            "size_asserts": False,
            "nan_asserts": False,
            "epilogue_fusion": True,
            "cpp.dynamic_threads": True,
        })
        compilation_config.ir_enable_torch_wrap = False # 新增:禁用 Torch 包装以优化 CI 环境
    # ... 后续配置 ...

评论区精华

PR 变更总结 other

gemini-code-assist[bot] 总结了 PR 的变更点,包括增加并行度、添加 GPT-2 到舍入误差敏感列表、禁用 ir_enable_torch_wrap。

结论:无实质性反馈,仅作为总结性评论。 · 已解决

风险与影响

  1. 回归风险:将 TitanML/tiny-mixtral 从 cpu_model 标记中移除,可能导致该模型在CPU测试套件中不再被覆盖,若模型本身存在CPU相关问题可能无法及时发现。
  2. 性能风险:compilation_config.ir_enable_torch_wrap = False 可能影响编译优化效果,但根据上下文,这可能是为了在CI环境中减少编译开销或避免特定错误。
  3. 兼容性风险:新增的环境变量设置(如 VLLM_CPU_CI_ENV 的使用)依赖于内部约定,若其他测试或组件误用可能导致行为不一致。
  1. 对用户影响:无直接影响,变更主要针对内部测试和CI流程。
  2. 对系统影响:提升CPU测试的稳定性和执行效率,减少偶发性失败,有助于提高开发体验和代码质量。
  3. 对团队影响:CI测试更可靠,可能减少因测试失败导致的重复运行和调试时间。
测试覆盖调整 编译配置变更

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论