1、原因
最近在跑Semantics-guided Part Attention Network的代码,作者给出的环境配置是python3.6与pytorch1.6。于是,自己首先创建一个虚拟环境,并使用python3.6

然后,依据requirements.txt的,安装了torch1.6:

原本以为安装好之后,代码就可以跑起来,可是,现实却给了一巴掌,错误如下:

通过torch.cuda.is_available()为false,可以看出安装的torch1.6框架并不能使用预装好的CUDA10.0,进而使用不了显卡进行训练。

对于torch1.6不能使用CUDA10.0,去torch的官网看了一下,发现torch1.6只支持CUDA9.2,CUDA10.1,CUDA10.2,并不支持CUDA10.0,需要非root用户在linux下安装CUDA9.2和对应的cuDNN,服务器是团队或者项目组的,因此CUDA还是自己的好用!!!

2、为什么安装CUDA9.2,而不是10.1与10.2
2.1 查看CUDA驱动版本
驱动版本即为cuda driver version,输入nvidia-smi,看到我们服务器上的为:

输入cat /proc/driver/nvidia/version,也可以得出CUDA驱动版本

由不同版本cunda对应的NVIDIA驱动版本的对应表,以及390.46<410.78<418.39可知,我们可以安装CUDA9.2而不是CUDA10.1或CUDA10.2

2.2 查看base environment中CUDA运行版本
运行版本即为cuda runtime version,在基础环境中,是安装在python中的cudatoolkit和cudNN程序包的版本:
- 通过
cat /usr/local/cuda/version.txt来查看在base environment中安装的cudn版本 - 通过
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2查看cudNN的版本,若出现下面的第一个信息则表示安装成功。

2.3 查看当前虚拟环境中CUDA版本
- 输入pip list即可看到相应的CUDA,但是在此指令之中,没有看到相应的CUDA版本,是当前的pip版本中未安装CUDA。

- 或者输入conda list,看到CUDA与cudNN的版本为:

参考:https://blog.csdn.net/weixin_36474809/article/details/87820314
3、下载CUDA9.2
CUDA下载网址:https://developer.nvidia.com/cuda-toolkit-archive
CUDA提供两种安装方式:
- package manager安装
- runfile安装
虽然package manager 安装方式相对简单一些,但是在阅读别人博客的过程中发现选择这种方式在安装过程中问题可能多一点,失败的概率较大。为了减少不必要的麻烦,选择runfile(后缀为.run)文件来安装


- 注意,使用如下命令,获取相关信息
xxx:~$ uname -v #31~20.04.1-Ubuntu SMP Wed Jan 19 14:08:10 UTC 2022 xxx:~$ arch x86_64
4、CUDA9.2的安装
本文服务器目录结构解释如下:
- 用户名为xyy
- 目录 /home/xyy/cuda/用于存放不同的CUDA版本,每安装一个版本的CUDA就在该目录下新建一个文件夹,如cuda_9.2,并安装在相应的目录下
- 安装包下载到 /home/xyy/cuda/ 目录下,安装完成后就删除安装包
- 目录 /home/xyy/cuda/tem/ 目录用于cuDNN的解压,安装完成后就删除该目录
4.1 安装过程
在安装包所在目录下输入指令sh XXX进行安装,XXX为CUDA安装包文件名

过程如下,按空格读完协议或直接按q退出一堆的协议说明,进行如下图的操作, 这里没有安装新的驱动,是因为:
- root 用户 安装的 驱动 能够 支持当前 CUDA9.2的运行;
- 驱动的更新安装,需要 root 权限 (也就是说 一台 Linux 服务器 只能 安装 一个 驱动),团队的服务器,我没有 权限 去 更新 服务器的 显卡驱动;
- 如果服务器本身 驱动版本 高 能够 同时 支持 CUDA10.0 和 CUDA9.2 ,那么我们这里安装的 CUDA9.2,后面运行程序便是 可行的;

4.2 环境变量的配置
打开主目录下的 .bashrc文件添加如下路径,例如我的.bashrc文件在/home/xyy下,如果没有找到,则按Ctrl+H键显示隐藏文件。
vim .bashrc
在最下方添加刚刚安装CUDA的路径:
---
export PATH="/home/xyy/cuda/cuda_9.2/bin:$PATH"
export LD_LIBRARY_PATH="/home/xyy/cuda/cuda_9.2/lib64:$LD_LIBRARY_PATH"
---
保存之后,使配置生效:
source .bashrc
将CUDA路径加入path路径中,可以加入~./bashrc中,也可以加在/etc/profile中,我建议前者并在修改前做好备份,因为/etc/profile是系统文件,随意更改可能会造成系统出错。
4.3 cudn版本的查看
命令行输入 nvcc -V 查看CUDA版本

这说明 CUDA9.2此次安装OK,已经不再使用服务器公共的CUDA了。
4.4 卸载CUDA,用下面的命令(注意根据自己的路径改变)
cd /home/xyy/cuda/cuda_9.2/bin
sudo ./uninstall_cuda_9.2.pl
备注:https://blog.csdn.net/sinat_28442665/article/details/107384944
5、下载对应的cuDNN并安装
5.2 cuDNN的下载
这个下载需要邮箱注册和登录,如果没有的话,可以注册一下,cuDNN的下载网址为:https://developer.nvidia.com/rdp/cudnn-archive。这里选择一个与CUDA 9.2对应的版本,这里以cuDNN v7.1.4为例,选择以.tgz为后缀的Linux包,这里选择第一个:

将下载后的文件上传到服务器,如图所示:

5.3 cuDNN的安装
-
使用指令
tar -xzvf /home/xyy/cuda/cudnn-9.2-linux-x64-v7.1.tgz -C /home/xyy/cuda/tem/将cuDNN解压到tem文件夹(自己新建)并执行以下指令cp /home/xyy/cuda/tem/cuda/include/cudnn.h /home/xyy/cuda/cuda_9.2/include/ cp /home/xyy/cuda/tem/cuda/lib64/libcudnn* /home/xyy/cuda/cuda_9.2/lib64 chmod a+r /home/xyy/cuda/cuda_9.2/include/cudnn.h /home/xyy/cuda/cuda_9.2/lib64/libcudnn*可是,当检查cudNN是否安装成功的时候,出现了问题,提示不允许访问这个文件,发现修改访问文件的方法
chmod a+r /home/xyy/cuda/cuda_9.2/include/cudnn.h /home/xyy/cuda/cuda_9.2/lib64/libcudnn*没有生效,于是使用了chmod 755 /home/xyy/cuda/cuda_9.2/include/cudnn.h
-
将如下信息配置到
.bashrc,并使用source ~/.bashrc使其生效export PATH=/home/xyy/cuda/cuda_9.2/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/home/xyy/cuda/cuda_9.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} -
使用
cat /home/xyy/cuda/cuda_9.2/include/cudnn.h | grep CUDNN_MAJOR -A 2可以查看cuDNN的版本

参考:https://blog.csdn.net/hizengbiao/article/details/88625044
5.3 卸载cuDNN,只需将相关文件删除即可
rm –rf /home/xyy/cuda/cuda_9.2/include/cudnn.h
rm –rf /home/xyy/cuda/cuda_9.2/lib64/libcudnn*
6、安装Pytorch1.6
上面安装的CUDA9.2 和 cuDNN 7.1.4 是因为代码训练的torch版本为1.6 ,各位需要根据自己的需求情况来安装相应的CUDA和cuDNN版本,版本不匹配会导致很多麻烦呐。
5.1 设置镜像
因为Anaconda.org的服务器在国外,使用国外的服务器的时候,速度会很慢并且经常失败,其中出现”CondaHTTPError: HTTP None None for url……”这类错误时。因此,我们可以用清华TUNA镜像源或者包含Anaconda仓库的镜像,将其加入conda的配置。
- 第一步、添加清华镜像站到Anaconda:
conda config --add channels http://mirror.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --add channels http://mirror.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
其中 conda config --set show_channel_urls yes:表示设置搜索时显示通道地址
- 第二步,还可以附加第三方的conda源:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/bioconda/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/menpo/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
- 如果不添加镜像,则会出现错误,如下:

- 如果不添加镜像,同时加上了 -c pytorch,则会出现下面的错误:

5.2 pytorch的成功安装
前续工作做好之后,使用 conda install pytorch==1.6.0 torchvision==0.7.0 cudatoolkit=9.2进行安装,过程如下:

经查询,可知自己已经成功安装,如下所示:

5.3 与之前的比较

本文介绍了非root用户在Linux环境下安装CUDA9.2和cuDNN的过程,以适配Python3.6与PyTorch1.6。详细步骤包括查看CUDA驱动和版本,下载安装CUDA,配置环境变量,安装cuDNN,以及设置PyTorch镜像源和安装PyTorch1.6。
4万+

被折叠的 条评论
为什么被折叠?



