小白的实验室服务器深度学习环境配置指南

avatar
作者
筋斗云
阅读量:2

安装nvidia

本文在ubuntu server 22.04上实验成功,其他版本仅供参考

注意,本文仅适用于ubuntu server,不需要图形界面,没有对图形界面进行特殊考虑和验证!依赖图形操作界面的读者慎用

查看是否安装了gcc

gcc -v 

若没有安装,则输入下面的命令,直接把包括gcc在内很多开发工具包一同安装

sudo apt-get install build-essential 

禁用nouveau驱动

编辑 /etc/modprobe.d/blacklist-nouveau.conf 文件,添加以下内容:

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

关闭nouveau:

echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf 

注意,本文仅适用于ubuntu server,不需要图形界面,没有对图形界面进行特殊考虑和验证!依赖图形操作界面的读者慎用!

完成后,重新生成内核并重启:

sudo update-initramfs -u sudo reboot 

重启后,执行:lsmod | grep nouveau。如果没有屏幕输出,说明禁用nouveau成功。否则,应重新执行第禁用nouveau驱动小节。

因为实验室服务器不方便重启,我没有重启,但执行:lsmod | grep nouveau,没有屏幕输出,说明禁用nouveau成功。

安装驱动

使用命令ubuntu-drivers devices获取可用驱动信息,如果命令不存在自己安装一下。

输出为:

== /sys/devices/pci0000:72/0000:72:00.0/0000:73:00.0 == modalias : pci:v000010DEd00002204sv00001028sd00003880bc03sc00i00 vendor   : NVIDIA Corporation model    : GA102 [GeForce RTX 3090] driver   : nvidia-driver-525 - third-party non-free driver   : nvidia-driver-525-open - distro non-free driver   : nvidia-driver-525-server - distro non-free driver   : nvidia-driver-470 - distro non-free driver   : nvidia-driver-535-server-open - distro non-free driver   : nvidia-driver-470-server - distro non-free driver   : nvidia-driver-535 - distro non-free recommended driver   : nvidia-driver-535-server - distro non-free driver   : nvidia-driver-535-open - distro non-free driver   : xserver-xorg-video-nouveau - distro free builtin 

注意recommend的版本是535,加上是在服务器上安装,初步确定安装nvidia-driver-535-server

还可以查看内核中nvidia的版本:cat /proc/driver/nvidia/version

输出为:

NVRM version: NVIDIA UNIX x86_64 Kernel Module  535.129.03  Thu Oct 19 18:56:32 UTC 2023 GCC version:  gcc version 11.4.0 (Ubuntu 11.4.0-1ubuntu1~22.04)  

可以看到版本是535

因此执行命令安装:sudo apt install nvidia-driver-535-server

等待安装完成后,执行nvidia-smi可以输出gpu监控界面,则驱动安装成功!

执行nvidia-smi的输出结果

+---------------------------------------------------------------------------------------+ | NVIDIA-SMI 535.129.03             Driver Version: 535.129.03   CUDA Version: 12.2     | |-----------------------------------------+----------------------+----------------------+ | GPU  Name                 Persistence-M | Bus-Id        Disp.A | Volatile Uncorr. ECC | | Fan  Temp   Perf          Pwr:Usage/Cap |         Memory-Usage | GPU-Util  Compute M. | |                                         |                      |               MIG M. | |=========================================+======================+======================| |   0  NVIDIA GeForce RTX 3090        Off | 00000000:73:00.0 Off |                  N/A | | 55%   66C    P2             163W / 350W |   1575MiB / 24576MiB |      0%      Default | |                                         |                      |                  N/A | +-----------------------------------------+----------------------+----------------------+                                                                                           +---------------------------------------------------------------------------------------+ | Processes:                                                                            | |  GPU   GI   CI        PID   Type   Process name                            GPU Memory | |        ID   ID                                                             Usage      | |=======================================================================================| |    0   N/A  N/A   1331109      C   python3                                    1562MiB | +---------------------------------------------------------------------------------------+ 

上图显示的显卡信息,第一行是版本信息,第二行是标题栏,第三行是具体的显卡信息。如果有多个显卡,就会有多行对应标题栏的信息。例如我上面显示了共0~4号,共5个卡。

  • GPU:显卡编号,从0开始。
  • Fan:风扇转速,在0~100%之间变动。这个速度是计算机期望的风扇转速,实际情况下如果风扇堵转,可能就不会显示具体转速值。有的设备不会返回转速,因为它不依赖风扇冷却,而是通过其他外设保持低温,比如我们实验室的服务器是常年放在空掉房间里面的。
  • Name:显卡名,以上都是Tesla。
  • Temp:显卡内部的温度,以上分别是54、49、46、50、39摄氏度。
  • Perf:性能状态,从P0到P12,P0性能最大,P12最小 。
  • Persistence-M:持续模式的状态开关,持续模式虽然耗能大,但是在新的GPU应用启动时,花费的时间更少。以上都是Off的状态。
  • Pwr:能耗表示。
  • Bus-Id:涉及GPU总线的相关信息。
  • Disp.A:是Display Active的意思,表示GPU的显示是否初始化。
  • Memory-Usage:显存的使用率。
  • GPU-Util:GPU的利用率。
  • Compute M.:计算模式。
  • 下面的Process显示每块GPU上每个进程所使用的显存情况。

卸载显卡驱动

如果遇到Nvidia NVML Driver/library version mismatch的问题,又不方便重启实验室服务器,只能重装显卡驱动。因此将卸载显卡驱动的命令记录于此。

卸载显卡驱动:sudo apt-get remove --purge nvidia*

再执行:dpkg -l | grep nvidia

如果还有其他包,也全部卸载。

安装CUDA Toolkit

就安装nvidia-smi中适用于nvidia 535.129.03的最大的cuda版本:12.2

1、去官网选择要安装的版本

2、以cuda 12.2为例,选择系统配置。一定要选择runfile安装,因为使用runfile安装可以选择不安装nvidia驱动,而使用deb安装默认安装nvidia驱动,会出现driver/library version mismatch的问题

在这里插入图片描述

在这里插入图片描述

3、执行命令,由于前面已经安装了nvidia驱动,所以在安装选项里要取消Driver

在这里插入图片描述

4、将cuda写入环境变量,由于是多用户系统,在~/.bashrc文件(仅当前用户生效)的末尾写入

#####################cuda12.2####################### export PATH=$PATH:/usr/local/cuda-12.2/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-12.2/lib64 

5、source刷新环境变量

source /etc/profile 

Anaconda虚拟环境配置

安装Anaconda

1、安装Anaconda

在使用服务器时,可以使用Anaconda来创建和管理多个虚拟环境,非常好用。安装步骤如下:

1、去官网下载安装文件

在这里插入图片描述

2、上传至服务器并赋予执行权限

chmod +x Anaconda3-2023.09-0-Linux-x86_64.sh 

3、安装

sudo ./Anaconda3-2023.09-0-Linux-x86_64.sh 

注意,安装路径默认是当前用户的home目录下的anaconda3,例如:~/anaconda3。在询问是否执行conda initialization时,选择yes,这样就不需要自己配置环境变量了(默认写入~/.bashrc文件)。

配置虚拟环境

1、新建一个Python环境

conda create -n test python=3.9 # 新建一个名为test的python3.9环境 conda activate test # 激活test环境 

如果激活失败,可以先进入base环境再激活test环境,执行以下命令:

source activate conda activate test 

2、在虚拟环境中配置conda和PyTorch-GPU

官网查看对应版本的安装命令并执行

不幸的发现最高的pytorch只支持cuda12.1版本

在这里插入图片描述

因此我们选择在虚拟环境中安装低版本cuda

conda install cuda=11.8 

继续安装版本匹配的pytorch

conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia 

验证是否安装成功

import torch print(torch.__version__) print(torch.cuda.is_available()) 

注意conda-forge这个通道会比较慢,所以安装pytorch的时候,最好选择不带conda-forge的命令

3、在虚拟环境中配置cudnn

官网查看cudnn和cuda的版本对应关系

在这里插入图片描述

conda找不到对应版本的cudnn

输入命令: conda search cudnn -c conda-forge 然后出现了各个版本的cudnn:

在这里插入图片描述

选择一个合适的版本安装,这里选择cudnn 8.9.2.26

conda install cudnn=8.9.2.26 

验证cudnn安装成功:conda list | grep cudnn

输出如下,安装成功

cudnn                     8.9.2.26               cuda11_0 

参考

[1] nvidia-smi查看GPU的使用信息并分析

[2] 【2022新教程】Ubuntu server 20.04如何安装nvidia驱动和cuda-解决服务器ssh一段时间后连不上的问题

[3] 这绝对是你见过的最全深度学习服务器管理配置手册

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!