RTX3090 安装ubuntu16.04 +NVIDIA Driver 455.23.05 + cuda11.1.0 + cudnn8.0.4.30 + anaconda3-5.3.1 + pytorch1.7.1 stable
@写在前面碎碎念@
团队新组装了一台服务器,被安排安装一个ubuntu16.04的系统,自己什么就都不知道,然后在网上就是一顿查,用了大概一两天时间才把系统装好,把一些cuda环境什么的安装完,能正常的跑起来网络了。
这个文章是我在安装完系统之后写的,里面可能没有一些详细的截图什么的,就是记录一下整个操作过程,以及一些比较好用的博客链接,如果以后再遇到这种事情,可以比较清楚其步骤。
1. 前言
【先稍微用自己的话浅显的解释一下,ubuntu16.04 ; 显卡驱动; cuda11.1.0 ; cudnn8.0.4.30 ; anaconda3-5.3.1这些东西都是什么。】
1)ubuntu16.04
这个的话应该就是一个linux操作系统,就类似于我们的win10、win7之类的,有了这个操作系统,你才可以通过一些可视化、可理解的方式去操作计算机。(可能就是为了帮你更好的利用计算机软硬件资源的计算机程序,就是一个更底层的超级软件吧!)
2)NVIDIA Driver 455.23.05
显卡(GPU)就是我们服务器里面至关重要的计算资源了,但是硬件资源总要一个驱动,这就像是我们操作系统中安装的各种磁盘驱动器什么的,只有有了这个,我们才可以使用这块显卡。
3)cuda 11.1.0
cuda是英伟达开发的一个并行计算框架,适用于英伟达的显卡(GPU)。cuda就是一个只能在英伟达显卡上使用的工具包,这个工具包是用来并行计算,利用显卡资源的,并且只有待解决问题可以大量并行计算的时候才能发挥cuda的作用。
4)cudnn8.0.4.30
那现在cuda可以进行并行计算了,如何将我们的神经网络使用cuda资源计算,cudnn就是一个针对于神经网络的加速包。
5)anaconda3-5.3.1
这个其实就是python的一个工具包,没有这个也可以,你可以使用pip系列的命令,但是有些人比较习惯用conda系列的命令,就可以安装。
【这里有一些关于这些东西是什么的解释,做个记录】
【这个写的是真的高端】
2.安装ubuntu16.04
【这个过程就比较常规,跟普通的安装系统的步骤一样,主要分为两个部分,就是(制作系统盘)和(安装ubuntu16.04的系统)】
Baidu教程:https://jingyan.baidu.com/article/3c48dd348bc005e10be358eb.html
具体的安装过程,就可以参考以上教程。
ubuntu-16.04-desktop-amd64.iso 64位Ubuntu16.04下载地址
ubuntu-16.04-desktop-i386.iso 32位ubuntu16.04下载地址
我在安装过程时候有两个疑问记录一下。
1)ubuntu16.04系统安装在哪里?磁盘分区问题。
刚开始我纠结了一阵,按照上面的教程做了一下,但是总是报错,最后无奈采用了系统盘中默认的分区将系统安装在了一个单独的硬盘(500G),我感觉应该是固态硬盘,又不用来存储数据,那就默认应该也没有什么关系。
【但是我觉得,如果安装系统的时候,安装到一个需要存储其他数据,比如代码、数据集啥的话,最好还是搞一下分区,万一以后系统出现了问题,或许还有可能把数据直接保留下来,备份数据太苦/(ㄒoㄒ)/~~】
(图源:百度经验)
2)初始用户设置问题
我当时一看到这个,我就很迷,这个用户到底是干啥用的?我是应该用自己的名字还是用公共的命名设置,最后折腾了几趟发现,这就是一个具有sudo权限的超级用户,因为你安装完ubuntu系统,必须有一个用户账号密码你才能登录,设置这个服务器啊,所以这个就是相当于一个公共超级用户,我是这么感觉的。所以这最好还是使用一个公共命名设置,要不以后大家用服务器,每次看到略显尴尬。
(图源:百度经验)
3.安装NVIDIA Driver 455.23.05 + cuda11.1.0
这一步安装了显卡驱动和cuda两个东西,当然这个也可以分开装,但是我觉得比较小白的同学还是直接就一起装吧。为什么这么说,是因为一般cuda安装的时候,会默认安装一个显卡驱动,这样你就不用考虑显卡驱动和cuda版本的问题了。
1)cuda版本选择
说是不用考虑版本问题了,那我到底应该选择什么版本的cuda进行安装呢?
【cuda的版本一般是跟你日后要用的一些框架,pytorch、tensorflow等有关系的,当然也跟显卡有一定的关系,例如RTX3090 就只支持cuda11.0往上的版本】
如下是pytorch与cuda版本的对应关系。
来自于博客:https://blog.csdn.net/weixin_42069606/article/details/105198845
如下是tensorflow与cuda版本的对应关系。
来自于博客:https://blog.csdn.net/qq_41936559/article/details/104226333
【由于我的显卡是RTX3090,于是我选择了选择cuda 11.1.0】
cuda 官网下载:https://developer.nvidia.com/cuda-toolkit-archive
选择好版本之后,依次选择你系统的配置,然后按照教程命令下载安装。
安装及验证过程可以参考该博客
安装cuda之后,会同时自动帮你安装最新版的显卡驱动,因为显卡驱动是向下兼容版本的,所以只要你安装了最新的版本,你安装任何版本cuda应该都是可以的。(下图为显卡驱动可支持的最高版本cuda对应表)
【注意:在安装cuda之前,要先卸载旧的显卡驱动,禁用nouveau驱动,在这之前你最好把ssh访问弄好,以免关闭图形状化界面之后不知道该怎么操作,这时候还可以通过ssh链接,安装cuda。】
4.安装cudnn8.0.4.30
这部分说起来很简单,但是装起来还是花费了我不少时间。
cudnn 官方下载地址(需要登录):https://developer.nvidia.com/rdp/cudnn-download
依据你安装的cuda版本选择对应的cudnn。
点击如上荧光标识,下载cudnn安装包,使用压缩包进行安装,可以参考该教程。
1)tar -xzvf cudnn-9.0-linux-x64-v7.tgz
2)sudo cp cuda/include/cudnn.h /usr/local/cuda/include
3)sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
4)sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
我安装的时候不知道什么原因,就是安装不成功。我一直在执行2)、3)拷贝文件的时候犹豫是拷贝至cuda,还是cuda11.1.0那个文件夹。一直没有成功,最后是使用deb安装成功的。
下载上述三个deb文件,执行以下命令:
sudo dpkg -i libcudnn8_8.0.4.30-1+cuda11.1_amd64.deb
sudo dpkg -i libcudnn8-dev_8.0.4.30-1+cuda11.1_amd64.deb
sudo dpkg -i libcudnn8-samples_8.0.4.30-1+cuda11.1_amd64.deb
安装及勘验教程:https://zhuanlan.zhihu.com/p/126997172
5.安装anaconda3-5.3.1
安装完以上环境,基本就结束了。ubuntu16.04会自带一个python2.7.1,好多博客都说这个python不要删除,你可以安装一个python3,然后调整python3的优先级。
参考教程:https://blog.csdn.net/puqian13/article/details/107258702
我没有单独安装python3,是直接安装了我想要的anaconda,在安装的时候默认安装了python3.7,这个也可以,就没有再调整了。
官方下载地址:https://www.anaconda.com/products/individual#linux
清华镜像源下载:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
anaconda安装教程:https://blog.csdn.net/u012243626/article/details/82469174
6.安装pytorch1.7.1 stable
直接按照官网的教程,这里要求python版本高于3.6。
命令行:
conda install pytorch torchvision torchaudio cudatoolkit=11.0 -c pytorch
验证pytorch是否安装成功:
import torch
torch.cuda.is_available()
输出为True即安装成功。
一些碎碎念
1)如果多人使用服务器,root环境配置完cudnn,升级完python版本基本就可以添加用户,让用户自己创建虚拟环境了。
2)安装完anaconda,可以把使用权共享给所有用户,就不用每个用户都要安装一边anaconda。
设置参考:https://blog.csdn.net/qq_36285997/article/details/83716575
3)如果测试显卡中遇到物理内存还多,但是代码报内存不足,可能是因为swap空间不足或者太容易被利用,需要优化参数。
增加swap空间:https://blog.csdn.net/QQ2010899751/article/details/82890142
优化参数:http://www.codezyw.com/archives/160