Prhub

#49326 [Build] Bump vllm-flash-attn to C++20-compatible commit for torch-nightly

原始 PR 作者 atalman 合并时间 2026-07-22 21:51 文件变更 1 提交数 5 评论 7 代码增减 +1 / -1

执行摘要

升级 flash-attn 到 C++20,适配 torch-nightly

近期 PyTorch 在 ATen/ATen.h 中加入了硬性检查:#error C++20 or later compatible compiler is required to use ATen。vLLM 自身已使用 C++20 构建,但 vendored flash-attn 子项目仍固定为 C++17,导致 _vllm_fa2_C 在 torch-nightly 下编译失败。具体报错见关联 Issue #168。

该 PR 是典型的依赖兼容性修复,逻辑简单但必要。建议团队关注 torch 版本演进,定期在 CI 中测试 nightly 环境。

讨论亮点

PR 作者 @atalman 在评论中详细记录了 CI 调试过程:最初构建 #79120 在 torch 2.11 上无问题,但 torch-nightly 构建 #79180 因 C++20 报错;随后将 pin 指向修复后的 commit,构建 #79201 通过 Docker 构建步骤。最终 CI #79230 对比 daily main 确认没有新增失败。

实现拆解

  1. 定位问题:确认 vllm-flash-attn 子项目的 CMakeLists.txtCMAKE_CXX_STANDARD 设为 17,与 PyTorch 所需的 C++20 冲突。
  2. 上游修复:在 vllm-project/flash-attention 仓库中提 PR #168,将 CMakeLists.txtCMAKE_CXX_STANDARD 从 17 改为 20,已合并。
  3. 本仓库变更:修改 cmake/external_projects/vllm_flash_attn.cmake,将 GIT_TAG 从旧 commit 更新为包含 C++20 修复的新 commit ed4b7342bc8f0489dd9b649d5288867e35fc6a32
  4. 验证:在 torch-nightly CI 中确认 Docker 构建步骤通过,flash-attn 后端正确加载。
文件 模块 状态 重要度
cmake/external_projects/vllm_flash_attn.cmake 构建脚本 modified 3.29

关键源码片段

cmake/external_projects/vllm_flash_attn.cmake core-logic

唯一变更文件,通过修改 GIT_TAG 引入上游 C++20 修复。

# 文件 : cmake/external_projects/vllm_flash_attn.cmake
# 关键变更:将 GIT_TAG 指向 flash-attention#168 的合并提交FetchContent_Declare(
  vllm-flash-attn
  GIT_REPOSITORY https://github.com/vllm-project/flash-attention.git
  # 变更前 : 168920233059c48de6199e2cda74003b2ce3d199 (C++17)
  # 变更后 : ed4b7342bc8f0489dd9b649d5288867e35fc6a32 (C++20)
  GIT_TAG ed4b7342bc8f0489dd9b649d5288867e35fc6a32
  GIT_PROGRESS TRUE
  BINARY_DIR ${CMAKE_BINARY_DIR}/vllm-flash-attn
)

评论区精华

CI 验证与错误根因确认 other

@atalman 在评论中报告了多次 CI 运行的结果,最初在 torch 2.11 上无问题,但在 torch-nightly 上因 C++20 报错,随后通过更新 pin 修复。

结论:torch-nightly 的 Docker 构建通过,且与 main 对比无新增失败。 · 已解决

风险与影响

低风险。仅变更了 flash-attn 子项目的 git tag,构建标准提升到 C++20 已在 vLLM 主项目中使用,且 flash-attn 源码兼容 C++17/20。但需注意如果未来 flash-attn 依赖了 C++14 的第三方库,可能引入兼容性问题。不过当前无此迹象。

影响范围仅限于 torch-nightly 用户。对于使用稳定版 torch 的用户,构建不受影响。修复后 vLLM 可以正常在 torch-nightly 上编译和运行,确保了对前沿 PyTorch 的兼容性。

缺少测试覆盖

关联 Issue

#168 Require C++20 to match PyTorch ATen headers

完整报告

参与讨论