MultiScaleDeformableAttention 编译问题汇总

在安装 detectron2、mask2former中的 MSDeformAttn 模块遇到问题。无法使用 sh make.sh 通过编译。这里遇到了一些解决方法,可以都尝试一下。

来源
detectron2: Installation — detectron2 0.6 documentation
mask2former: GitHub - facebookresearch/Mask2Former: Code release for "Masked-attention Mask Transformer for Universal Image Segmentation"
MSDeformAttn (Deformable-DETR): GitHub - fundamentalvision/Deformable-DETR: Deformable DETR: Deformable Transformers for End-to-End Object Detection.

可以先尝试确定的部分,如果不行,再尝试不确定的部分。

一:查看 gcc g++ 版本是否一致(不确定)

可以使用
gcc -v
g++ -v 

来查看对应的版本。网络上有说可能编译不通过是因为版本不对齐,如果安装相同的版本可能可以通过编译。

二:gcc g++ 版本太新的问题(我是这么解决的

我原先使用的 gcc g++ 版本是 11,过于新了,我安装了 gcc g++ 9 的版本,能够通过编译
错误提示:unsupported GNU version

注意,安装好之后,需要设置环境变量:
export CC=/usr/bin/gcc-9
export CXX=/usr/bin/g++-9

三:是否有设置 CUDA_HOME

我使用 conda 安装的 cudatoolkit,我设置如下
export CUDA_HOME=<YOUR_CONDA_ROOT>/env/<YOUR_ENV_NAME>/pkgs/cuda-toolkit

四:是否安装了 cudatoolkit-dev (不确定)

有说法称需要使用对应版本的 nvcc,可以使用 dev 版本的来进行安装

五:是否有将 cudatoolkit 的路径加入到 PATH

export PATH=<YOUR_CONDA_ROOT>/env/<YOUR_ENV_NAME>/pkgs/cuda-toolkit/bin:$PATH

六:没有把 cc1plus 所在的位置加入 PATH

先找到对应的 cc1plus 的位置,我的位置在 /usr/bin/gcc/x86_64-linux-gnu/11 (11 是版本号,版本太大了,见)

错误提示:error trying to exec 'cc1plus': execvp: No such file or directory

解决:export PATH=/usr/lib/gcc/x86_64-linux-gnu/11:$PATH 

七:设置环境变量(不确定)

有说需要设置 torch cuda arch list 为 8.0,存疑

export TORCH_CUDA_ARCH_LIST="8.0"

八:需要先安装 torch 才能安装 MSDefAttn

最好使用 conda 进行安装,我是这样子的:
conda install conda install pytorch=1.9.0 -c pytorch

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值