2021(接近2022)linux(ubuntu16.04)安装cuda跑深度学习步骤以及踩坑过程(ELF标头无效、导入torch后torch.cuda.is_available()为False等等)

------------------------------------------------更新分界线------------------------------------------------------------------

2022.4.17最新更新了一个pytorch无法调用gpu的解决方法 pytorch无法调用gpu的一些解决方法_Dcityy的博客-CSDN博客

---------------------------------------------------------------------------------------------------------------------------------

        首先说一下我的环境ubuntu16.04,anaconda3,用的导师的服务器,xshell连接,(几乎)没有多少权限(apt install 都是刚拿的权限没多久)

        刚开始啥也不懂,上来建了个新环境,用conda安装好pytorch等库,想跑个简单的卷积神经网络代码,结果可想而知用的cpu跑的。然后找了找了找资料去了pytorch官网PyTorch,用正规的方式(nvidia-smi命令)查看了cuda的版本,我当时的版本是10.1,后面会说这些版本之间的关系,然后自以为聪明的在历史版本中找了10.1版本的命令(conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=10.1 -c pytorch)注意这是个巨坑,除了cudatoolkit其他的一律不要加版本号!!!除了cudatoolkit其他的一律不要加版本号!!!除了cudatoolkit其他的一律不要加版本号!!!然后import torch都给我报错什么无效的标头ELF,然后折腾了很久我直接用

conda install pytorch torchvision torchaudio cudatoolkit=10.1 -c pytorch

2021(接近2022)linux(ubuntu16.04)安装cuda跑深度学习步骤以及踩坑过程(ELF标头无效、导入torch后torch.cuda.is_available()为False等等)_第1张图片

就没报错了,但是使用torch.cuda.is_available()为False。注意你cuda装的哪个版本就把cudatoolkit后的版本号改了就行。

        然后也不多说废话了,我劝看到这里的兄弟也别管你之前进行到哪了,建议直接从头开始。我也是这样,因为服务器很多人在用,到底cuda装好了没,驱动装好了没都是未知数。从头来是最顺利的。正文开始

        首先说明一下nvcc(nvcc -V命令需要安装)和nvidia-smi看的cuda版本有什么不同,如图

2021(接近2022)linux(ubuntu16.04)安装cuda跑深度学习步骤以及踩坑过程(ELF标头无效、导入torch后torch.cuda.is_available()为False等等)_第2张图片

可能很多人看到的nvidia-smi版本和nvcc -V的版本都是不一致的,这是正常的。nvidia-smi显示的cuda version版本号是你安装的nvidia驱动支持的最高cuda版本,而nvcc显示的则是你真实安装的cuda版本,通俗点说就是你真实安装的cuda版本不要超过nvidia驱动支持的最高cuda版本就行,当然太低可能也不行,建议最多差一个版本。

         搞清了这个关系,接下来就是从头来。

1.安装NVIDIA驱动

        还是那句话,别管nvidia驱动已经装好没(能用nvidia-smi就表示nvidia驱动装了,好没好这就不知道了),直接重新安装驱动,也别怕权限不够,怕卸载了装不上,我当时也有点心理压力,怕乱来把这个搞没了,没法向导师交差。但是不破不立,亲身实践只需要一个apt install权限就足够了。
先卸载nvidia驱动,命令如下

sudo apt-get purge nvidia-cuda*
sudo apt-get purge nvidia-*

 禁用nouveau,sudo vim /etc/modprobe.d/blacklist.conf后在文件末尾加入:

blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off

进行了上面这些步骤之后一定要使用sudo reboot重启服务器,不然后面安装驱动会报错An NVIDIA kernel module ‘nvidia-uvm’ appears to already be load。

到nvidia驱动官网下载驱动NVIDIA 驱动程序下载,如图

2021(接近2022)linux(ubuntu16.04)安装cuda跑深度学习步骤以及踩坑过程(ELF标头无效、导入torch后torch.cuda.is_available()为False等等)_第3张图片

 产品系列中显卡后面有notebook的表示笔记本电脑使用的,没有的就表示台式机。然后点搜索之后下载就行。这里我采用的安装策略是在window上下载之后,用xftp上传到服务器,不过现在xshell xftp的官网好像进不去,下载不到免费版的了,如果有需要xftp的话就发消息给我邮箱[email protected]。下载并且上传之后好如图

 我们使用

sudo chmod a+x NVIDIA-Linux-x86_64-470.94.run

 将文件变为可执行,然后使用

sudo ./NVIDIA-Linux-x86_64-470.94.run

进行驱动安装

 然后极大可能会遇到You appear to be running an X server; please exit X before...这种错误,没关系,使用

sudo /etc/init.d/gdm stop
sudo /etc/init.d/gdm status

或者

sudo /etc/init.d/lightdm stop
sudo /etc/init.d/lightdm status

第一个不行就是第二个,关闭 X server

 然后在使用安装命令,如果出现让你选择的选项,说明你快成功了,如下

The distribution-provided pre-install script failed! Are you sure you want to continue? 选择 yes 继续。

Would you like to register the kernel module souces with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later?  选择 No 继续。

问题没记住,选项是:install without signing

问题大概是:Nvidia's 32-bit compatibility libraries? 选择 No 继续。

Would you like to run the nvidia-xconfigutility to automatically update your x configuration so that the NVIDIA x driver will be used when you restart x? Any pre-existing x confile will be backed up.  选择 Yes  继续

 如果遇到失败中断了,继续尝试即可,如果最后还是不行,请查看我所参考的这几位大佬的博客。

(1条消息) 更新NVIDIA显卡的CUDA驱动出错,You appear to be running an X server; please exit X before_Learning by doing-CSDN博客

(1条消息) 关于linux服务器(centos)安装驱动出现An NVIDIA kernel module ‘nvidia-uvm‘ appears to already be load的问题自己的解决方法_hbw136的博客-CSDN博客

(1条消息) Ubuntu16.04 nvidia 显卡驱动过程及遇到的问题_wangyjfrecky的博客-CSDN博客_ubuntu附加驱动无法更换显卡驱动

2.安装CUDA

 进入官网CUDA Toolkit Archive | NVIDIA Developer,如下图:

2021(接近2022)linux(ubuntu16.04)安装cuda跑深度学习步骤以及踩坑过程(ELF标头无效、导入torch后torch.cuda.is_available()为False等等)_第4张图片

2021(接近2022)linux(ubuntu16.04)安装cuda跑深度学习步骤以及踩坑过程(ELF标头无效、导入torch后torch.cuda.is_available()为False等等)_第5张图片 点击下载后会让你登陆或者注册,新用户用邮箱注册一个就好。下载好上传之后如图

 使用跟第一步中相同的方法

 sudo ./cuda_10.1.105_418.39_linux.run

 然后安装过程中,[X]表示安装,用回车可以修改是否安装,第一个nvidia accelerated graphics driver表示安装nvidia驱动,我们已经安装过了,所以不需要了。将[X]中的X用回车去掉。然后安装成功后会出现类似于这张图的信息告诉你安装路径在哪。

2021(接近2022)linux(ubuntu16.04)安装cuda跑深度学习步骤以及踩坑过程(ELF标头无效、导入torch后torch.cuda.is_available()为False等等)_第6张图片

安装成功后如图 

 

 看网上说还需要设置软链接,需不需要设置,你只需要看nvcc -V得到的版本是不是你想要的版本。然后我这里还算顺利所以也不用设置。还有问题可以看看

Linux服务器安装cuda,cudnn,显卡驱动和pytorch超详细流程_kingfoulin的博客-CSDN博客_linux安装cuda

Linux安装CUDA的正确姿势_FlyWine的博客-CSDN博客_linux安装cuda

3.安装cudnn

安装cudnn到底是不是必要这我也不知道,因为我也不是从头开始的(滑稽),不过现在你可以试一试了。师姐跟我说这是必须要装的。然后安装cudnn,这位大佬已经写的非常清楚Linux服务器安装cuda,cudnn,显卡驱动和pytorch超详细流程_kingfoulin的博客-CSDN博客_linux安装cuda 完成之后,再使用torch

2021(接近2022)linux(ubuntu16.04)安装cuda跑深度学习步骤以及踩坑过程(ELF标头无效、导入torch后torch.cuda.is_available()为False等等)_第7张图片

 最后说一点题外话

在linux终端下运行python代码只需要执行类似于

python LeNet.py

这种命令就可以跑代码了 ,在代码里面最好加一个__name__=="__main__"函数

你可能感兴趣的:(pytorch,深度学习,人工智能,服务器,linux)