Prhub

#50340 [CI][ROCm] Stabilize LLM GC teardown check

原始 PR 作者 AndreasKaratzas 合并时间 2026-07-30 18:42 文件变更 1 提交数 1 评论 0 代码增减 +9 / -0

执行摘要

稳定 ROCm 上 LLM GC 弱引用测试

ROCm 平台下 fixture 清理后 LLM 对象偶尔未被立即 GC,导致 weakref 断言间歇性失败。直接强制循环收集会掩盖测试本意检测的循环引用问题。

值得合并,方案简洁有效。重试条件精确,不会弱化测试的检测能力。

讨论亮点

无 review 讨论。

实现拆解

tests/basic_correctness/test_basic_correctness.pytest_vllm_gc_ed 函数上添加 @pytest.mark.flaky 装饰器,仅在 ROCm 条件下对 AssertionError 进行最多 2 次重试,每次间隔 5 秒。

文件 模块 状态 重要度
tests/basic_correctness/test_basic_correctness.py 测试 modified 4.01

关键符号

test_vllm_gc_ed

关键源码片段

tests/basic_correctness/test_basic_correctness.py test-coverage

为 `test_vllm_gc_ed` 添加 pytest flaky 重试,仅针对 ROCm 平台的 AssertionError。

# ROCm 可以偶尔在 fixture 清理后保留对象。仅重试该断言;
# 在此处收集循环垃圾会掩盖此测试旨在捕获的循环引用。
@pytest.mark.flaky(
    reruns=2,
    reruns_delay=5,
    only_rerun="AssertionError", # 只对断言错误重试
    condition=current_platform.is_rocm(), # 仅 ROCm 平台生效
)
def test_vllm_gc_ed():
    """Verify vllm instance is GC'ed when it is deleted"""
    llm = LLM("hmellor/tiny-random-LlamaForCausalLM")
    weak_llm = weakref.ref(llm)
    del llm
    # 如果有任何对 vllm 的循环引用,此断言会失败
    assert weak_llm() is None

评论区精华

没有提炼出高价值讨论线程

当前评论区没有形成足够清晰的争议点或结论,后续有更多讨论时会体现在这里。

风险与影响

风险极低:仅修改测试逻辑,不影响生产代码。重试条件精确限定在 ROCm 平台和断言错误,不会掩盖其他类型的失败。

影响范围仅限于 ROCm CI 中 test_vllm_gc_ed 测试的稳定性,减少因偶发 GC 延迟导致的误报。

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论