本文主要是对FlowNet2 (PyTorch v0.3.0)的环境搭建进行了记录,该项目的地址为https://github.com/vt-vl-lab/flownet2.pytorch
1. 最终可运行环境
操作系统 | Ubuntu16.04LTS(18也行) |
显卡 | NVIDIA 2060 |
CUDA | 9.0 |
Python | 3.6.13 |
torch | 0.4.0 |
torchvision | 0.2.2 |
opencv-python | 3.4.2.16 |
注意事项:
1.配置过程中一定要保持gcc与g++的版本一致性,我的运行环境中版本均为5.4.0
2.运行install.sh时要给予一定的文件访问权限(嫌麻烦可以使用sudo)
3.使用Anaconda的情况下,记得修改install.sh文件,将python环境与cuda环境指定好
4.最好使用Linux系统,提高适配可能性
2. 踩坑记录
2.1 Windows11(失败)
在Installation步骤通过Git Bash终端运行install.sh时,出现以下报错:
cffi.VerificationError: CompileError: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.16.27023\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2
网上的各种解决办法对我来说都不太适用。主要包括:
- 重装不同版本的Visual Studio。我尝试了VS2015、2017、2019,但均未有效。
- 安装VS的一些工具库。安装了但无效。
- ......
最后,考虑到该项目发布者的运行环境建立在Ubuntu系统上,从而开始配置Ubuntu系统。
2.2 Ubuntu20.04——虚拟机(失败)
使用Vmware安装了Ubuntu20.04镜像,进行了一整天的配置。
考虑到需要保存项目运行后所得光流文件,专门配置了虚拟机与主机的共享文件夹
具体配置方法可以参考:实现虚拟机和主机之间的文件传输_虚拟机传输文件_Fa·Bryant的博客-CSDN博客
然而,在运行该项目时出现报错。网上搜索后发现:虚拟机不能使用CUDA和CUDNN!!!
痛哭~~
既然如此,那就开始装双系统吧!
2.3 Ubuntu20.04——双系统(失败)
这个环节是踩坑踩得最狠的,大致花费了7、8天时间。
此时我使用的是3050显卡
(1)装机指南:
Ubuntu/Windows双系统安装巨详细——全面解决各种问题(疑难杂症),有手就行_安装ubuntu关闭bitlocker_HNU跃鹿战队的博客-CSDN博客
Ubuntu 双系统安装流程_ubuntu双系统安装_地球被支点撬走啦的博客-CSDN博客
(2)安装一些软件,过程中遇到以下报错:
E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系
解决办法:在软件更新里勾选允许更新;先安装报错信息中指出的其他软件包
(3)RuntimeError: CUDNN_STATUS_EXECUTION_FAILED
许多人博客都说这条报错是因为CUDA与CUDNN不适配导致的。~ 虽然我也不知道我安装的cuda9.0.176与cudnn 7.0.5为什么会不适配。尝试了各种cuda9.0对应的cudnn,均失败,遂放弃根治的想法。
解决办法:添加一行代码,禁用cudnn,这一办法会降低GPU计算速度。
torch.backends.cudnn.enabled = False
(4)解决完(3)的问题后,出现新的报错:
RuntimeError: cublas runtime error : the GPU program failed to execute at /pytorch/torch/lib/THC/THCBlas.cu:246
两个可能导致错误的原因:
- CUDA Toolkit, CUDA Driver版本不匹配。前者就是在终端运行nvcc -V显示的cuda版本,后者是使用nvidia-smi命令显示的cuda版本。一般来说,CUDA Driver的版本可以高于CUDA Toolkit,但实际上只有当这两者完全一致时,才会最好。
- 30系列的显卡可能不适配cuda11以下的版本。
因此,我尝试着升级了多种cuda版本,并安装与之对应的CUDNN。这里附上多版本CUDA切换方法与CUDNN卸载方法:
安装多版本 cuda ,多版本之间切换_cuda 切换版本-CSDN博客
Ubuntu——卸载cuda、cudnn的方法_ubuntu卸载cuda-CSDN博客
- cuda10.0、cuda10.1:报错不变
- cuda11.0:运行Install.sh时出现新的问题,推测该项目与CUDA11以上版本不兼容
无果,于是开始降级NVIDIA显卡驱动。
跟着某篇博客,一步步进行着,突然Ubuntu启动不了了。
经多番尝试后发现,显卡驱动卸载后,由于主板不带核显,图形化界面自然显示不了。
于是开始跟着别人的博客安装驱动。好吧,问题又来了
查询可用驱动时不显示结果,如下博客操作后
输入ubuntu-drivers devices 不返回任何结果同时安装显卡驱动-CSDN博客
网络不太行,要下载20小时~~~~
于是,通过其他电脑在NVIDIA官网上下载了一个cuda9.0对应的驱动,通过移动盘安装。
Ubuntu加载移动硬盘_ubuntu读取移动硬盘-CSDN博客
结果发现可能由于Ubuntu20.04系统内核比较新,兼容不了太老的显卡驱动,遂放弃。
再一想到该项目是在Ubuntu14的环境下发布的,决定使用另一台2060显卡所在主机安装Ubuntu16进行尝试。
2.4 Ubuntu16.04LTS——双系统(Win!!)
接着就是配置了最终可运行环境,依旧遇到:
RuntimeError: CUDNN_STATUS_EXECUTION_FAILED
禁用CUDNN后,不再遇到问题。
(其实貌似20系列显卡也对CUDA10以下版本不太兼容,最多9.2,但在我的电脑上cuda9.0能顺利跑通)