栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

服务器RTX3090安装显卡驱动,cuda,cudnn,gpu版pytorch记录

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

服务器RTX3090安装显卡驱动,cuda,cudnn,gpu版pytorch记录

这东西有点麻烦,RTX3090还是很矫情的。

1. 安装ubuntu 20.04

随便网上搜个教程就行,u盘制作启动盘,然后重启狂按del(看自己设备是哪个键),通过u盘启动。
如果重装之后进不了BIOS,那么按照下面这篇博客的来:
解决安装 Ubuntu 后无法进入BIOS、UEFI 和Grub 引导

2. 配置apt source,ssh,make,etc. apt

装好之后先给apt换个源

## 备份source
cp /etc/apt/sources.list /etc/apt/sources.list.back 

## 编辑换源,vim当然也行,如果有的话
vi /etc/apt/sources.list   

把sources.list中的内容替换为:

deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse

然后:

sudo apt update
net-tools、vim

下载一些必备的包:

sudo apt install net-tools
sudo apt-get install vim
ssh

如果此台机器是服务器,后续有远程用自己pc机连服务器的需求,那么可以有这一步,否则也可以跳过这一步。

安装openssh

sudo apt-get install openssh-server

开启ssh:

service sshd start

之后的话可以通过其他pc机ssh远程连接该台机器进行后续的操作。具体而言,先使用ifconfig查看本机的ip地址:

然后在其他机器上用ssh usrname@10.XX.XX.XX 输入登录密码进去。

因为每次用ssh登陆的时候都要输一次密码还是比较麻烦,可以直接自己的pc机上生成密钥对,然后把公钥cp到服务器上:

ssh-keygen

之后可以输入你自己的秘钥,当然还是建议直接enter跳过,不然的话到时候连ssh其实还是要输密码…

ssh-copy-id XXX@10.XX.XX.XX

这样之后再用ssh连接远程主机的时候,这台机器就不用输密码。

cmake

最后服务器上还得有个cmake:
可以用make -v检查一下有没有make,没有的话下面两种方法选一个安装:

  • 直接apt-get:
sudo apt-get install make
  • 离线安装:
wget http://ftp.gnu.org/pub/gnu/ncurses/ncurses-5.6.tar.gz
tar zxvf ncurses-5.6.tar.gz
cd ncurses-5.6
 ./configure -prefix=/usr/local -with-shared -without-debug
make
make install

之后可以给实验室所有同学设置usr group和sudo权限,这里略过。

3. 安装显卡驱动

这一步有点麻烦,自己也探索了好久,中间也难免重装了好几次系统(头疼.jpg)
先用如下命令查看设备属性:

ubuntu-drivers devices

如下为例,会有推荐的driver版本:

之后建议离线安装包安装,可以去nvidia官网下载对应的显卡驱动,如果网速太慢,可以去下面这个镜像站:
https://download.nvidia.com/XFree86/Linux-x86_64/470.86/
下载之后上传服务器(当然也可以在服务器上wget),然后运行安装:

bash NVIDIA-Linux-x86_64-470.86.run

注意,如果你是自己用的pc机,需要图形界面的话,这个地方必须加上参数--no-opengl-files,否则到时候机器一旦重启,你就无法进入图形界面;当然,如果是实验室大家用的服务器(都是用ssh登录,用不到图形界面),那这个地方不加上也可以(笔者是如此)。
该参数的具体解释详见:Ubuntu 安装 cuda 时卡在登录界面(login loop)的解决方案之一

进入到安装界面(中间一些选择,默认就行):



之后用nvidia-smi试试看有没有装好:

正常来说离线安装应该是没问题。

当然…可能会遇到很多奇奇怪怪的毛病,下面举几个自己遇到的:

bug 1. 没有禁用nouveau

若是老老实实按照笔者上述流程来安装,这个bug必出现,莫慌!

其实网上几乎所有博客都是建议安装驱动前,先用各种方法把nouveau集成显卡驱动禁用。笔者这里之所以没有事先禁用是因为踩了坑(不知道为何,按照网上各种贴子禁用方法,修改/etc/modprobe.d/blacklist-nvidia-nouveau.conf之后重启,机器的网卡驱动就也会被莫名禁用,试了各种方法,没有解决)。

后来灵机一动,安装nvidia-driver的时候,若是没有事先禁用nouveau,那么安装程序会让你选择是否在etc目录下写一个文件来禁用nouveau。毫无疑问,这自己手动去改配置文件,肯定没有人家程序自动改来得靠谱啊。

所以,按照笔者上面的流程安装,必然会遇到安装过程中提示类似于"nouveau已经存在"的字样,这个时候选择自动写入etc禁用nouveau即可(这一步忘记截图了,意会即可)。

然后自己可以手动用sudo update-initramfs -u更新一下,再重启一下
重启之后,terminal输入lsmod | grep nouveau确保没有任何输出显示,说明nouveau禁用成功。
再重新运行显卡驱动安装就可以。理论上来说,这次就不会再有错误。

bug 2. driver版本不兼容

如果出现下面的报错:

打开nvidia-installer.log之后看到如下:

说明驱动版本和自己机器不兼容。
因此,建议选择ubuntu-drivers devices中推荐的版本。

或者,可以尝试如下ppa安装方法(没试过但是感觉蛮高赞的):
stackexchange

4. 安装anaconda和python环境 下载安装

推荐去清华镜像,找到anaconda3-5.2.0

下载之后bash运行这个sh文件,然后进入anaconda安装界面:

press ‘yes’之后,这个地方注意一下,让你选择安装路径,如果是自己用的pc机,那么默认的路径没问题,如果是团队用的服务器,注意尽量不要装在root根目录,一般实验室每个人都有自己代码数据的存储路径,最好更改conda下载路径到自己的路径:

这个过程中会提示是否写入环境变量,建议no,后面会手动添加。

环境变量

建议手动配置环境变量,这里有两种选择:

  • 导入conda.sh到usr bashrc(只对当前用户生效,推荐):
echo ". XXX/anaconda3/etc/profile.d/conda.sh" >> ~/.bashrc  ## XXX为之前那步你选择安装的anconda的位置
echo "conda activate" >> ~/.bashrc
source ~/.bashrc  ## 刷新bashrc
  • 建立一个全局的软连接(对所有用户生效,不是很推荐):
sudo ln -s XXX/anaconda3/etc/profile.d/conda.sh /etc/profile.d/conda.sh   ## 建立软连接,该操作针对所有用户
echo "conda activate" >> ~/.bashrc
source ~/.bashrc  ## 刷新bashrc

之后打开新的terminal,不出意外,应该会自动进入conda的base环境:

注意!老版本的conda在配置环境变量时(包括之前一步,如果选择让anaconda自动配置环境变量的话),大多用以下这种:

echo "export PATH=XXX/anaconda3/bin:$PATH" >> ~/.bashrc  ## XXX为之前那步你选择安装的anconda的位置

但是比较新的conda应该是要按照笔者上述这种方法来配置,而且官方推荐.bashrc文件里面不能有上面这行(但是笔者自己试的时候,加上也可以照样也还是能激活base,只不过会报个错,可能强迫症会有点难受)。

5. 安装cuda、cudnn

首先去官网查看自己做安装的driver版本和cuda、cudnn之间的对应,可以参考我另一篇blog:
查看cudnn和cuda,cuda和driver之间的对应关系

cuda安装

然后去下载cuda(选run file):
官网cuda下载地址
安装运行之前最好检查一下有没有gcc:

gcc --version


首先需要给可执行行权限:

sudo chmod a+x cuda_11.4.3_470.82.01_linux.run

然后安装:

sudo sh cuda_11.4.3_470.82.01_linux.run 

输入accept

选择install

最后屏幕会出一个summary

配置环境变量:

vim ~/.bashrc

末尾加上(改为自己的cuda安装路径):

export PATH="/usr/local/cuda-11.4/bin${PATH:+:${PATH}}"
export LD_LIBRARY_PATH="/usr/local/cuda-11.4/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}"

更新bashrc:

source ~/.bashrc

之后用nvcc -v试试看有没有成功,有如下输出则表示cuda安装成功:

cudnn安装

之后下载cudnn(需要用邮箱注册一个账号):
官网cudnn下载地址
需要下载下面四个(一个tar包,三个deb):

对于下载的cudnn的tar包,解压tar -zxvf cudnn-11.4-linux-x64-v8.2.4.15.tgz -C ./之后,当前目录下会多一个名为cuda的folder,之后cp cudnn.h 和 lib64 这两个库(根据自己cuda的路径调整),并更改这两个库的权限:

sudo cp cuda/include/cudnn.h /usr/local/cuda-11.4/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda-11.4/lib64

sudo chmod a+r /usr/local/cuda-11.4/include/cudnn.h /usr/local/cuda-11.4/lib64/libcudnn*

然后安装那三个libcudnn的Deb包:

sudo dpkg -i libcudnn8_8.2.4.15-1+cuda11.4_amd64.deb
sudo dpkg -i libcudnn8-dev_8.2.4.15-1+cuda11.4_amd64.deb
sudo dpkg -i libcudnn8-samples_8.2.4.15-1+cuda11.4_amd64.deb

重启验证

上面的cuda和cudnn安装之后可以reboot重启一下,输入以下命令检验是否安装成功:

cd /usr/local/cuda-11.4/samples/1_Utilities/deviceQuery 
sudo make 
./deviceQuery

若是安装成功,运行之后terminal里面最后会有一个Result = PASS:

6. 安装cuda版本的pytorch

先去官网确定自己的torch和torchvision之间的对应版本关系:

然后去下载离线包,找到对应版本的torch和torchvision:
离线包下载地址


之后pip安装即可:

pip install torch-1.8.0+cu111-cp38-cp38-linux_x86_64.whl
pip install torchvision-0.9.0+cu111-cp38-cp38-linux_x86_64.whl

此处需要提醒一点,若是安装的cuda版本高于torch支持(比方说笔者这里,cuda版本是11.4,但是安装的torch1.8.0只支持最高11.1).一般来说安装之后问题不是很大,只要差的版本不是很大就行。但最好还是一致。 详见:本机cuda版本可以高于安装pytorch时的cuda版本吗?

之后可以安装一些其他依赖,pandas,json,etc.有关于TensorFlow GPU版本,还有类似于Keras,这里不做介绍。

7. 验证

最后验证一下是否安装成功,terminal里进入python环境,然后执行以下代码:

>>> import torch
>>>>> torch.cuda.is_available()
True
>>> t=torch.nn.Linear(3,3)
>>> t.to("cuda:0")
Linear(in_features=3, out_features=3, bias=True)
>>> input=torch.randn((3,3)).requires_grad_().to("cuda:0")
>>> output=t(input)
>>> loss=torch.sum(output)
>>> torch.autograd.grad(loss,input,retain_graph=True)
(tensor([[ 0.2808, -0.3811,  0.4370],
        [ 0.2808, -0.3811,  0.4370],
        [ 0.2808, -0.3811,  0.4370]], device='cuda:0'),)
>>> loss.backward()

没有报错则算成功,说明可以使用gpu进行推理反传

8. 其他

最后再吐槽一下网上很多博客,有些误人子弟,当然也有一些其实是可以成功的,但是毕竟每个人机器都不是很一样,这里面变量很多,你也不知道别人的方法在你那里行不行得通。总之,装环境这种切忌盲目跟,要是装的时候感觉这篇博客不太对头了,好像它的屏幕输出和我不太一样,那么赶紧换一篇(包括这篇)。

最后,胆大心细吧,退一百步讲,大不了装错了重装系统呗(笔者写这篇重装了5、6次);还要有耐心,装环境还是可以增强自己的能力的。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/603860.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号