上一篇文章中,我们已经安装了必要的软件,建立好了不同用户,做好了远程连接和安全防护,接下来,就要为深度学习实验做准备了。

安装NVIDIA驱动

目前,深度学习的主流硬件是具有强大算力的显卡,而目前(2025/04)显卡依然还是NVIDIA一家独大的场面,它的强大不仅体现在性能上,更多的是软件、驱动等方面的生态更加完善,使用起来更方便。
而要使用显卡,首先就是安装驱动,我安装驱动的过程完全参考B站的这个视频:https://www.bilibili.com/video/BV1wY411p7mU/?p=6&spm_id_from=333.1007.top_right_bar_window_history.content.click&vd_source=59276a77a9319f21b7dec25b3f709fdb
大家跟着视频一步一步做,大概率不会出问题,如果因为版本问题,安装过程中的提示信息有所不同,直接百度也能很快得到解决。
也可以按照以下步骤实现:

联网换源

通过wifi或者网线的方式联网,并将将系统源改为国内镜像源。

更新安装

执行系统更新和升级操作:

sudo apt update  # 更新软件包列表,获取最新的软件信息
sudo apt upgrade -y  # 升级已安装的软件包到最新版本

然后安装必要的工具:

sudo apt install vim ssh dkms -y

比较重要的是dkms,是动态内核模块支持,能在系统内核更新时自动重新编译 NVIDIA 驱动模块,避免内核更新后驱动失效。

禁用开源驱动 nouveau

NVIDIA 官方驱动与系统默认的开源 nouveau 驱动存在冲突,因此必须先禁用 nouveau。这是确保 NVIDIA 官方驱动正常安装和工作的关键步骤。
创建并编辑黑名单配置文件:

sudo vim /etc/modprobe.d/blacklist-nouveau.conf

在文件中输入以下内容:

blacklist nouveau
options nouveau modeset=0

保存文件后,执行以下命令更新 initramfs,更新系统启动镜像,使刚才的黑名单配置生效。:

sudo update-initramfs -u

最后需要重启系统:

sudo reboot

重启后,nouveau 驱动将被彻底禁用,为安装 NVIDIA 官方驱动做好准备。

安装 NVIDIA 官方驱动

NVIDIA驱动官网下载好与显卡型号对应的驱动文件,复制在服务器中,记好路径,在终端中进入驱动文件存储路径,为驱动安装文件添加可执行权限:

sudo chmod +x NVIDIA-Linux-x86_64-xxx.xx.run  # 实际文件名可能不同,可用Tab键自动补全

执行安装程序:

sudo ./NVIDIA-Linux-x86_64-xxx.xx.run -no-x-check --dkms

选择NVIDIA Proprietary
在这里插入图片描述
选择: Continue installation
在这里插入图片描述
之后都选YES就行,装完后重启服务器。
想测试驱动是否安装好,在ubuntu中按Ctrl+Alt+T打开终端,输入命令:

nvidia-smi

如果出现以下提示,就说明驱动安装完成,否则肯定是有问题,需要看是不是硬件型号选择错误?驱动安装过程中出问题?这些问题现在通过询问大模型可以得到很好地解决:
在这里插入图片描述
大家可以记一下自己终端中如图中红框内的信息,这是你的服务器能够安装的最高版本的cuda,注意关键词:能够安装的最高版本的,不是说现在电脑中安装的cuda就是这个版本,不要混淆。
如果想查看自己服务器现在安装的cuda是什么版本,可以先用这个命令安装suda工具包:

sudo apt install nvidia-cuda-toolkit

然后通过以下命令查看cuda版本:

nvcc --version

输入如下:
在这里插入图片描述

Anaconda安装

Anaconda 是一个开源的软件包管理和环境管理系统,主要用于简化 Python 软件包的安装和管理过程。它特别适合数据科学、机器学习及深度学习等领域的开发者使用。Anaconda 提供了一个易于使用的图形界面和命令行工具来管理库和环境,使得用户可以轻松地安装、更新、组织和删除所使用的工具包及其依赖项。
由于深度学习项目通常依赖于多个复杂的第三方库(如 TensorFlow、PyTorch、Keras 等),通过 Anaconda,这些库可以非常容易地被安装和维护,避免了手动安装时可能出现的各种兼容性问题。并且,Anaconda 支持创建独立的工作环境,这意味着我们可以为不同的项目创建各自的环境,并根据需要安装不同版本的库或 Python 解释器。这对于处理那些可能由于版本不兼容而导致的问题特别有用。
首先打开Anaconda官网,点击【Free Download】:
在这里插入图片描述
在这个界面输入邮箱,提交后就进入下载界面了:
在这里插入图片描述
安装完成后,打开安装包所在文件夹,右键后在菜单栏中选择【在终端打开】:
在这里插入图片描述
在终端输入命令:

sudo bash Anaconda3-2024.10-1-Linux-x86_64.sh  

注意这里,输入sudo bash后,可以输一个An,并按键盘上的Tab键,终端会自动帮你补全后面的内容。回车即可开始安装:
在这里插入图片描述

该图像来源于:https://blog.csdn.net/KRISNAT/article/details/124041869
安装过程中需要注意两个地方,一个是确认安装位置:
在这里插入图片描述
图中最后一行括号中间的内容是默认安装位置,如果你在>>>后不填任何路径,系统就默认安装在默认安装位置,否则安装在你指定的路径下。
另一个需要注意的地方是配置环境变量的确认命令:
在这里插入图片描述
此处建议填no,我们自己配置环境变量。
我们希望达到的效果是每个用户都不需要自己重复安装conda,可以直接使用conda的相关命令,并且创建的环境env和包pkgs都存放在自己的目录下,这样就可以达到隔离的效果,彼环境之间不互相干扰。
首先,添加系统环境变量,为了对所有用户都成立,执行:

sudo vim /etc/bash.bashrc

在打开的文件末尾加入:

# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/opt/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/opt/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/opt/anaconda3/etc/profile.d/conda.sh"
    else
        export PATH="/opt/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

注意代码中/opt/anaconda3/xxx的路径,要改成自己安装的路径,不要无脑照搬。
打开/etc/profile也加一下环境变量:

sudo vim /etc/profile

在文件末尾加入,也注意路径不要无脑照搬哦:

export PATH=/opt/anaconda3/bin:$PATH

重新载入下配置文件应该就好了:

sudo source /etc/profile

正常情况下此时终端开头会多出一个小括号,代表conda的基础环境:
在这里插入图片描述
为了更快地安装各种第三方软件包,可以把conda的软件源换成清华源,新建配置文件:

sudo vim /opt/anaconda3/.condarc # 注意路径

输入:

channels:
 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r/
 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2/
 - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
 - defaults
 
envs_dirs:
  - ~/.conda/envs
pkgs_dirs:
  - ~/.conda/pkgs

保存退出即可完成软件源配置。

此处再介绍另一种为多用户配置anaconda的方法,即设置conda用户组:
首先创建conda用户组:

sudo groupadd conda

然后将需要使用conda的用户添加到该组:

sudo usermod -aG conda user1
sudo usermod -aG conda user2

最后更改Anaconda目录的权限:

sudo chown -R root:conda /opt/anaconda3
sudo chmod -R 775 /opt/anaconda3

这样就没问题了。

自定义虚拟环境的保存路径

服务器运行过程中,如果系统盘的空间不是很充足,那么通过上面的方法创建环境存储的文件夹,会将所有的虚拟环境都存储在系统盘中,造成系统的崩溃,所以我们可以通过以下方法自定义安装路径。
假如我们有一个新的固态硬盘可以用来存储虚拟环境,把它挂载为/Env:

# 括号中内容按照自己的情况调整
sudo mount /dev/nvme()n()p() /Env

安装好anaconda后,需要调整系统环境变量设置,打开配置文件:

sudo vim /etc/bash.bashrc

在文件结尾加入以下代码:

# 1. 配置 conda 环境和包的存储路径(按用户名隔离)
export CONDA_ENVS_PATH="/Env/envs/$USER"  # 每个用户的环境存放在 /Env/envs/用户名
export CONDA_PKGS_DIRS="/Env/pkgs/$USER"  # 每个用户的包缓存存放在 /Env/pkgs/用户名

# 2. 自动创建当前用户的专属目录(避免首次使用时目录不存在)
mkdir -p "$CONDA_ENVS_PATH" "$CONDA_PKGS_DIRS"

# 3. 原有 conda 初始化代码(保持不变)
# >>> conda initialize >>>
__conda_setup="$('/opt/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; then
    eval "$__conda_setup"
else
    if [ -f "/opt/anaconda3/etc/profile.d/conda.sh" ]; then
        . "/opt/anaconda3/etc/profile.d/conda.sh"
    else
        export PATH="/opt/anaconda3/bin:$PATH"
    fi
fi
unset __conda_setup
# <<< conda initialize <<<

不同版本Cuda安装

在炼丹时,大部分同学可能都会遇到cuda版本不匹配的问题,这时候就需要安装合适版本的cuda,本文以cuda12.1为例。
再查看一次cuda版本:

nvcc --version

输入如下:
在这里插入图片描述
说明电脑现在的cuda版本是11.8。
安装合适版本的cuda,首先进入12.1版本的官网安装地址,按照服务器情况选择绿框中的内容,选好后在终端中输入安装命令:
在这里插入图片描述
下载安装包中。。。。
在这里插入图片描述
安装中。。。输入accept:
在这里插入图片描述
回车,取消安装驱动的选项,选择【Install】:
在这里插入图片描述
安装成功后提示:
在这里插入图片描述
查看环境变量:

sudo vi ~/.bashrc

在文件末尾加入:

export PATH=/usr/local/cuda-12.1/bin${PATH:+:${PATH}}

重新激活配置文件:

source ~/.bashrc

输入nvcc --version查看环境:

在这里插入图片描述
安装成功!

CuDNN安装

注意先确定版本对应关系,下载对应版本的cudnn,下载Local Installer for Linux x86_64 (Tar),解压:

tar -xvf cudnn-linux-x86_64-8.9.5.30_cuda11-archive.tar.xz

解压完成后,进行文件复制:

sudo cp cudnn-linux-x86_64-8.9.5.30_cuda11-archive/include/* /usr/local/cuda-11.8/include
sudo cp cudnn-linux-x86_64-8.9.5.30_cuda11-archive/lib/libcudnn* /usr/local/cuda-11.8/lib64
sudo chmod a+r /usr/local/cuda-11.8/include/cudnn.h
sudo chmod a+r /usr/local/cuda-11.8/lib64/libcudnn*

测试cudnn是否安装成功:

cat /usr/local/cuda-11.8/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

安装成功的提示信息:

#define CUDNN_MAJOR 8
#define CUDNN_MINOR 9
#define CUDNN_PATCHLEVEL 5
--
#define CUDNN_VERSION (CUDNN_MAJOR * 1000 + CUDNN_MINOR * 100 + CUDNN_PATCHLEVEL)

/* cannot use constexpr here since this is a C-only file */

安装成功!

希望该专栏对大家有帮助,欢迎纠错。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐