mmcv指定版本在win10/ubuntu下配置过程

前言:
-我要跑的代码要求mmcv版本在1.1.4-1.3.0之间,但是由于mmcv开发者最开始没打算支持win,win版本的mmcv只有1.1.3-1.1.5之间,(下载链接:https://download.openmmlab.com/mmcv/dist/index.html) 最近又放出了1.4.0往后window的版本,(下载链接:https://download.openmmlab.com/mmcv/dist/cu113/torch1.10.0/index.html)想用原作者版本1.2.7废了我好大功夫。想下载直接去搜索带win的即可,要对应当前环境中的cuda和torch版本号。本文包括我在四台电脑上跑了将近一周的辛酸泪(segformer代码),记录一下,配环境真是麻烦了。

总结要点:
1.mmcv和mmcv-full的区别,一个是精简版一个是完整版,不要同时装俩两个,会无法识别。
2.安装mmcv的时候要在其对应torch和cuda版本的链接下进行下载,如果重新下载记得别使用cache。
3.win下安装指定版本,需要对torch中部分配置进行修改。

**

ubuntu配置过程(RTX3090/A10+Linux 4.15.0)+python38

**

  1. 安装好torch和torchvision,以及对应的cuda环境,我习惯用自带cuda的版本
pip install torch==1.8.1+cu111  torchvision==0.9.1+cu111  -f https://download.pytorch.org/whl/torch_stable.html
  1. 安装对应torc和cuda版本的mmcv,集体的对应表格见https://github.com/open-mmlab/mmcv#installation,如下图所示,没有的就是不支持。
    mmcv指定版本在win10/ubuntu下配置过程_第1张图片
    安装命令如下:
pip install mmcv-full==1.x.x  -f https://download.openmmlab.com/mmcv/dist/{cu_version}/{torch_version}/index.html

1.x.x表示你想要的版本号,cu_version目前环境中使用的cuda版本号,torch_version为你目前环境中的torch版本。例如我用的pytorch1.8和cuda11.1,想要用1.3.0的版本,使用下方命令。
–no-cache-dir为了防止使用下载好的缓存,可能是其他cuda或torch版本mmcv安装包,导致重装还是失败。

pip --no-cache-dir install mmcv-full==1.1.5 -f https://download.openmmlab.com/mmcv/dist/cu111/torch1.7.1/index.html

一定要对应好cuda和torch版本,否则即使import不会报错,在后期的运行成中也会出现一些维度不同的问题。我当时在pred_label = pred_label[mask] 这行报错IndexError:too many indices for array:array is 2-dimensional, but 3 were indexed…反正对上号以后没错了。

**

windows配置过程(RTX2080tai/GTX 950M+win10)

**
由于开发者目前官方放出的win版本mmcv只有1.1.3-1.1.5和1.4.0往后的版本(下载链链接见最上方),如果要使用这些版本就直接下载下来,然后本地pip轮子即可,步骤要求与linx相同。
想要使用指定版本的mmcv需要先去git上扒拉出来历史版本,然后本地编译。只看编译过程的跳过本段
-------------------------------------------如何获得历史版本的mmcv----------------------------------------
a. 先进入开源mmcv的git地址(https://github.com/open-mmlab/mmcv),下图方法进入修改记录。
mmcv指定版本在win10/ubuntu下配置过程_第2张图片 b. 找到需要的版本的提交,并进入其完整版本。mmcv指定版本在win10/ubuntu下配置过程_第3张图片
c.即可保存,保存的压缩包名称是mmcv+遗传序号,应该是历史版本的记录方式,解压后改成mmcv即可。
mmcv指定版本在win10/ubuntu下配置过程_第4张图片
--------------------------------------------如何windows本地编译-----------------------------------------

  1. 首先要下载安装vs的基本部件,我使用的是vs2019,部分过程参考这位大神https://www.jianshu.com/p/2ab7771e533b
    1.1下载安装visual studio,安装基本部件Visual C++生成工具部分就可以,如下所示。(我使用的2019)
    mmcv指定版本在win10/ubuntu下配置过程_第5张图片

否则会报错error: Microsoft Visual C++ 14.0 or greater is required
1.2用everything搜出来cl.exe并添加cl.exe到环境变量(其实这步骤不知道有没有用但是我照做了…)
mmcv指定版本在win10/ubuntu下配置过程_第6张图片
我的路径是自己的路径是
D:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\bin\Hostx86\x64
mmcv指定版本在win10/ubuntu下配置过程_第7张图片
win+R输入cmd出现如下界面表示安装成功
mmcv指定版本在win10/ubuntu下配置过程_第8张图片
2. 对本地的torch部分文件进行修改,参考这位大神
https://blog.csdn.net/qq_41860138/article/details/110430590
Way1:运行脚本,找到你的conda或者virtualenv环境下的Lib/site-packages文件夹,修改地址并直接运行脚本

#!/bin/bash

SITE=/mnt/c/Users/thomas.jungblut/AppData/Local/Programs/Python/Python37/Lib/site-packages
sed -i.bak -e 's/CONSTEXPR_EXCEPT_WIN_CUDA/const/g' "${SITE}/torch/include/torch/csrc/jit/api/module.h"
sed -i.bak -e 's/return \*(this->value)/return \*((type\*)this->value)/g' "${SITE}/torch/include/pybind11/cast.h"
sed -i.bak '/static constexpr Symbol Kind/d' "${SITE}/torch/include/torch/csrc/jit/ir/ir.h"

Way:找到对应的文件一个一个修改

#在这里插入代码片`需要手动修改的三个源文件

/torch/include/torch/csrc/jit/api/module.h
将这个头文件中 CONSTEXPR_EXCEPT_WIN_CUDA 全部替换为const

 /torch/include/pybind11/cast.h
 将这个头文件中 explicit operator type&() { return *(this->value);} 改为 explicit operator type&() { return *((type*)this->value);}

 /torch/include/torch/csrc/jit/ir/ir.h
 将这个头文件中的两处 static constexpr Symbol Kind 语句注释掉
  1. 对源文件进行编译,在https://zhuanlan.zhihu.com/p/308281195官方给的教程中,作者使用了conda,而我在cmd中使用virtualenv也能跑通过所以我觉得意义不大。
    3.1 进入下载好的mmcv文件夹,并安装所需的包
cd C:\Users\xxx\Desktop\bb\postgraduate\2022\code\mmcv
pip install -r requirements.txt

3.2进行编译
编译前需要在prompt中进行一些设置,官方教程要求管理员模式下中设置,地址和算力都要与自己电脑相匹配。官方教程见https://mmcv.readthedocs.io/en/latest/get_started/build.html#build-on-windows

$env:CUDA_HOME="C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1"
$env:MAX_JOBS=8
$env:MMCV_WITH_OPS=1
$env:TORCH_CUDA_ARCH_LIST="7.5"

python setup.py build_ext # 如果成功, cl 将会自动弹出来编译 flow_warp
python setup.py develop # 记得安装,否则不能整个环境使用
pip list # 检查是否安装成功

显示生成代码成功即可。

主要可能问题
-vs支持没安装好
-pytorch的cuda支持没安装好
-mmcv的版本没有和环境中的pytorch和cuda版本对应
-windows环境下的pytorch部分源码没有修改

码字真辛苦啊祝大家都能配置成功

你可能感兴趣的:(笔记,ubuntu,pytorch,深度学习)