血泪安装DCNv2 编译BasicSR框架下的DCNv2

源代码链接: GitHub - xinntao/EDVR: Winning Solution in NTIRE19 Challenges on Video Restoration and Enhancement (CVPR19 Workshops) - Video Restoration with Enhanced Deformable Convolutional Networks. EDVR has been merged into BasicSR and this repo is a mirror of BasicSR.

1、环境介绍

我开始以为环境版本很重要,网上教程、github分析都在提供各种python、torch等匹配,但是经过我这四天血泪调试,现在发现版本是什么不重要。不同版本互相匹配很重要。

这篇文写之前我终于在RTX3090 + python3.6 + torch1.7.1 及 RTX2080 + python3.6 + torch1.4.1均编译成功。

2、先说结论

1)pytorch 即使是相同的版本,下载时的cudatoolkit不同,也会导致最后算力不匹配。所以cudatoolkit需要和CUDA安装版匹配

2)如果要安装上述版本的cudatoolkit和pytorch,需要对python版本有要求,不然conda找不到下载源

3)不同pytorch版本支持的算力是不同的,需要匹配显卡硬件算力。

4)有服务器权限的话,可以CUDA版本不匹配。需要自己下载对应CUDA版本,然后软链接

5)算力不匹配的话,可以在~/.baschrc中限制显卡硬件算力(谨慎使用)。

以下是具体安装过程

3、安装细节

3.1 了解服务器环境信息

我是在服务器上编译的,所以没有ROOT权限,所以CUDA版本、显卡算力这两个是不能变的。所以讲述会有种倒着推的感觉。

首先需要先知道这两个的信息

3.1.1 查询CUDA安装版本

1)使用命令 

cat /usr/local/cuda/version.txt

2)直接进入CUDA安装地址

ls /usr/local

注意不是 nvidia-smi 出现的右上角那个CUDA版本

3.1.2 查询当前显卡算力

知道服务器安装的显卡型号后进入下网站查询。参考链接

CUDA GPU | NVIDIA Developer

 

有同学会问了,假如我连显卡型号都不知道呢?(比如我自己)

3.1.3 查询当前服务器安装显卡型号

1)如果已经安装了pytorch,可以使用命令行查询。参考链接

import torch
ng = torch.cuda.device_count()          # 得到显卡数目
# 输出每块卡信息
[torch.cuda.get_device_properties(i) for i in range(ng)]   

2)如果没有安装pytorch。参考链接

使用 lspci | grep -i nvidia 获得算力信息

 然后将数字  1b06  复制到网站中 

PCI devices

中查询。

3.2 安装pytorh 

此时已经知道CUDA安装版本和硬件算力。可以根据CUDA版本安装torch

比如CUDA==11.0, RTX3090 算力为 sm86

安装torch时命令为

conda install pytorch torchvision cudatoolkit==11.0

最重要的是先指定cudatoolkit和安装的相同

3.2.1 如果此时安装好了pytorch

查看此时pytorch版本支持的算力

torch.cuda.get_arch_list()   #当前版本pytorch支持的算力

如果算力能达到硬件算力,则匹配,否则不匹配。

比如我装pytorch==1.7.1 最大算力sm80,不能达到RTX3090需求,就不匹配。

不匹配有以下两种解决方法

1)限制显卡算力

进入~/.bashrc  

添加 export TORCH_CUDA_ARCH_LIST="8.0" 

这个8.0 就是限制的显卡算力

2)重装pytorch

可以在命令中添加pytorch环境

# 假如之前安装torch1.7.0仍达不到算力要求,就给torch添加条件
conda install pytorch>1.7 torchvision cudatoolkit==11.0

为啥我要现在才说给torch添加条件呢,因为一般条件太多conda找不到下载源。此时就要更换python版本,即下节。

3.2.2 如果找不到pytorch

那就要更换python版本。比如我python3.6.0只能装torch1.2.0 但是更换成python3.6.2时候可以安装torch1.4.0

3.3 为什么不用官方的

这时有同学要问了,官方不是指定了cudatoolkit和torch版本的各对应关系吗?为什么不用官方的呢? 其实你们可以试试,但我会遇到以下问题。

1)官网指定通道,下速度慢。

2)如果不同官网通道,可能找不到cudatoolkit对应版本。比如torch1.8就没有cudatoolkit==11.0的。

3)我下载得到的 torchxxx+cu110 在编译DCNv2时会出现gcc g++什么鬼的问题。

3.4 安装结束编译

此时cudatoolkit和 CUDA版本匹配, 同时安装的pytorch 能够支持硬件算力。环境已经基本没有问题。直接python setup.py develop 编译DCNv2就好。

4、问题总结

4.1 GeForce RTX 3090 with CUDA capability sm_86 is not compatible with the current PyTorch installation.

这个就是算力不匹配的问题,按照上文说的1)限制显卡算力或者2)安装更高版本的torch

文章 说按照官网下载对应的torch,这种本没错,但在编译DCNv2时不限制CUDA匹配就会导致4.2的错误。

4.2 error in modulated_deformable_im2col_cuda: invalid device function

这个就是cuda安装的版本和cudatoolkit不匹配的错误。

有权限的大佬可以安装对应版本CUDA,然后建立软链接。比如下载的toolkit==11.2,目前安装的CUDA是11.0,可以自己安装个CUDA==11.2,然后通过ln链接到/usr/local 中。

没权限的我这种只能瑟瑟发抖的按照楼上去下载匹配版本。

为什么4.1时候链接的那篇文章说下载好pytorch 就行,因为他们不用编译这个 deformable_im2col 什么鬼的啊。

还有 error in deformable_col2im: invalid argument · Issue #13 · chengdazhi/Deformable-Convolution-V2-PyTorch · GitHub

这篇鬼里讲的更换代码,和我下载时候本来就一样好嘛,还怎么改

还有error in modulated_deformable_im2col_cuda: invalid device function · Issue #35 · CharlesShang/DCNv2 · GitHub

这篇鬼里讲的降低版本到torch1.1就好了。其实就不是torc版本问题好嘛,是你恰好下载的torch1.1和需要的cudatoolkit版本匹配了。所以很多人再问为啥我torch什么版本的还不行。因为还是和cudatoolkit和cuda不匹配。

比如说cuda是11.0, 那你下载torch1.7.1+cuda10.2就是不行,torch1.7.1+cuda11.0就行。torch1.8.1+cuda10.2就是不行,torch1.8.1+cuda11.0就行。和torch版本无关的

4.3 import torch.../libtorch_python.so: undefined symbol: PySlice_Unpack

这就是3.3时候强装pytorch版本时候,和python不对应导致的。

4.4 NameError: name 'deform_conv_ext' is not defined (training EDVR)

差点忘了这个经常见得问题。这个就是没有编译DCNv2成功啊,亲,编译成功就好了。

4.5 ['ninja'. -v]

这个鬼问题开始两天经常遇见,很简单改成['ninja',--version] 就好。后来就没遇见了。

4.6  g++: error:   no such file or directory

这个鬼出现的很莫名其妙,也不说啥错。建议检查一下conda的python是不是真的conda安装时候的python。我的conda py=3.6.2 会莫名变成 3.8.4,需要 conda deactivate 后在进入就好啦。而且我用conda下载torch就没出现这种问题。 

好啦,以上就是我摸鱼4天的成果啦。

xdm祝安装顺利,有补充或者更精准的讲解请指教。

  • 7
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要在Ubuntu上安装DCNv2,您需要进行以下步骤: 1. 首先,确保您的系统已安装CUDA和cuDNN。根据引用和引用,您需要安装CUDA 10.0和cuDNN 7.1.3,或者根据引用,您需要安装CUDA 11.3和cuDNN 8.2.4。请根据您的系统和需求选择合适的版本。 2. 下载DCNv2编译好的文件。根据引用,您可以在Ubuntu 16.04下下载已编译好的文件。或者,根据引用,您可以按照超详细的指南在Ubuntu 20.04上编译DCNv2。 3. 如果您选择下载编译好的文件,您可以根据引用提供的链接进行下载。 4. 如果您选择在Ubuntu 20.04上编译DCNv2,请按照引用中提供的超详细指南进行安装。其中包括安装依赖项(如pytorch、torchvision、torchaudio和cudatoolkit)以及编译DCNv2的过程。 请注意,根据您的需求和系统配置,您可能需要根据引用和引用提供的具体信息进行适当调整。 总结起来,要在Ubuntu上安装DCNv2,您需要根据您的系统和需求选择合适版本的CUDA和cuDNN,并下载编译好的文件或按照超详细指南进行编译。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [DCNv2ubuntu16.04下编译好的](https://download.csdn.net/download/qq_35224449/13108923)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [超详细ubuntu20.04运行安装yolact++,编译DCNv2,pytorch=1.11.0 cudatoolkit=11.3](https://blog.csdn.net/u013454780/article/details/129970449)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值