最近在用实验室的服务器复现立体匹配网路CasStereoNet时,出现了pytorch版本不匹配的错误,如下:
RuntimeError: Legacy autograd function with non-static forward method is deprecated. Please use new-style autograd function with static forward method.
尝试在代码中的model的forward前面加@staticmethod,然后再在使用model的时候,把output=model(input)变成output=model.forward(input)并没有什么用,也尝试了.apply()的改法还是报错,最后索性换个环境。
安装过程中也踩了很多坑,就写个总结好啦。
目录
一、安装Anaconda
1. 下载对应版本安装包
2. 进入存放安装包的目录,执行下面的命令
3. 配置环境变量
二、安装Pytorch和torchvison
1. 安装pytorch
2. 安装torchvision
三、安装Cuda10.0、cudnn
1. 安装Cuda10.0
2. 安装cudnn
参考
Linux服务器非root权限下安装Anaconda_x124612的博客-CSDN博客
下载地址 : https://repo.anaconda.com/archive/
bash Anaconda3-5.3.1-Linux-x86_64.sh
(1)直接在当前终端输入:
export PATH="/home/用户名/anaconda3/bin:$PATH"
(2)更新使其生效
source ~/.bashrc
(3)最重要的最后,输入
conda
conda就安装完成了,下面就可以创建环境安装pytorch和torchvision了。
CUDA、cuDNN、Pytorch、torchvision的版本对应参考:
Pytorch环境配置——cuda、、cudnn、torch、torchvision对应版本(最全)及安装方法_William.csj的博客-CSDN博客_pytorch cuda cudnn版本对应
(1)创建环境pytorch110
conda create -n pytorch110 python=3.7
(2)激活pytorch110环境
conda activate pytorch110
方法一:官方指令安装https://pytorch.org/get-started/previous-versions/
找到对应的pytorch版本,然后在终端输入指令(-c pytorch去掉)安装即可。此处需要用到清华的镜像源,关于如何添加删除清华镜像源参考:https://liubingqing.blog.csdn.net/article/details/115071599?spm=1001.2014.3001.5506
方法二:下载安装包下载,也是我使用的方法,pytorch和torchvision的下载地址如下:
https://download.pytorch.org/whl/torch_stable.html
我是下载到本地,然后拖到实验室服务器的文件夹里的。
下载好后,在存有软件包的目录下,执行
pip install torch-1.1.0-cp37-cp37m-linux_x86_64.whl
像安装pytorch一样,我是下载的安装包安装的
pip install torchvision-0.4.0-cp37-cp37m-manylinux1_x86_64.whl
最后用conda list查看是否安装成功。
使用"conda deactivate"退出pytorch110的环境
参考:
Linux服务器非root用户下安装CUDA11.1和cudnn到指定目录_BUAA~冬之恋的博客-CSDN博客_linux安装cuda11.1
非root用户安装cuda10.0和cudnn_Ixiaohuihuihui的博客-CSDN博客
在安装Cuda10.0之前在"/home/用户名/"下创建文件夹cuda-10.0,后面输入安装路径的时候输入新创建的文件夹的路径,安装在默认路径下没有权限。
使用nvidia-smi指令查看nivdia驱动版本和cuda版本,选择合适的cuda版本。
(1)下载软件包,下载地址:
https://developer.nvidia.com/cuda-toolkit-archive
(2)创建cuda-10.0文件夹
mkdir cuda-10.0
mkdir cuda-10.0/mylib
(3)安装Cuda10.0
bash cuda_10.0.130_410.48_linux.run
选择accept后,会让你选择安装
Install NVIDIA Accelerated Graphics Driver for Linux-x86 64 410.48?(y)es/(n)o/(q)uit: n
Install the CUDA 10.0 Toolkit?(y)es/(n)o/(q)uit: y
下面是安装路径,问你是否把cuda装在/usr/local,这里要输入自己的路径
Enter Toolkit Location
[default is /usr/local/cuda-10.0]:/home/用户名/cuda-10.0
Do you want to install a symbolic linkat /usr/local/cuda?(y)es/(n)o/(q)uit:n
Install the CUDA 10.0 Samples?(y)es/(n)o/(q)uit: y
下面是cuda samples的安装路径
Enter CUDA Samples Location
[ default is /home/dailh ]: /home/用户名/
(4)更改环境变量
export PATH="/home/用户名/cuda-10.0/bin:$PATH"
export LD_LIBRARY_PATH="/home/用户名/cuda-10.0/lib64:/home/用户名/cuda-10.0/mylib/lib64:$LD_LIBRARY_PATH"
source ~/.bashrc
在终端输入
nvcc -V
检查cuda的版本是不是10.0。
(1)去官网下载对应版本的cudnn,地址:
https://developer.nvidia.com/rdp/cudnn-archive#a-collapse804-111
(2)解压
tar -xzvf cudnn-10.0-linux-x64-v7.6.5.32.tgz
(解压后的文件是cuda)然后
cp /home/用户名/cuda/include/cudnn.h /home/用户名/cuda-10.0/include/
cp /home/用户名/cuda/lib64/libcudnn* /home/用户名/cuda-10.0/lib64
chmod a+r /home/用户名/cuda-10.0/include/cudnn.h /home/用户名/cuda-10.0/lib64/libcudnn*
然后就安装成功可以正常跑啦!