Linux を実行している N シリーズ VM に NVIDIA GPU ドライバーをインストールする

注意

この記事では、間もなくサポート終了 (EOL) 状態になる Linux ディストリビューションである CentOS について説明します。 適宜、使用と計画を検討してください。 詳細については、「CentOS のサポート終了に関するガイダンス」を参照してください。

適用対象: ✔️ Linux VM

NVIDIA GPU を動力源とする Azure N シリーズ VM の GPU 機能を利用するには、NVIDIA GPU ドライバーをインストールする必要があります。 NVIDIA GPU ドライバー拡張機能は、N シリーズ VM 上に適切な NVIDIA CUDA または GRID ドライバーをインストールします。 この拡張機能は、Azure Portal または Azure CLI や Azure Resource Manager テンプレートなどのツールを使用してインストールまたは管理します。 サポートされるディストリビューションおよびデプロイ手順については、NVIDIA GPU ドライバー拡張機能のドキュメントを参照してください。

NVIDIA GPU ドライバーを手動でインストールすることを選択した場合、この記事では、サポートされるディストリビューション、ドライバー、インストールおよび検証手順について説明します。 手動でのドライバーのセットアップ情報は、Windows VM でも利用可能です。

N シリーズ VM の仕様、ストレージの容量、およびディスクの詳細については、「GPU Linux VM のサイズ」を参照してください。

サポートされているディストリビューションとドライバー

注意

この記事では、間もなくサポート終了 (EOL) 状態になる Linux ディストリビューションである CentOS について説明します。 それに応じて、使用と計画を検討してください。

NVIDIA CUDA ドライバー

最新の CUDA ドライバーとサポートされているオペレーティング システムについては、NVIDIA の Web サイトを参照してください。 ディストリビューションには最新のサポートされている CUDA ドライバーをインストールまたはアップグレードしてください。

Note

元の NC シリーズ SKU でサポートされている最新の CUDA ドライバーは現在、470.82.01 です。 それ以降のバージョンのドライバーは、NC の K80 カードではサポートされていません。

Note

Azure NVads A10 v5 VM では、GRID 14.1 (510.73) 以降のドライバー バージョンのみがサポートされます。 A10 SKU の vGPU ドライバーは、グラフィックスとコンピューティングの両ワークロードをサポートする統合ドライバーです。

ヒント

CUDA ドライバーを手動で Linux VM にインストールする代わりに、Azure データ サイエンス仮想マシン イメージをデプロイすることもできます。 Ubuntu 16.04 LTS または CentOS 7.4 用の DSVM エディションでは、NVIDIA CUDA ドライバーや CUDA Deep Neural Network ライブラリなどのツールが事前にインストールされています。

NVIDIA GRID ドライバー

Microsoft では、仮想ワークステーションまたは仮想アプリケーションとして使用される NV および NVv3 シリーズ VM 用の NVIDIA GRID ドライバーのインストーラーを再分配します。 次の表に記載されているオペレーティング システム上でのみ、これらの GRID ドライバーを Azure NV VM にインストールします。 これらのドライバーには、Azure での GRID 仮想 GPU ソフトウェアのライセンスが含まれています。 NVIDIA vGPU ソフトウェア ライセンス サーバーを設定する必要はありません。

Azure によって再頒布された GRID ドライバーは、NV シリーズ以外の多くの VM (NC、NCv2、NCv3、ND、NDv2 シリーズの VM など) では機能しませんが、NCasT4v3 シリーズでは機能します。

Distribution Driver
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、ドライバー ブランチ R535(.exe)

NVIDIA vGPU 16.2、ドライバー ブランチ R535(.exe)

Note

Azure NVads A10 v5 VM の場合、お客様は常に最新バージョンのドライバーを使用することをお勧めします。 最新の NVIDIA メジャー ドライバー ブランチ (n) には、以前のメジャー ブランチ (n-1) とのみ下位互換性があります。 たとえば、vGPU 17.x には vGPU 16.x とのみ下位互換性があります。 最新のドライバー ブランチが Azure ホストにロールアウトされると、VM が引き続き n-2 以下で実行された場合にドライバー エラーが発生する可能性があります。

NVs_v3 VM では、vGPU 16 以前のドライバー バージョンのみがサポートされます。

以前のすべての Nvidia GRID ドライバー リンクの完全な一覧については、GitHub を参照してください。

警告

サード パーティ製ソフトウェアを Red Hat 製品にインストールすると、Red Hat サポート条件に影響を与えることがあります。 Red Hat のサポート技術情報記事を参照してください。

N シリーズ VM への CUDA ドライバーのインストール

NVIDIA CUDA Toolkit から N シリーズ VM に CUDA ドライバーをインストールする手順は次のとおりです。

C および C++ の開発者は、GPU アクセラレータを使用したアプリケーションを構築するために、必要に応じて Toolkit 全体をインストールできます。 詳細については、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 ツールキットをダウンロードしてインストールします:

    Note

    この例は、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 が正しく認識されていることを確認します (システムの変更を有効にするには、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
    

    インストールには数分かかる場合があります。

    Note

    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
  1. 必要に応じて完全な CUDA ツールキットをインストールするには、次のように入力します。

    sudo yum install cuda
    

    Note

    vulkan-filesystem などの不足しているパッケージに関連するエラー メッセージが表示された場合は、/etc/yum.repos.d/rh-cloud を編集して、optional-rpms を探し、enabled を 1 に設定する必要があります。

  2. VM を再起動して、インストールの確認に進みます。

ドライバーのインストールの確認

GPU デバイスの状態を照会するには、VM に SSH 接続し、ドライバーと共にインストールされる nvidia-smi コマンド ライン ユーティリティを実行します。

ドライバーがインストールされている場合、VM で GPU ワークロードを実行するまで、Nvidia SMI は GPU-Util を 0% として一覧表示します。 ドライバーのバージョンと GPU の詳細は、次の表示と異なる場合があります。

NVIDIA デバイスの状態

RDMA ネットワーク接続

RDMA ネットワーク接続は、同じ可用性セット内にデプロイまたは仮想マシン (VM) スケール セット内の単一の配置グループにデプロイされた NC24r など、RDMA 対応の N シリーズ VM で有効にすることができます。 RDMA ネットワークは、Intel MPI 5.x 以降のバージョンで実行しているアプリケーションに対して、メッセージ パッシング インターフェイス (MPI) トラフィックをサポートしています。

ディストリビューション

N シリーズ VM で RDMA 接続をサポートする Azure Marketplace で、次のイメージの 1 つから 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. (Intel MPI の最新バージョンに必要な) non-root non-debugger プロセスに対して ptrace を有効にします。

      echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
      
  • CentOS ベースの 7.4 HPC - RDMA ドライバーおよび Intel MPI 5.1 は、VM にインストールされます。

  • CentOS ベースの HPC - CentOS-HPC 7.6 以降 (InfiniBand が SR-IOV 経由でサポートされている SKU の場合)。 これらのイメージには、Mellanox OFED と MPI ライブラリが事前にインストールされています。

Note

CX3-Pro カードは、Mellanox OFED の LTS バージョンによってのみサポートされます。 ConnectX3-Pro カードを搭載する N シリーズ VM では、LTS Mellanox OFED バージョン (4.9-0.1.7.0) を使用してください。 詳細については、Linux ドライバーに関するページを参照してください。

また、最新の Azure Marketplace HPC イメージの一部には、ConnectX3-Pro カードをサポートしていない Mellanox OFED 5.1 以降が使用されています。 ConnectX3-Pro カードを搭載する VM で使用する前に、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 ドライバーをインストールするには、各 VM への SSH 接続を作成して、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 ドライバーのインストール プロセスでは、カーネル モジュールのビルドとインストールをスキップして、署名付きカーネル モジュールの別のソースを選択するオプションが提供されないため、GRID で使用するには、署名付きカーネル モジュールをインストールした後に Linux VM でセキュア ブートを無効にする必要があります。

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 Integration Services をインストールします。 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 に 2 つの行を追加します。

    IgnoreSP=FALSE
    EnableUI=FALSE
    
  9. 存在する場合、/etc/nvidia/gridd.conf から 1 つの行を削除します。

    FeatureType=0
    
  10. VM を再起動して、インストールの確認に進みます。

ドライバーのインストールの確認

GPU デバイスの状態を照会するには、VM に SSH 接続し、ドライバーと共にインストールされる nvidia-smi コマンド ライン ユーティリティを実行します。

ドライバーがインストールされている場合、VM で GPU ワークロードを実行するまで、Nvidia SMI は GPU-Util を 0% として一覧表示します。 ドライバーのバージョンと GPU の詳細は、次の表示と異なる場合があります。

GPU デバイスの状態が照会されたときの出力を示すスクリーンショット。

X11 サーバー

NV または NVv2 の VM へのリモート接続用に X11 サーバーが必要な場合は、グラフィックスのハードウェア アクセラレータを許可している 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" セクションを更新します。

10 進数 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 に更新スクリプト用のエントリを作成します。

トラブルシューティング

  • カードを照会する必要があるときにコマンドがより高速に出力されるように、nvidia-smi を使って永続化モードを設定できます。 永続化モードを設定するには、nvidia-smi -pm 1 を実行します。 VM を再起動すると、モード設定は消失することに注意してください。 常にスタートアップ時に実行するように、モード設定をスクリプト処理できます。
  • NVIDIA CUDA ドライバーを最新バージョンに更新して、RDMA 接続が動作しなくなっていることが判明した場合は、RDMA ドライバーを再インストールして、その接続を再確立してください。
  • LIS で特定の CentOS/RHEL OS バージョン (またはカーネル) がサポートされていない場合は、LIS のインストール中に、"サポートされていないカーネル バージョン" というエラーがスローされます。 OS およびカーネルのバージョンと共に、このエラーを報告してください。
  • GPU の ECC エラーによってジョブが中断された場合 (修正可能または修正不可能)、まず、GPU が Nvidia の ECC エラーに関する RMA 基準のいずれかを満たしているかどうかを確認します。 GPU が RMA の対象である場合は、サポートに連絡して修理を受けてください。それ以外の場合は、こちらの説明に従って、VM を再起動し、GPU を再アタッチします。 nvidia-smi -r などの干渉が少ない方法は、Azure にデプロイされた仮想化ソリューションでは動作しません。

次のステップ