Status of CPU-only builds?

在 macOS(arm64)等没有 CUDA 的环境中,通过 conda-forge 构建 xFormers v0.0.34 时触发。用户尝试编译 CPU-only 版本的 xFormers,但构建系统无条件要求 CUDA 头文件。

Status of CPU-only builds?

Status of CPU-only builds?

快速结论:当你尝试在无 CUDA 的环境(如 macOS arm64)中编译 xFormers 时,可能会遇到 fatal error: 'cuda.h' file not found。xFormers 的官方维护者已明确表示“不真正支持 CPU-only 构建”,但社区反馈此前(v0.0.33.post2 及更早)是能用的。该问题已在 commit 88dcc2ce379f699557714561c4a619cadc4c8ad5 中重新启用了 CPU-only 构建的支持,优先尝试使用该 commit 或更新版本。

问题场景

在 macOS(arm64)等没有 CUDA 的环境中,通过 conda-forge 构建 xFormers v0.0.34 时触发。用户尝试编译 CPU-only 版本的 xFormers,但构建系统无条件要求 CUDA 头文件。

报错原文

In file included from xformers/csrc/pt_stable_utils.cpp:5:
xformers/csrc/pt_stable_utils.h:12:10: fatal error: 'cuda.h' file not found
   12 | #include <cuda.h>
      |          ^~~~~~~~
1 error generated.

原因分析

可能原因:xFormers 从 v0.0.34 版本开始,构建脚本中强制了 CUDA 依赖,即使编译目标是无 CUDA 的 CPU-only 环境,也会尝试包含 cuda.h。官方维护者指出,xFormers 的核心价值在于其 CUDA 内核,CPU-only 构建并非官方支持的组合。但社区反馈在以前版本(如 0.0.33.post2)中 CPU-only 构建是可用的,且能提供部分不依赖 CUDA 的算子(如 cutlass 和 triton 相关算子)。

环境排查

  • 操作系统:macOS(如 arm64 / osx-64)或其他无 CUDA 的平台
  • xFormers 版本:至少从 v0.0.34 开始出现问题(conda-forge feedstock PR #66)
  • Python 版本:例如 3.11 或 3.14(参见报错中的 -c python3.11
  • PyTorch 版本:例如 2.10.0(参见报错后的可用性报告)
  • 确认环境中无 CUDA 工具链,且未设置 CUDA_HOME 等环境变量

解决步骤

  1. 确认你的 xFormers 版本是否等于或高于 v0.0.34。如果是,立即检查是否有修复版本的发布。
  2. 如果希望保留 CPU-only 构建,参考 Issue 中给出的修复 commit:88dcc2ce379f699557714561c4a619cadc4c8ad5(合并到主分支,位于 facebookresearch/xformers)。该 commit 重新启用了 CPU-only 构建。
  3. 如果你从源码构建,可以尝试直接 git checkout 到该 commit 或包含该 commit 之后的版本,然后重新构建。
  4. 如果你是 conda-forge 用户,可以关注 conda-forge/xformers-feedstock 中是否已更新到包含该修复的版本。如果没有,可以考虑临时使用 pip 从 GitHub 源码安装(基于上述 commit)。
  5. 若仍遇到问题,请确认编译时没有设置需要 CUDA 的环境变量(如 TORCH_CUDA_ARCH_LIST),并确保 torch.cuda.is_available() 返回 False。

验证方法

成功编译后,运行以下 Python 代码确认 xFormers 可以正常导入且无 CUDA 相关的报错:

import xformers
print(xformers.__version__)
# 如果无 CUDA,以下应返回不包含 CUDA 的错误消息
print(xformers._is_triton_available())

此外,可参考 Issue 中展示的可用性报告模板,运行 python -m xformers.info 查看算子可用性状态,确认没有出现 fatal error: 'cuda.h' file not found 的编译错误。

参考来源

facebookresearch/xformers #1373

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

celebrityanime
celebrityanime
文章: 7436

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注