xformers pip 安装

最近复现的一些仓库用 xformers 的很多,xformers 安装的版本需要对应 CUDA 版本 和 pytorch 版本。

而且在 arm 的 aarch64 下安装所有和 CUDA 相关的库都不是非常方便,这里记录一下。

参考:
https://github.com/facebookresearch/xformers
https://blog.csdn.net/x1131230123/article/details/139231686


确定版本:

首先要确定版本,xFormers 高度绑定 pytorch 和 CUDA 版本,基本上一一对应。

如果仓库的 requirements.txt 给了,那就最好,只要保证其它库版本一致。

如果 pytorch 有改动,那么要求找一下 xFormers 对应的版本。

比如打开这个:
https://github.com/facebookresearch/xformers/tree/v0.0.28

选择tag,在 README.md 可以看到

二分查找你的 pytorch 需要对应什么版本的 xformers,比如 pytorch==2.1.0 对应 0.0.22.post7

安装:

如果 x86,直接 pip 安装即可,记得带上 cuda 版本:

pip3 install -U xformers==0.0.28 --index-url https://download.pytorch.org/whl/cu118

如果 arm,或者 x86 下找不到可用的预编译的特定 cuda 和 pytorch 版本的包,

就需要从源码安装:

pip install ninja
pip install -v -U git+https://github.com/facebookresearch/xformers.git@v0.0.28#egg=xformers

@ 后面的填 tag 。

验证安装:

python -m xformers.info

官方使用文档:
https://facebookresearch.github.io/xformers/

常见报错:

RuntimeError: Error compiling objects for extension:

参考:
https://github.com/facebookresearch/xformers/issues/748

解决方法:引入环境变量:

export TORCH_CUDA_ARCH_LIST="8.0 8.6 9.0+PTX"
export MAX_JOBS=4

MAX_JOBS=4 是因为安装时可能会内存不够,实测 =4 时内存占用在 40 GB 左右
还不够可以试一下设成 1,但是会非常慢,应该要好几个小时

TORCH_CDA_ARCH_LIST 设为实际的算力,下面的指令可以看计算能力:

python -c "import torch; print(torch.cuda.get_device_capability())"
# sample output : (8, 0)

那么就是:

export TORCH_CUDA_ARCH_LIST=8.0

也可能需要指定 gcc 的版本,我在某个 issue 上看到 10.3 的 gcc 比较好,尝试了一下 11 以上会直接报错说不支持:

module unload compilers/gcc
module load compilers/gcc/10.3.1
posted @ 2024-10-31 23:51  Cold_Chair  阅读(981)  评论(0编辑  收藏  举报