你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在运行 Linux 的 N 系列 VM 上安装 NVIDIA GPU 驱动程序
注意
本文引用了 CentOS,这是一个处于生命周期结束 (EOL) 状态的 Linux 发行版。 请相应地考虑你的使用和规划。 有关详细信息,请参阅 CentOS 生命周期结束指南。
适用于:✔️ Linux VM
若要利用 NVIDIA GPU 支持的 Azure N 系列 VM 的 GPU 功能,必须安装 NVIDIA GPU 驱动程序。 NVIDIA GPU 驱动程序扩展可在 N 系列 VM 上安装适当的 NVIDIA CUDA 或 GRID 驱动程序。 请使用 Azure 门户或工具(例如 Azure CLI 或 Azure 资源管理器模板)安装或管理该扩展。 有关受支持的分发版和部署步骤,请参阅 NVIDIA GPU 驱动程序扩展文档。
如果选择手动安装 NVIDIA GPU 驱动程序,本文提供受支持的分发版、驱动程序以及安装和验证步骤。 针对 Windows VM 也提供了驱动程序手动安装信息。
有关 N 系列 VM 规格、存储容量和磁盘详细信息,请参阅 GPU Linux VM 大小。
支持的分发和驱动程序
NVIDIA CUDA 驱动程序
有关最新的 CUDA 驱动程序和支持的操作系统,请访问 NVIDIA 网站。 确保为你的发行版安装或升级到最新支持的 CUDA 驱动程序。
注意
原始 NC 系列 SKU VM 所支持的最新 CUDA 驱动程序当前为 470.82.01。 NC 中的 K80 卡不支持更高版本的驱动程序。
注意
Azure NVads A10 v5 VM 仅支持 GRID 14.1 (510.73) 或更高驱动程序版本。 A10 SKU 的 vGPU 驱动程序是一个支持图形和计算工作负载的统一驱动程序。
提示
作为一种在 Linux VM 上手动安装 CUDA 驱动程序的替代方法,可以部署 Azure 数据科学虚拟机映像。 Ubuntu 16.04 LTS 的 DSVM 版本会预安装 NVIDIA CUDA 驱动程序、CUDA 深度神经网络库和其他工具。
NVIDIA GRID 驱动程序
Microsoft 为用作虚拟工作站或用于虚拟应用程序的 NV 和 NVv3 系列 VM,重新分发 NVIDIA GRID 驱动程序安装程序。 请仅在下表所列操作系统上的 Azure NV VM 上安装这些 GRID 驱动程序。 这些驱动程序包括 Azure 中 GRID Virtual GPU Software 的许可。 不需要设置 NVIDIA vGPU 软件许可证服务器。
Azure 重新分发的 GRID 驱动程序不适用于大部分非 NV 系列 VM,如 NC、NCv2、NCv3、ND 和 NDv2 系列 VM,但适用于 NCasT4v3 系列。
有关特定 vGPU 和驱动程序分支版本的详细信息,请访问 NVIDIA 网站。
分发 | 驱动程序 |
---|---|
Ubuntu 20.04 LTS、22.04 LTS Red Hat Enterprise Linux 7.9、8.6、8.8、8.9、8.10 SUSE Linux Enterprise Server 15 SP2、12 SP2、12 SP5 Rocky Linux 8.4 |
NVIDIA vGPU 16.5,驱动程序分支 R535 NVIDIA vGPU 16.5,驱动程序分支 R535 |
注意
对于 Azure NVads A10 v5 VM,建议客户始终使用最新版本的驱动程序。 最新的 NVIDIA 主要驱动程序分支 (n) 仅与上一个主要分支 (n-1) 向后兼容。 例如,vGPU 17.x 仅与 vGPU 16.x 向后兼容。 向 Azure 主机推出到最新的驱动器分支时,任何仍然运行 n-2 或更低版本的 VM 都可能会出现驱动程序故障。
NVs_v3 V 仅支持 vGPU 16 或更低版本的驱动程序。
GRID 驱动程序 17.3 目前仅支持 NCasT4_v3 系列 VM。 若要使用此驱动程序,请手动下载并安装 GRID 驱动程序 17.3。 我们在 NVv5 A10 系列上存在许可问题,Azure 正在与 Nvidia 一起积极解决该问题。 请在 NVv5 A10 系列上使用低于 v17.x 的版本。 该扩展当前会安装 16.5 GRID 驱动程序。
有关所有以前的 Nvidia GRID 驱动程序链接的完整列表,请访问 GitHub。
警告
在 Red Hat 产品上安装第三方软件可能会影响 Red Hat 支持条款。 请参阅 Red Hat 知识库文章。
在 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 列出了 VM 上的 PCIe 设备,包括 InfiniBand NIC 和 GPU(如果有)。 如果 lspci 没有成功返回,你可能需要在 CentOS/RHEL 上安装 LIS。
然后,运行特定于分发的安装命令。
Ubuntu
Ubuntu 打包 NVIDIA 专有驱动程序。 这些驱动程序直接来自 NVIDIA,只是由 Ubuntu 打包,以便系统可以自动管理这些驱动程序。 从另一个源下载和安装驱动程序可能会导致系统损坏。 此外,安装第三方驱动程序需要在启用了 TrustedLaunch 和安全启动的 VM 上执行额外步骤。 他们要求用户为系统添加新的计算机所有者密钥才能启动。 来自 Ubuntu 的驱动程序由 Canonical 签名,适用于安全启动。
安装
ubuntu-drivers
实用工具:sudo apt update && sudo apt install -y ubuntu-drivers-common
安装最新的 NVIDIA 驱动程序:
sudo ubuntu-drivers install
安装 GPU 驱动程序后重新启动 VM。
从 NVIDIA 下载并安装 CUDA 工具包:
注意
此示例显示了 Ubuntu 24.04 LTS 的 CUDA 包路径。 替换特定于你计划使用的版本的路径。
请访问 NVIDIA 下载中心 或 NVIDIA CUDA 资源页 ,获取特定于每个版本的完整路径。
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/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-5
安装可能需要几分钟。
安装完成后重启 VM:
sudo reboot
验证是否已正确识别 GPU(重启后):
nvidia-smi
NVIDIA 驱动程序更新
在部署后,建议定期更新 NVIDIA 驱动程序。
sudo apt update
sudo apt full-upgrade
CentOS 或 Red Hat Enterprise Linux
更新内核(建议)。 如果选择不更新内核,请确保
kernel-devel
和dkms
的版本适合你的内核。sudo yum install kernel kernel-tools kernel-headers kernel-devel sudo reboot
安装最新的适用于 Hyper-V 和 Azure 的 Linux 集成服务。 通过验证 lspci 的结果来检查是否需要 LIS。 如果所有 GPU 设备都按预期列出,则不需要安装 .LIS。
LIS 适用于 Red Hat Enterprise Linux、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
重新连接到 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
安装可能需要几分钟。
注意
请访问 Fedora 和 Nvidia 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
若要安装完整的 CUDA 工具包,请键入:
sudo yum install cuda
注意
如果你看到与缺少 vulkan-filesystem 等包有关的错误消息,则可能需要编辑 /etc/yum.repos.d/rh-cloud,寻找 optional-rpms 并将“已启用”设置为“1”
重新启动 VM,并继续验证安装。
验证驱动程序安装
要查询 GPU 设备状态,请建立到 VM 的 SSH 连接,并运行与驱动程序一起安装的 nvidia-smi 命令行实用工具。
如果已安装驱动程序,Nvidia SMI 会将 GPU-Util 列为 0%,直到你在 VM 上运行 GPU 工作负载。 驱动程序版本和 GPU 详细信息可能与所示的内容不同。
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:
安装 dapl、rdmacm、ibverbs 和 mlx4
sudo apt-get update sudo apt-get install libdapl2 libmlx4-1
在 /etc/waagent.conf 中,通过取消注释以下配置行来启用 RDMA。 需要根访问权限才能编辑该文件。
OS.EnableRDMA=y OS.UpdateRdmaDriver=y
在 /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>
安装 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 库安装指南。
启用非根非调试器进程的 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
在 NV 或 NVv3 系列 VM 上安装 GRID 驱动程序
若要在 NV 或 NVv3 系列 VM 上安装 NVIDIA GRID 驱动程序,请通过 SSH 连接到每个 VM,并执行 Linux 发行版的步骤。
Ubuntu
运行
lspci
命令。 验证 NVIDIA M60 卡是否显示为 PCI 设备。安装更新。
sudo apt-get update sudo apt-get upgrade -y sudo apt-get dist-upgrade -y sudo apt-get install build-essential ubuntu-desktop -y sudo apt-get install linux-azure -y
禁用 Nouveau 内核驱动程序,该驱动程序与 NVIDIA 驱动程序不兼容。 (只能在 NV 或 NVv2 VM 上使用 NVIDIA 驱动程序。)若要禁用此驱动程序,请在
/etc/modprobe.d
中创建一个名为nouveau.conf
的文件,其中包含以下内容:blacklist nouveau blacklist lbm-nouveau
重新启动 VM,并重新连接。 退出 X 服务器:
sudo systemctl stop lightdm.service
下载并安装 GRID 驱动程序:
wget -O NVIDIA-Linux-x86_64-grid.run https://go.microsoft.com/fwlink/?linkid=874272 chmod +x NVIDIA-Linux-x86_64-grid.run sudo ./NVIDIA-Linux-x86_64-grid.run
当系统询问你是否要运行 nvidia-xconfig 实用程序以更新 X 配置文件时,请选择“是”。
完成安装后,将 /etc/nvidia/gridd.conf.template 复制到位于 /etc/nvidia/ 的新文件 gridd.conf
sudo cp /etc/nvidia/gridd.conf.template /etc/nvidia/gridd.conf
将下列内容添加到
/etc/nvidia/gridd.conf
:IgnoreSP=FALSE EnableUI=FALSE
将以下内容从
/etc/nvidia/gridd.conf
中删除(如果其存在):FeatureType=0
重新启动 VM,并继续验证安装。
在已启用安全启动的 Ubuntu 上安装 GRID 驱动程序
GRID 驱动程序安装过程不提供任何选项来跳过内核模块生成和安装并选择其他已签名的内核模块源,因此在安装已签名的内核模块后,必须在 Linux VM 中禁用安全启动,以便将它们与 GRID 配合使用。
CentOS 或 Red Hat Enterprise Linux
更新内核和 DKMS(建议)。 如果选择不更新内核,请确保
kernel-devel
和dkms
的版本适合你的内核。sudo yum update sudo yum install kernel-devel sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm sudo yum install dkms sudo yum install hyperv-daemons
禁用 Nouveau 内核驱动程序,该驱动程序与 NVIDIA 驱动程序不兼容。 (只能在 NV 或 NV3 VM 上使用 NVIDIA 驱动程序。)若要执行此操作,请在
/etc/modprobe.d
中创建一个名为nouveau.conf
的文件,其中包含以下内容:blacklist nouveau blacklist lbm-nouveau
重新启动 VM、重新进行连接并安装最新适用于 Hyper-V 和 Azure 的 Linux 集成服务。 通过验证 lspci 的结果来检查是否需要 LIS。 如果所有 GPU 设备都按预期列出,则不需要安装 .LIS。
如果计划使用 CentOS/RHEL 7.8(或更高版本),请跳过此步骤,因为这些版本不再需要 LIS。
wget https://aka.ms/lis tar xvzf lis cd LISISO sudo ./install.sh sudo reboot
重新连接到 VM 并运行
lspci
命令。 验证 NVIDIA M60 卡是否显示为 PCI 设备。下载并安装 GRID 驱动程序:
wget -O NVIDIA-Linux-x86_64-grid.run https://go.microsoft.com/fwlink/?linkid=874272 chmod +x NVIDIA-Linux-x86_64-grid.run sudo ./NVIDIA-Linux-x86_64-grid.run
当系统询问你是否要运行 nvidia-xconfig 实用程序以更新 X 配置文件时,请选择“是”。
完成安装后,将 /etc/nvidia/gridd.conf.template 复制到位于 /etc/nvidia/ 的新文件 gridd.conf
sudo cp /etc/nvidia/gridd.conf.template /etc/nvidia/gridd.conf
添加两行到
/etc/nvidia/gridd.conf
:IgnoreSP=FALSE EnableUI=FALSE
从
/etc/nvidia/gridd.conf
中删除一行(如果它存在):FeatureType=0
重新启动 VM,并继续验证安装。
验证驱动程序安装
要查询 GPU 设备状态,请建立到 VM 的 SSH 连接,并运行与驱动程序一起安装的 nvidia-smi 命令行实用工具。
如果已安装驱动程序,Nvidia SMI 会将 GPU-Util 列为 0%,直到你在 VM 上运行 GPU 工作负载。 驱动程序版本和 GPU 详细信息可能与所示的内容不同。
X11 服务器
如果需要使用 X11 服务器远程连接到 NV 或 NVv2 VM,建议使用 x11vnc,因为它允许硬件图形加速。 必须手动将 M60 设备的 BusID 添加到 X11 配置文件(通常为 etc/X11/xorg.conf
)中。 添加 "Device"
节,如下所示:
Section "Device"
Identifier "Device0"
Driver "nvidia"
VendorName "NVIDIA Corporation"
BoardName "Tesla M60"
BusID "PCI:0@your-BusID:0:0"
EndSection
此外,更新 "Screen"
节以使用此设备。
通过运行以下命令可找到十进制 BusID
nvidia-xconfig --query-gpu-info | awk '/PCI BusID/{print $4}'
重新分配或重新启动 VM 后,BusID 可能会更改。 因此,重新启动 VM 后,可能需要创建脚本来更新 X11 配置中的 BusID。 例如,创建名为 busidupdate.sh
(或所选的其他名称)的脚本,其内容如下所示:
#!/bin/bash
XCONFIG="/etc/X11/xorg.conf"
OLDBUSID=`awk '/BusID/{gsub(/"/, "", $2); print $2}' ${XCONFIG}`
NEWBUSID=`nvidia-xconfig --query-gpu-info | awk '/PCI BusID/{print $4}'`
if [[ "${OLDBUSID}" == "${NEWBUSID}" ]] ; then
echo "NVIDIA BUSID not changed - nothing to do"
else
echo "NVIDIA BUSID changed from \"${OLDBUSID}\" to \"${NEWBUSID}\": Updating ${XCONFIG}"
sed -e 's|BusID.*|BusID '\"${NEWBUSID}\"'|' -i ${XCONFIG}
fi
然后,在 /etc/rc.d/rc3.d
中为更新脚本创建一个条目,以便在启动时以 root 身份调用该脚本。
疑难解答
- 可以使用
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 中部署的虚拟化解决方案一起使用。
后续步骤
- 若要捕获安装了 NVIDIA 驱动程序的 Linux VM 映像,请参阅如何通用化和捕获 Linux 虚拟机。