在執行 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 Resource Manager 範本之類的工具,安裝或管理擴充功能。 如需支援的發佈和部署步驟,請參閱 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 系列虛擬機器或虛擬應用程式,重新發佈 NVIDIA GRID 驅動程式安裝程式。 請僅將這些 GRID 驅動程式安裝在 Azure NV 虛擬機器上,且僅安裝在下表所列的作業系統上。 這些驅動程式包含在 Azure 的 GRID 虛擬 GPU 軟體的授權中。 您不需要設定 NVIDIA vGPU 軟體授權伺服器。
Azure 分散的 GRID 驅動程式無法在大多數非 NV 系列虛擬機器上使用,如 NC、NCv2、NCv3、ND 和 NDv2 系列 VM,但可以在 NCasT4v3 系列上使用。
如需特定 vGPU 和驅動程式分支版本的詳細資訊,請造訪 NVIDIA 網站。
Distribution | 驅動程式 |
---|---|
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 17.3,驅動程式分支 R550(.exe) NVIDIA vGPU 16.5,驅動程式分支 R535(.exe) |
注意
針對 Azure NVads A10 v5 VM,我們建議客戶一律處於最新的驅動程式版本。 最新的 NVIDIA 主要驅動程式分支 (n) 只是與先前的主要分支 (n-1) 的回溯相容。 例如,vGPU 17.x 僅與 vGPU 16.x 回溯相容。 當最新的磁碟機分支推出至 Azure 主機時,任何仍在執行 n-2 或更低層級的 VM 都可能會看到驅動程式失敗。
NVs_v3 虛擬機器僅支援 vGPU 16 或更低版本的驅動程式版本。
如需先前所有 Nvidia GRID 驅動程式連結的完整清單,請造訪GitHub。
警告
在 Red Hat 產品上安裝第三方軟體可能會影響 Red Hat 支援條款。 請參閱 Red Hat 知識庫文件 (英文)。
在 N 系列 VM 上安裝 CUDA 驅動程式
以下是從 N 系列 VM 上的 NVIDIA CUDA Toolkit 安裝 CUDA 驅動程式的步驟。
C 和 C++ 開發人員可以選擇性地安裝完整 Toolkit,以建置 GPU 加速的應用程式。 如需詳細資訊,請參閱 CUDA 安裝指南。
若要安裝 CUDA 驅動程式,請透過 SSH 連線至每部 VM。 若要確認系統有 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 Integration Services。 驗證 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 Toolkit,請輸入︰
sudo yum install cuda
注意
如果您看到與缺少套件相關的錯誤訊息,例如 vulkan-filesystem,建議您編輯 /etc/yum.repos.d/rh-cloud ,尋找 optional-rpms 並將 enabled 設定為 1
重新啟動 VM 並繼續確認安裝。
確認驅動程式安裝
若要查詢 GPU 裝置狀態,請透過 SSH 連線至 VM 並執行與驅動程式一起安裝的 nvidia-smi 命令列公用程式。
如果已安裝驅動程式,Nvidia SMI 會將 GPU-Util 列為 0%,直到您在 VM 上執行 GPU 工作負載為止。 您的驅動程式版本和 GPU 詳細資料可能會與顯示的不同。
RDMA 網路連線
可在支援 RDMA 的 N 系列 VM (例如部署在同一個可用性設定組或虛擬機器 (VM) 擴展集的單一放置群組中 NC24r) 上啟用 RDMA 網路連線能力。 RDMA 網路可針對搭配 Intel MPI 5.x 或更新版本執行的應用程式,支援訊息傳遞介面 (MPI) 流量:
分佈
從 Azure Marketplace 中支援 N 系列 VM 上 RDMA 連線的其中一個映像,部署支援 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 Library。 從 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 Library 安裝指南 \(英文\)。
針對非根、非偵錯工具的處理程序啟用 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 程式庫。
注意
僅有 LTS 版本的 Mellanox OFED 支援 CX3-Pro 卡。 在搭配 ConnectX3-Pro 卡的 N 系列 VM 上使用 LTS Mellanox OFED (4.9-0.1.7.0) 版本。 如需詳細資訊,請參閱 Linux 驅動程式。
此外,某些最新的 Azure Marketplace HPC 映像具有 Mellanox OFED 5.1 和更新版本,而這些版本不支援 ConnectX3-Pro 卡。 在搭配 ConnectX3-Pro 卡的 VM 上使用 Mellanox OFED 之前,請先檢查 HPC 映像中的 Mellanox OFED 版本。
下列映像是支援 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
停用與 NVIDIA 驅動程式不相容的 Nouveau 核心驅動程式。 (僅在 NV 或 NVv2 VM 上使用 NVIDIA 驅動程式。)若要停用驅動程式,請使用下列內容以在名為
nouveau.conf
的/etc/modprobe.d
中建立檔案: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
停用與 NVIDIA 驅動程式不相容的 Nouveau 核心驅動程式。 (僅在 NV 或 NV3 VM 上使用 NVIDIA 驅動程式。)若要這樣做,請使用下列內容以在名為
nouveau.conf
的/etc/modprobe.d
中建立檔案: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 裝置狀態,請透過 SSH 連線至 VM 並執行與驅動程式一起安裝的 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 虛擬機器。