Prhub

#49739 [ROCm][CI] Wait for ROCm VRAM to settle between compiled and eager LL…

原始 PR 作者 aarushjain29 合并时间 2026-07-25 06:19 文件变更 1 提交数 1 评论 0 代码增减 +2 / -0

执行摘要

修复 ROCm 编译测试中 GPU 内存未稳定问题

ROCm CI 构建 11128 在运行 test_dynamic_shapes_compilation[False-True-0-backed-Qwen/Qwen2-7B-Instruct] 时失败,原因是编译 Qwen2-7B 运行后,同一进程中启动 eager LLM 时在 V2 model runner 中发生 GPU 故障。gcempty_cache() 不足以完全释放 ROCm 状态。

值得合并。这是一个典型的 ROCm 特定显存稳定问题修复,类似模式在 ROCm 测试中常见。可推广到其他类似场景。

讨论亮点

该 PR 无 review 讨论(只有 bot 自动评论和批准)。核心问题为 ROCm 上编译模型卸载后显存未完全释放,导致 eager 模型初始化故障。

实现拆解

  1. 导入辅助函数:在 tests/compile/test_dynamic_shapes_compilation.py 的导入部分添加 from tests.utils import wait_for_rocm_memory_to_settle
  2. 在模型切换间插入等待:在 del modelgc.collect()torch.accelerator.empty_cache()torch.accelerator.synchronize() 之后,eager_model = LLM(...) 之前调用 wait_for_rocm_memory_to_settle(),确保 ROCm 显存状态稳定后再初始化第二个模型。
文件 模块 状态 重要度
tests/compile/test_dynamic_shapes_compilation.py 测试 modified 3.82

关键源码片段

tests/compile/test_dynamic_shapes_compilation.py test-coverage

唯一修改的文件,添加了 `wait_for_rocm_memory_to_settle` 导入和调用,修复 ROCm CI 测试失败。

# tests/compile/test_dynamic_shapes_compilation.py ( 片段 )import gc
import tempfile
from contextlib import contextmanagerimport pytest
import torchfrom tests.models.utils import check_logprobs_close
from tests.utils import wait_for_rocm_memory_to_settle # 新增导入
from vllm import LLM, SamplingParams
...
​
    # 编译模型运行后
    del model
    gc.collect()
    torch.accelerator.empty_cache()
    torch.accelerator.synchronize()
    wait_for_rocm_memory_to_settle() # 等待 ROCm 显存稳定,避免 eager 初始化时 GPU 故障
​
    eager_model = LLM(model=model_name, enforce_eager=True, max_model_len=1024)

评论区精华

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

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

风险与影响

风险极低:仅修改测试文件,添加 2 行代码,且函数已在 tests/utils 中定义,调用语义明确。不会影响产品代码或非 ROCm 平台。

该修复仅影响 ROCm CI 中的 test_dynamic_shapes_compilation 测试,消除一个已知的 flaky 失败。对系统功能、性能、兼容性无影响。

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论