环境踩坑日记1
配置环境踩坑日记(1)
本期的主角是Efficient-Segmentation-Networks: Lightweight models for real-time semantic segmentationon PyTorch这个仓库,我想使用这个仓库的 SegNet 在 CamVid 上跑的结果,于是想要复现这个仓库,下面分析这个仓库的 README 写的问题
前情提要:原仓库说环境配置步骤为:
Python版本的问题:
原仓库最开头的就说了 Python 版本:
但是一开始我轻易地相信了这个仓库,没有看 Pytorch 版本与 Python 版本间的依赖,就随手装了一个3.8版本的 Python(装 Pytorch 一定要查版本对应!Python & torch,torchvision),但是装好之后运行 pip3 install -r requirements.txt
这个命令后报错:
1 |
|
查了官方文档后可以发现版本对应:
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
然后终于可以正常地跑代码了!!!全程总共让我配了六个小时的环境!!!(鄙视这个仓库,要不是我非要用这个代码我早就不鸟他了,可能是因为这个仓库太老了没有维护,才导致我配得这么麻烦)
版本对应的官方文档:
- Python 与 torch, torchvision:pytorch/vision: Datasets, Transforms and Models specific to Computer Vision
- cuda 与 torch:Previous PyTorch Versions | PyTorch
- nvidia显卡与cuda:CUDA Toolkit Release Notes