Prhub

#39411 [CI/Build] Fix memory cleanup in MM test

原始 PR 作者 DarkLight1337 合并时间 2026-04-09 23:50 文件变更 2 提交数 2 评论 1 代码增减 +3 / -2

执行摘要

修复多模态内存泄漏测试中的进程清理问题,避免 CI 失败。

PR body中引用了CI失败链接(https://buildkite.com/vllm/ci/builds/60525/steps/canvas?jid=019d71f1-593e-4e3c-bbb7-9a9c25f2e273),表明目的是修复CI失败。虽然没有详细说明根本原因,但从review评论中可推断,问题与内存泄漏测试的进程清理机制缺陷有关。

该PR值得快速浏览以了解CI修复策略,但无需深入代码细节。重点关注review中提到的进程清理缺陷,建议团队后续评估是否修复@create_new_process_for_each_test的实现。

讨论亮点

review中只有gemini-code-assist[bot]的一条评论,指出关键问题:@create_new_process_for_each_test装饰器的实现存在缺陷,os.setpgrp()在父进程(pytest worker)中调用,导致进程组清理可能意外终止worker。评论建议将os.setpgrp()移到子进程并移除父进程的信号处理。但PR作者未回复此评论,PR仍被合并,表明问题可能被暂时规避而非根本解决。

实现拆解

实现方案分为两个部分:

  1. 修改CI配置文件(.buildkite/test_areas/models_multimodal.yaml),在pytest命令中增加--ignore选项,排除tests/models/multimodal/generation/test_memory_leak.py文件,避免该测试在常规测试套件中运行。
  2. 修改内存泄漏测试文件(tests/models/multimodal/generation/test_memory_leak.py),将测试函数名从test_qwen3_vl_no_memory_leak重命名为test_no_memory_leak,使其更通用。
文件 模块 状态 重要度
.buildkite/test_areas/models_multimodal.yaml CI/ 测试配置 modified 5.0
tests/models/multimodal/generation/test_memory_leak.py 测试 / 多模态 modified 6.0

关键符号

test_no_memory_leak @create_new_process_for_each_test

分析完成后,这里会展示 LLM 生成的相对完整源码片段和详细注释。

评论区精华

@create_new_process_for_each_test 装饰器的进程清理缺陷 正确性

gemini-code-assist[bot] 指出装饰器实现中 os.setpgrp() 在父进程调用,可能导致 pytest worker 被意外终止,设计脆弱。

结论:未解决,PR 被合并但评论未获回复,问题被暂时规避。 · 待处理

风险与影响

风险包括:

  1. 测试覆盖风险:通过--ignore排除内存泄漏测试,可能降低多模态模型内存泄漏的检测能力。
  2. 进程清理缺陷:review中提到的装饰器实现问题未被修复,可能导致未来测试不稳定或CI失败重现。
  3. 兼容性风险:重命名测试函数可能影响其他依赖该函数名的脚本或工具。

对用户无直接影响,主要影响CI系统和开发团队:

  1. CI稳定性:修复当前CI失败,提升构建成功率。
  2. 测试策略:调整多模态测试运行方式,内存泄漏测试可能以独立或不同方式执行。
  3. 团队效率:减少因CI失败导致的开发中断,但潜在进程清理问题可能在未来引发类似问题。
测试覆盖降低 进程清理缺陷未修复

关联 Issue

#19 Use FP32 for log probabilities

完整报告

参与讨论