在运行 Linux 的 N 系列 VM 上安装 NVIDIA GPU 驱动程序

注意

本文引用了 CentOS,这是一个接近生命周期结束 (EOL) 状态的 Linux 发行版。 请相应地考虑你的使用和规划。 有关详细信息,请参阅 CentOS 生命周期结束指南

适用于:✔️ Linux VM

若要利用 NVIDIA GPU 支持的 Azure N 系列 VM 的 GPU 功能,必须安装 NVIDIA GPU 驱动程序。

如果选择手动安装 NVIDIA GPU 驱动程序,本文提供受支持的分发版、驱动程序以及安装和验证步骤。 针对 Windows VM 也提供了驱动程序手动安装信息。

有关 N 系列 VM 规格、存储容量和磁盘详细信息,请参阅 GPU Linux VM 大小

支持的分发和驱动程序

注意

本文引用了 CentOS,这是一个接近生命周期结束 (EOL) 状态的 Linux 发行版。 请相应地考虑你的使用和规划。

NVIDIA CUDA 驱动程序

有关最新的 CUDA 驱动程序和支持的操作系统,请访问 NVIDIA 网站。 确保为你的发行版安装或升级到最新支持的 CUDA 驱动程序。

提示

作为一种在 Linux VM 上手动安装 CUDA 驱动程序的替代方法,可以部署 Azure 数据科学虚拟机映像。 用于 Ubuntu 16.04 LTS 或 CentOS 7.4 的 DSVM 版本预安装 NVIDIA CUDA 驱动程序、CUDA 深度神经网络库和其他工具。

在 N 系列 VM 上安装 CUDA 驱动程序

从 NVIDIA CUDA 工具包在 N 系列 VM 上安装 CUDA 驱动程序的步骤如下。

C 和 C++ 开发人员可以选择安装完整的工具包来生成 GPU 加速应用程序。 有关详细信息,请参阅 CUDA 安装指南

要安装 CUDA 驱动程序,请建立到每个 VM 的 SSH 连接。 若要验证系统是否具有支持 CUDA 的 GPU,请运行以下命令:

lspci | grep -i NVIDIA

输出类似于以下示例(显示 NVIDIA Tesla K80 卡):

lspci 命令输出

lspci 列出了 VM 上的 PCIe 设备,包括 InfiniBand NIC 和 GPU(如果有)。 如果 lspci 没有成功返回,你可能需要在 CentOS/RHEL 上安装 LIS。

然后,运行特定于分发的安装命令。

Ubuntu

Ubuntu 打包 NVIDIA 专有驱动程序。 这些驱动程序直接来自 NVIDIA,只是由 Ubuntu 打包,以便系统可以自动管理这些驱动程序。 从另一个源下载和安装驱动程序可能会导致系统损坏。 此外,安装第三方驱动程序需要在启用了 TrustedLaunch 和安全启动的 VM 上执行额外步骤。 他们要求用户为系统添加新的计算机所有者密钥才能启动。 来自 Ubuntu 的驱动程序由 Canonical 签名,适用于安全启动。

  1. 安装 ubuntu-drivers 实用工具:

    sudo apt update && sudo apt install -y ubuntu-drivers-common
    
  2. 安装最新的 NVIDIA 驱动程序:

    sudo ubuntu-drivers install
    
  3. 从 NVIDIA 下载并安装 CUDA 工具包:

    注意

    此示例显示了 Ubuntu 22.04 LTS 的 CUDA 包路径。 替换特定于你计划使用的版本的路径。

    请访问 NVIDIA 下载中心NVIDIA CUDA 资源页 ,获取特定于每个版本的完整路径。

    wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-keyring_1.1-1_all.deb
    sudo apt install -y ./cuda-keyring_1.1-1_all.deb
    sudo apt update
    sudo apt -y install cuda-toolkit-12-3
    

    安装可能需要几分钟。

  4. 验证是否已正确识别 GPU:

    nvidia-smi
    

NVIDIA 驱动程序更新

在部署后,建议定期更新 NVIDIA 驱动程序。

sudo apt update
sudo apt full-upgrade

CentOS

  1. 更新内核(建议)。 如果选择不更新内核,请确保 kernel-develdkms 的版本适合你的内核。

    sudo yum install kernel kernel-tools kernel-headers kernel-devel
    sudo reboot
    
  2. 安装最新的适用于 Hyper-V 和 Azure 的 Linux 集成服务。 通过验证 lspci 的结果来检查是否需要 LIS。 如果所有 GPU 设备都按预期列出,则不需要安装 .LIS。

    LIS 适用于 CentOS,以及 Oracle Linux Red Hat 兼容内核 5.2-5.11、6.0-6.10 和 7.0-7.7。 有关更多详细信息,请参阅 Linux Integration Services 文档。 如果计划使用 CentOS/RHEL 7.8(或更高版本),请跳过此步骤,因为这些版本不再需要 LIS。

    wget https://aka.ms/lis
    tar xvzf lis
    cd LISISO
    
    sudo ./install.sh
    sudo reboot
    
  3. 重新连接到 VM 并使用以下命令继续安装:

    sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
    sudo yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo
    sudo yum clean all
    sudo yum -y install nvidia-driver-latest-dkms cuda-drivers
    

    安装可能需要几分钟。

    注意

    请访问 FedoraNvidia CUDA 存储库,为要使用的 CentOS 或 RHEL 版本选择正确的包。

例如,CentOS 8 和 RHEL 8 需要以下步骤。

sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
sudo yum install dkms

sudo wget https://developer.download.nvidia.com/compute/cuda/repos/rhel8/x86_64/cuda-rhel8.repo -O /etc/yum.repos.d/cuda-rhel8.repo

sudo yum install cuda-drivers
  1. 若要安装完整的 CUDA 工具包,请键入:

    sudo yum install cuda
    

    注意

    如果你看到与缺少 vulkan-filesystem 等包有关的错误消息,则可能需要编辑 /etc/yum.repos.d/rh-cloud,寻找 optional-rpms 并将“已启用”设置为“1”

  2. 重新启动 VM,并继续验证安装。

验证驱动程序安装

要查询 GPU 设备状态,请建立到 VM 的 SSH 连接,并运行与驱动程序一起安装的 nvidia-smi 命令行实用工具。

如果已安装驱动程序,Nvidia SMI 会将 GPU-Util 列为 0%,直到你在 VM 上运行 GPU 工作负载。 驱动程序版本和 GPU 详细信息可能与所示的内容不同。

NVIDIA 设备状态

RDMA 网络连接

可以在支持 RDMA 的 N 系列 VM(例如 NC24r)上启用 RDMA 网络连接,这些 VM 部署在同一可用性集中或虚拟机 (VM) 规模集的单个放置组中。 对于使用 Intel MPI 5.x 或更高版本运行的应用程序,RDMA 网络支持消息传递接口 (MPI) 流量:

分发

在 N 系列 VM 上,在支持 RDMA 连接的 Azure 市场中,从以下映像之一部署支持 RDMA 的 N 系列 VM:

  • Ubuntu 16.04 LTS - 在 VM 上配置 RDMA 驱动程序,并注册 Intel 下载 Intel MPI:

    1. 安装 dapl、rdmacm、ibverbs 和 mlx4

      sudo apt-get update
      
      sudo apt-get install libdapl2 libmlx4-1
      
      
    2. 在 /etc/waagent.conf 中,通过取消注释以下配置行来启用 RDMA。 需要根访问权限才能编辑该文件。

      OS.EnableRDMA=y
      
      OS.UpdateRdmaDriver=y
      
    3. 在 /etc/security/limits.conf 文件中,添加或更改 KB 中的以下内存设置。 需要根访问权限才能编辑该文件。 出于测试目的,可以将 memlock 设置为不受限制。 例如: <User or group name> hard memlock unlimited

      <User or group name> hard    memlock <memory required for your application in KB>
      
      <User or group name> soft    memlock <memory required for your application in KB>
      
    4. 安装 Intel MPI 库。 从 Intel 购买和下载库或下载免费评估版本

      wget http://registrationcenter-download.intel.com/akdlm/irc_nas/tec/9278/l_mpi_p_5.1.3.223.tgz
      

      仅支持 Intel MPI 5.x 运行时。

      有关安装步骤,请参阅 Intel MPI 库安装指南

    5. 启用非根非调试器进程的 ptrace(为最新版本的 Intel MPI 所需)。

      echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
      
  • 基于 CentOS 的 7.4 HPC - 在 VM 上安装 RDMA 驱动程序和 Intel MPI 5.1。

  • 基于 CentOS 的 HPC - CentOS-HPC 7.6 及更高版本(适用于通过 SR-IOV 支持 InfiniBand 的 SKU)。 这些映像预安装了 Mellanox OFED 和 MPI 库。

注意

仅 Mellanox OFED 的 LTS 版本支持 CX3-Pro 卡。 在带有 ConnectX3-Pro 卡的 N 系列 VM 上使用 LTS Mellanox OFED 版本 (4.9-0.1.7.0)。 有关详细信息,请参阅 Linux 驱动程序

另外,某些最新的 Azure 市场 HPC 映像具有 Mellanox OFED 5.1 及更高版本,这些版本不支持 ConnectX3-Pro 卡。 请先检查 HPC 映像中的 Mellanox OFED 版本,然后再将其用于带有 ConnectX3-Pro 卡的 VM。

以下映像是支持 ConnectX3-Pro 卡的最新 CentOS-HPC 映像:

  • OpenLogic:CentOS-HPC:7.6:7.6.2020062900
  • OpenLogic:CentOS-HPC:7_6gen2:7.6.2020062901
  • OpenLogic:CentOS-HPC:7.7:7.7.2020062600
  • OpenLogic:CentOS-HPC:7_7-gen2:7.7.2020062601
  • OpenLogic:CentOS-HPC:8_1:8.1.2020062400
  • OpenLogic:CentOS-HPC:8_1-gen2:8.1.2020062401

疑难解答

  • 可以使用 nvidia-smi 设置持久性模式,以便在需要查询卡时该命令的输出更快。 若要设置持久性模式,请执行 nvidia-smi -pm 1。 请注意,如果重启 VM,此模式设置将消失。 你可以始终将该模式设置编写为在启动时执行。
  • 如果已将 NVIDIA CUDA 驱动程序更新到最新版本,并且发现 RDMA 连接不再工作,请重新安装 RDMA 驱动程序以重新建立该连接。
  • 安装 LIS 期间,如果 LIS 不支持特定的 CentOS/RHEL OS 版本(或内核),则会引发“内核版本不受支持”错误。 请报告此错误以及 OS 和内核版本。
  • 如果作业被 GPU 上的 ECC 错误中断(可纠正或无法纠正),请先检查 GPU 是否符合 Nvidia 的任何 ECC 错误的 RMA 标准。 如果 GPU 符合 RMA 标准,请联系支持人员处理;否则,请按照此处所述,重新启动 VM 以重新附加 GPU。 入侵性较小的方法(如 nvidia-smi -r)不能与 Azure 中部署的虚拟化解决方案一起使用。