Bootstrap

如何在 Ubuntu 22.04 上安装 NVIDIA cuDNN 教程

如何在 Ubuntu 22.04 上安装 NVIDIA cuDNN 教程

简介

CUDA Deep Neural Network (cuDNN) 是 NVIDIA 提供的一个库,它使得深度神经网络的 GPU 加速计算成为可能。通过在 Ubuntu 上安装 cuDNN,开发者可以直接调用函数来训练和运行神经网络的推理,而无需编写基础函数。神经网络是大多数现代深度学习应用的基础,比如生成式 AI 模型。

本教程将指导你如何在 Ubuntu 22.04 服务器上安装 NVIDIA cuDNN 库。

准备工作

服务器准备

必要前提:

  • 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。

我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。

注册链接: https://www.rainyun.com/NTE2NDM3_

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

  • 点击 云产品云服务器立即购买

  • 选择距离你较近的区域,以保证低延迟。
    截图占位符

  • 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。

  • 最后按照提示进行购买。

  • 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。
    截图占位符

  • 我们使用 PowerShell 进行 SSH 远程连接到服务器,Win+R 打开运行窗口,输入 powershell 后点击确定。

    # su pythonuser
    
    • 使用 SSH 访问服务器。
    • 创建一个非 root 用户,并赋予 sudo 权限。
    • 切换到新的非 root 用户账户。将 pythonuser 替换为你的用户名。
  • 截图占位符

  • 到此为止,我们的云服务器就远程连接上了。

安装和配置步骤

第一步:安装 CUDA 工具包

第二步:安装 cuDNN 原生方式(推荐)

在本节中,我们将使用官方发布文件,为 CUDA 版本 12.x 安装 cuDNN 版本 8.9.4

  • 使用 Chrome 等网络浏览器访问 cuDNN 下载页面。

  • 同意 cuDNN 许可协议。

  • 点击 Download cuDNN, for CUDA 资源链接。
    截图占位符

  • 在打开的下拉对话框中,点击 Local Installer for Linux x86_64 (Tar) 链接,将最新发布文件下载到你的计算机。

你可以下载 .deb 发布文件,但安装时可能会覆盖系统文件。

本文使用的是 cuDNN 版本 8.9.4 for CUDA 12.x,文件名为:

cudnn-linux-x86_64-8.9.4.25_cuda12-archive.tar.xz
  1. 在新终端窗口中,切换到你的下载目录:
$ cd Downloads/
  1. 使用 SCP 等安全传输协议,将 cuDNN 发布文件上传到你的远程服务器:
$ scp cudnn-linux-x86_64-8.9.4.25_cuda12-archive.tar.xz pythonuser@SERVER-IP:/home/pythonuser/

替换 pythonuserSERVER-IP 为你的 Vultr 服务器详细信息。

  1. 传输成功后,在 SSH 会话中,切换到你的用户主目录:
$ cd /home/pythonuser/
  1. 列出目录中的文件:
$ ls -l

输出:

-rw-rw-r-- 1 pythonuser pythonuser 887509908 Sep  9 07:42 cudnn-linux-x86_64-8.9.4.25_cuda12-archive.tar.xz

确认 cuDNN 发布文件可用。

  1. 从 cuDNN 发布文件中提取文件:
$ tar -xf cudnn-linux-x86_64-8.9.4.25_cuda12-archive.tar.xz
  1. 将 cuDNN 头文件复制到 CUDA include 目录:
$ sudo cp cudnn-linux-x86_64-8.9.4.25_cuda12-archive/include/cudnn*.h /usr/local/cuda/include/
  1. 将 cuDNN 库文件复制到 CUDA 库目录:
$ cp -P cudnn-linux-x86_64-8.9.4.25_cuda12-archive/lib/libcudnn* /usr/local/cuda/lib64/
  1. 更改库文件目录权限,授予所有系统用户对目录的读取访问权限:
$ sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*

第三步:使用 Conda 安装 cuDNN

在本节中,我们将使用 Conda 在 Ubuntu 上安装 cuDNN 版本 8.9.2.26 for CUDA 11.x

  1. 使用 Conda 安装 CUDA 工具包版本 11.8.0
$ conda install -c "nvidia/label/cuda-11.8.0" cuda

安装后,请按照安装后的步骤激活服务器上的 CUDA Toolkit。

  1. 从默认通道安装最新的 cuDNN 版本:
$ conda install cudnn=="8.9.2.26" -c default

要安装特定版本,请使用命令语法 conda install cudnn=="x.y.z.w" -c channel-name。上述命令从默认通道安装 cuDNN 版本 8.9.2.26

第四步:验证 cuDNN 安装

要测试你的 cuDNN 安装,请按照以下步骤下载并运行 NVIDIA 验证程序:

  • 在你的网络浏览器中,访问 cuDNN 下载页面。
  • 同意 cuDNN 软件许可协议。
  • 找到并点击 Local installer for Ubuntu22.04 x86_64 (Deb) 文件链接,将文件下载到你的计算机。

本文使用的是 cuDNN 版本 8.9.4,文件名为:

cudnn-local-repo-ubuntu2204-8.9.4.25_1.0-1_amd64.deb
  1. 在新的终端会话中,切换到你的下载文件目录:
$ cd Downloads
  1. 使用 SCP 上传文件到你的远程服务器:
$ scp cudnn-local-repo-ubuntu2204-8.9.4.25_1.0-1_amd64.deb pythonuser@SERVER-IP:/home/pythonuser/
  1. 在你的 SSH 会话中,切换到用户的主目录:
$ cd /home/pythonuser/
  1. 安装所需的依赖库:
$ sudo apt install libfreeimage3 libfreeimage-dev
  1. 列出目录中的文件:
$ ls -l

确认 .deb 文件可用。

  1. 创建一个新的临时目录,例如 deb
$ mkdir deb
  1. 将上传的 .deb 安装包移动到目录中:
$ mv cudnn-local-repo-ubuntu2204-8.9.4.25_1.0-1_amd64.deb deb/
  1. 切换到目录:
$ cd deb
  1. 使用 ar 工具从 deb 文件中提取内容:
$ ar x cudnn-local-repo-ubuntu2204-8.9.4.25_1.0-1_amd64.deb
  1. 提取成功后,列出目录中的文件:
$ ls -l

输出:

-rw-r--r-- 1 pythonuser  pythonuser       1252 Sep  9 08:44 control.tar.xz
-rw-rw-r-- 1 pythonuser  pythonuser  904535554 Sep  9 08:43 cudnn-local-repo-ubuntu2204-8.9.4.25_1.0-1_amd64.deb
-rw-r--r-- 1 pythonuser  pythonuser  904532772 Sep  9 08:44 data.tar.xz

确认新的 data.tar.xz 可用。

  1. data.tar.xz 归档中提取文件:
$ tar -xf data.tar.xz

提取完成后,etcusrvar 子目录被添加到目录中。

  1. 切换到 var 目录中的 cudnn-local-repo-ubuntu2204-8.9.4.25 子目录:
$ cd var/cudnn-local-repo-ubuntu2204-8.9.4.25/
  1. 在目录中,从 libcudnn8-samples_8.9.4.25-1+cuda12.2_amd64.deb 文件中提取文件:
$ ar x libcudnn8-samples_8.9.4.25-1+cuda12.2_amd64.deb
  1. 从新的 data.tar.xz 归档文件中提取文件:
$ tar -xf data.tar.xz
  1. 提取完成后,切换到包含源代码和示例程序文件的 usr 目录:
$ cd usr/src/cudnn_samples_v8/
  1. 切换到 mnistCUDNN 程序目录:
$ cd mnistCUDNN
  1. 清除任何之前的构建工件:
$ make clean
  1. 编译 MNIST 程序:
$ make

如果成功,你的输出应该如下所示:

CUDA_VERSION is 12000
Linking agains cublasLt = true
TARGET ARCH: x86_64
.
.
/usr/local/cuda/bin/nvcc -I/usr/local/cuda/include -I/usr/local/cuda/include
-IFreeImage/include -ccbin g++ -m64 -gencode
arch=compute_50,code=sm_50 -gencode
.
.
arch=compute_90,code=compute_90 -o fp16_dev.o -c fp16_dev.cu
.
g++ -I/usr/local/cuda/include -I/usr/local/cuda/include -IFreeImage/include   -o mnistCUDNN.o -c mnistCUDNN.cpp
/usr/local/cuda/bin/nvcc -ccbin g++ -m64 -gencode arch=compute_50,code=sm_50 -gencode
.
arch=compute_90,code=compute_90 -o mnistCUDNN fp16_dev.o fp16_emu.o mnistCUDNN.o -I/usr/local/cuda/include -I/usr/local/cuda/include -IFreeImage/include -L/usr/local/cuda/lib64 -L/usr/local/cuda/lib64 -L/usr/local/cuda/lib64 -lcublasLt -LFreeImage/lib/linux/x86_64 -LFreeImage/lib/linux -lcudart -lcublas -lcudnn -lfreeimage -lstdc++ -lm

如果命令返回编译错误,请运行 mnistCUDNN

$ ./mnistCUDNN

如果成功,你的输出应该如下所示:

Executing: mnistCUDNN
.
Testing single precision
.
Loading binary file data/conv1.bin
.
Testing cudnnGetConvolutionForwardAlgorithm_v7 ...
.
^^^^ CUDNN_STATUS_SUCCESS for Algo 5: -1.000000 time requiring 178432 memory
.
Testing cudnnFindConvolutionForwardAlgorithm ...
^^^^ CUDNN_STATUS_SUCCESS for Algo 1: 0.045248 time requiring 0 memory
.
^^^^ CUDNN_STATUS_SUCCESS for Algo 4: 5.640960 time requiring 184784 memory
.
Test passed!

当测试成功时,cuDNN 已在你的服务器上激活并安装。

结尾

本教程介绍了如何在 Ubuntu 22.04 服务器上使用两种选项(原生和 Conda)安装 NVIDIA cuDNN 包。你还验证了系统配置以安装匹配的 cuDNN 版本。要使用 cuDNN 开发应用程序,请访问 cuDNN API 参考,其中讨论了使用神经网络进行训练和推理的可用 cuDNN 函数。

雨云 - 新一代云服务提供商: https://www.rainyun.com/NTE2NDM3_

;