环境踩坑日记1

配置环境踩坑日记(1)

​ 本期的主角是Efficient-Segmentation-Networks: Lightweight models for real-time semantic segmentationon PyTorch这个仓库,我想使用这个仓库的 SegNet 在 CamVid 上跑的结果,于是想要复现这个仓库,下面分析这个仓库的 README 写的问题

​ 前情提要:原仓库说环境配置步骤为:

installation

Python版本的问题:

​ 原仓库最开头的就说了 Python 版本:

Python Version

​ 但是一开始我轻易地相信了这个仓库,没有看 Pytorch 版本与 Python 版本间的依赖,就随手装了一个3.8版本的 Python(装 Pytorch 一定要查版本对应!Python & torch,torchvision),但是装好之后运行 pip3 install -r requirements.txt这个命令后报错:

1
ERROR: No matching distribution found for torch==1.1.0

查了官方文档后可以发现版本对应:

torch torchvision Python
1.13 0.14 >=3.7.2, <=3.10
1.12 0.13 >=3.7, <=3.10
1.11 0.12 >=3.7, <=3.10
1.10 0.11 >=3.6, <=3.9
1.9 0.10 >=3.6, <=3.9
1.8 0.9 >=3.6, <=3.9
1.7 0.8 >=3.6, <=3.9
1.6 0.7 >=3.6, <=3.8
1.5 0.6 >=3.5, <=3.8
1.4 0.5 ==2.7, >=3.5, <=3.8
1.3 0.4.2 / 0.4.3 ==2.7, >=3.5, <=3.7
1.2 0.4.1 ==2.7, >=3.5, <=3.7
1.1 0.3 ==2.7, >=3.5, <=3.7
<=1.0 0.2 ==2.7, >=3.5, <=3.7

​ 坑的离谱!如果安装 Pytorch 为 1.1.0 的版本不能用 3.8 的 Python,我又把原来的环境卸了重新安了 3.7 版本的,这样可以正常运行pip3 install -r requirements.txt这条命令,但是环境还远远没算配完

Pytorch版本太低的Bug:

​ 我的服务器使用的显卡是3090,Pytorch 在版本低的情况下在3090显卡会出现一个 bug:代码中使用.cuda()语句会使整个进程卡死!!!,详情情况参考:3090显卡服务器使用torch中的.cuda()语句会卡死问题解决方法_.cuda() 卡住-CSDN博客

​ 于是我按照他的解决办法提升了 Pytorch 的版本(原仓库生成 Pytorch 版本1.1以上都可以运行),安装了 pytorch1.7.1 版本,虽然解决了 .cuda()语句卡死的问题,但是报错又引出了下面一个问题:

算力不匹配报错

显卡架构与cuda算力不匹配报错

​ 一旦出现 RuntimeError: CUDA error: no kernel image is available for execution on the device 这样的报错,就代表出现了 cuda 或 pytorch 与显卡算力不区配的问题,参考pytorch 报错 RuntimeError: CUDA error: no kernel image is available for execution on the device-CSDN博客

​ 于是我去寻找3090显卡支持什么版本的 Pytorch,看到了这篇文章:ubuntu中安装pytorch版本与 RTX3090(4090) 对应关系_rtx4090安装什么pytroch-CSDN博客,照着他一样装了 1.8.1 的 torch 和对应的 torchvision

​ 然后终于可以正常地跑代码了!!!全程总共让我配了六个小时的环境!!!(鄙视这个仓库,要不是我非要用这个代码我早就不鸟他了,可能是因为这个仓库太老了没有维护,才导致我配得这么麻烦)

版本对应的官方文档: