在執行 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 大小

支援的散發套件和驅動程式

警告

本文參考 CentOS,這是接近生命週期結束 (EOL) 狀態的 Linux 發行版本。 請據以考慮您的使用方式和規劃。

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 或 CentOS 7.4 的 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

SUSE Linux Enterprise Server 15 SP2、12 SP2、12 SP5

Rocky Linux 8.4
NVIDIA vGPU 16.3, driver branch R535(.exe)

NVIDIA vGPU 16.2, driver branch R535(.exe)

注意

針對 Azure NVads A10 v5 VM,我們建議客戶一律處於最新的驅動程式版本。 最新的 NVIDIA 主要驅動程式分支(n) 只是與先前的主要分支(n-1) 的回溯相容性。 例如,vGPU 17.x 僅與 vGPU 16.x 回溯相容。 當最新的磁碟驅動器分支推出至 Azure 主機時,任何仍在執行 n-2 或更低層級的 VM 都可能會看到驅動程序失敗。

NVs_v3 VM 僅支援 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 命令輸出

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
    

    安裝 GPU 驅動程式之後重新啟動 VM。

  3. 從 NVIDIA 下載並安裝 CUDA 工具組:

    注意

    範例顯示 Ubuntu 22.04 的 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 已正確辨識(您可能需要重新啟動 VM,系統變更才會生效):

    nvidia-smi
    

NVIDIA 驅動程式更新

我們建議您在部署後定期更新 NVIDIA 驅動程式。

sudo apt update
sudo apt full-upgrade

CentOS 或 Red Hat Enterprise Linux

  1. 更新核心 (建議)。 若您選擇不要更新核心,請務必確認 kernel-develdkms 版本適合您的核心。

    sudo yum install kernel kernel-tools kernel-headers kernel-devel
    sudo reboot
    
  2. 請安裝最新 適用 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
    
  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 Toolkit,請輸入︰

    sudo yum install cuda
    

    注意

    如果您看到與缺少套件相關的錯誤訊息,例如 vulkan-filesystem,建議您編輯 /etc/yum.repos.d/rh-cloud ,尋找 optional-rpms 並將 enabled 設定為 1

  2. 重新啟動 VM 並繼續確認安裝。

確認驅動程式安裝

若要查詢 GPU 裝置狀態,請透過 SSH 連線至 VM 並執行與驅動程式一起安裝的 nvidia-smi 命令列公用程式。

如果已安裝驅動程式,Nvidia SMI 會將 GPU-Util 列為 0%,直到您在 VM 上執行 GPU 工作負載為止。 您的驅動程式版本和 GPU 詳細資料可能會與顯示的不同。

NVIDIA 裝置狀態

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:

    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 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 安裝指南 \(英文\)。

    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 程式庫。

注意

僅有 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

  1. 執行 lspci 命令。 請確認 NVIDIA M60 卡可以顯示為 PCI 裝置。

  2. 安裝更新。

    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
    
  3. 停用與 NVIDIA 驅動程式不相容的 Nouveau 核心驅動程式。 (僅在 NV 或 NVv2 VM 上使用 NVIDIA 驅動程式。)若要停用驅動程式,請使用下列內容以在名為 nouveau.conf/etc/modprobe.d 中建立檔案:

    blacklist nouveau
    blacklist lbm-nouveau
    
  4. 重新啟動 VM,並重新連線。 結束 X 伺服器:

    sudo systemctl stop lightdm.service
    
  5. 下載並安裝 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
    
  6. 當系統詢問您是否要執行 nvidia-xconfig 公用程式來更新您的 X 組態檔時,選取 [是]

  7. 安裝完成後,請將 /etc/nvidia/gridd.conf.template 複製到位於 /etc/nvidia/ 的新檔案 gridd.conf

    sudo cp /etc/nvidia/gridd.conf.template /etc/nvidia/gridd.conf
    
  8. 將下面內容新增至 /etc/nvidia/gridd.conf

    IgnoreSP=FALSE
    EnableUI=FALSE
    
  9. /etc/nvidia/gridd.conf 移除下列內容 (如果有的話):

    FeatureType=0
    
  10. 重新啟動 VM 並繼續確認安裝。

在已啟用安全開機的 Ubuntu 上安裝 GRID 驅動程式

GRID 驅動程式安裝程序不提供任何選項來跳過核心模組建置與安裝,以及選取不同的已簽署核心模組來源,因此必須在 Linux VM 中停用安全開機,才能在安裝已簽署核心模組之後,將其與 GRID 搭配使用。

CentOS 或 Red Hat Enterprise Linux

  1. 更新核心和 DKMS (建議)。 若您選擇不要更新核心,請務必確認 kernel-develdkms 版本適合您的核心。

    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
    
  2. 停用與 NVIDIA 驅動程式不相容的 Nouveau 核心驅動程式。 (僅在 NV 或 NV3 VM 上使用 NVIDIA 驅動程式。)若要這樣做,請使用下列內容以在名為 nouveau.conf/etc/modprobe.d 中建立檔案:

    blacklist nouveau
    blacklist lbm-nouveau
    
  3. 重新啟動 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
    
    
  4. 重新連線至 VM 並執行 lspci 命令。 請確認 NVIDIA M60 卡可以顯示為 PCI 裝置。

  5. 下載並安裝 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
    
  6. 當系統詢問您是否要執行 nvidia-xconfig 公用程式來更新您的 X 組態檔時,選取 [是]

  7. 安裝完成後,請將 /etc/nvidia/gridd.conf.template 複製到位於 /etc/nvidia/ 的新檔案 gridd.conf

    sudo cp /etc/nvidia/gridd.conf.template /etc/nvidia/gridd.conf
    
  8. 新增兩行至 /etc/nvidia/gridd.conf

    IgnoreSP=FALSE
    EnableUI=FALSE
    
  9. 如果有,請從 /etc/nvidia/gridd.conf 中移除一行:

    FeatureType=0
    
  10. 重新啟動 VM 並繼續確認安裝。

確認驅動程式安裝

若要查詢 GPU 裝置狀態,請透過 SSH 連線至 VM 並執行與驅動程式一起安裝的 nvidia-smi 命令列公用程式。

如果已安裝驅動程式,Nvidia SMI 會將 GPU-Util 列為 0%,直到您在 VM 上執行 GPU 工作負載為止。 您的驅動程式版本和 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 的虛擬化解決方案。

下一步