Prhub

#53641 [AMD][BugFix] Add gpu_sync_allowed to ROCm AITER FA backend

原始 PR 作者 rasmith 合并时间 2026-08-27 09:23 文件变更 1 提交数 2 评论 7 代码增减 +9 / -7

执行摘要

为 ROCm AITER FA 后端添加 gpu_sync_allowed 上下文。

PR#43107 添加了 GPU<->CPU 传输检查,并在 Dockerfile 中通过 VLLM_GPU_SYNC_CHECK=error 启用了该检查。当运行单元测试时,遇到了 RuntimeError: GPU<->CPU sync detected - avoid it or wrap with gpu_sync_allowed()。检查 ROCM AITER FA 后端时发现,尽管 PR#43107 在许多其他文件中添加了 gpu_sync_allowed 上下文,但此处并未使用,因此添加了它。测试现已通过。

值得快速查看,以理解 gpu_sync_allowed 的用法及其对 ROCm 后端的影响。该 PR 虽小但重要,因为它是紧急修复。

讨论亮点

reviewer njhill 批准了该 PR,并评论说:“这是可以接受的,可以抑制由于阻塞的 d2h 导致的错误,但该阻塞操作可能会损害性能,我们可能想单独考虑如何避免它。”其余讨论是关于 CI 和合并的。

实现拆解

  1. 导入 gpu_sync_allowed:在 vllm/v1/attention/backends/rocm_aiter_fa.py 中,从 vllm.utils.gpu_sync_debug 导入 gpu_sync_allowed。
  2. 包裹 CPU 拷贝:在 build 方法中,将 seq_lens 从设备到主机的拷贝(common_attn_metadata.seq_lens.cpu())包裹在 with gpu_sync_allowed(): 上下文中,以明确允许因调试目的而进行的阻塞式主机同步。
  3. 测试验证:运行了相关的测试 tests/entrypoints/pooling/scoring/test_cross_encoder_online_vision.py::test_score_api_queries_str_documents_str,该测试现在通过(4 passed, 16 warnings)。没有添加新的测试文件。
文件 模块 状态 重要度
vllm/v1/attention/backends/rocm_aiter_fa.py 注意力后端 modified 5.43

关键符号

build

关键源码片段

vllm/v1/attention/backends/rocm_aiter_fa.py dependency-wiring

这是唯一修改的文件,添加了 gpu_sync_allowed 上下文来修复 CPU 同步错误。

# vllm/v1/attention/backends/rocm_aiter_fa.py
# 新增导入 gpu_sync_allowed
from vllm.utils.gpu_sync_debug import gpu_sync_allowed
​
# 在 build 方法中,将 seq_lens 的 CPU 拷贝包裹在 gpu_sync_allowed 上下文中,
# 以明确允许因调试目的而进行的阻塞式设备到主机同步。
with gpu_sync_allowed():
    # 仅在存在 prefill 或 extend 时才将 seq_lens 复制到 CPU,以避免阻塞式设备到主机传输。
    seq_lens = (
        common_attn_metadata.seq_lens.cpu()
        if num_prefills > 0 or num_extends > 0
        else None
    )

评论区精华

gpu_sync_allowed 的使用 question

njhill 评论说该改动可以抑制错误,但阻塞操作可能损害性能,建议单独考虑如何避免。

结论:批准了该 PR,认为这是可以接受的修复,但建议后续考虑性能影响。 · 已解决

风险与影响

该改动仅将 gpu_sync_allowed 上下文包裹在 seq_lens 的 CPU 拷贝周围,主要影响 ROCm 平台上的 AITER FA 后端。它不会改变逻辑,但可能会掩盖潜在的 GPU 同步问题。njhill 指出,阻塞式 d2h 拷贝可能损害性能,但该 PR 未解决此问题。

对用户的影响是修复了在启用 VLLM_GPU_SYNC_CHECK 时,ROCm 上使用 AITER FA 后端的模型可能遇到的崩溃。对系统的影响很小,仅涉及一个文件。对团队而言,它解决了 CI 失败的问题,但需要后续跟踪以避免性能问题。

缺少测试覆盖 潜在性能影响

关联 Issue

未识别关联 Issue

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

完整报告

参与讨论