Prhub

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

vllm-project/vllm · 作者 bigPYJ1151 · 合并时间 2026-04-16 21:50

分析状态 已生成
文件变更 4提交数 2 · 评论 0
代码增减 +8 / -6
cpu ci test v1

执行摘要

优化 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.pycheck_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
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环境
    # ... 后续配置 ...

关键符号

test_models check_and_update_config

评论区精华

PR 变更总结 other

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

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

风险与影响

  1. 回归风险:将 TitanML/tiny-mixtralcpu_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 链接,后续同步到相关引用后会出现在这里。

完整报告

执行摘要

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

功能与动机

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

实现拆解

  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.pycheck_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(模块 通用测试;类别 test;类型 test-coverage;符号 test_models): 核心测试文件,调整了模型标记和舍入误差处理逻辑,直接影响CPU测试覆盖范围和稳定性。
  • vllm/platforms/cpu.py(模块 平台配置;类别 source;类型 core-logic;符号 check_and_update_config): CPU平台的核心配置逻辑文件,新增编译配置项以优化测试环境下的行为。
  • .buildkite/hardware_tests/cpu.yaml(模块 CI配置;类别 infra;类型 configuration): CI流水线配置文件,调整测试超时和并行度以提升测试稳定性和效率。
  • tests/models/language/generation/test_granite.py(模块 模型测试;类别 test;类型 test-coverage;符号 test_models): 测试文件,新增cpu_model标记以扩展CPU测试覆盖。

关键符号:test_models, check_and_update_config

关键源码片段

vllm/platforms/cpu.py

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环境
    # ... 后续配置 ...

评论区精华

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

  • PR变更总结 (other): 无实质性反馈,仅作为总结性评论。

风险与影响

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

关联脉络

  • PR #39910 [CPU][IBM Z][Dockefile][Docs] Fix s390x builds for torch 2.11 and update docs for s390x: 同样涉及CPU平台的构建和测试修复,属于CPU相关基础设施改进。
  • PR #37469 [perf][cpu] Accelerate BF16 GELU with LUT impl on Arm CPUs: 涉及CPU性能优化,与本PR中处理CPU舍入误差和测试稳定性的主题相关。

参与讨论