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 のサイズ」を参照してください。
サポートされているディストリビューションとドライバー
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 用の 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 シリーズでは機能します。
特定の vGPU とドライバー ブランチのバージョンの詳細については、NVIDIA の Web サイトを参照してください。
Distribution | Driver |
---|---|
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 |
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 以前のドライバー バージョンのみがサポートされます。
GRID Driver 17.3 では現在、NCasT4_v3 シリーズの VM のみがサポートされています。 このドライバーを使用するには、手動で GRID Driver 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 Toolkit から N シリーズ VM に CUDA ドライバーをインストールする手順は次のとおりです。
C および C++ の開発者は、GPU アクセラレータを使用したアプリケーションを構築するために、必要に応じて Toolkit 全体をインストールできます。 詳細については、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 ツールキットをダウンロードしてインストールします:
Note
この例は、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
インストールには数分かかる場合があります。
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
必要に応じて完全な CUDA ツールキットをインストールするには、次のように入力します。
sudo yum install cuda
Note
vulkan-filesystem などの不足しているパッケージに関連するエラー メッセージが表示された場合は、/etc/yum.repos.d/rh-cloud を編集して、optional-rpms を探し、enabled を 1 に設定する必要があります。
VM を再起動して、インストールの確認に進みます。
ドライバーのインストールの確認
GPU デバイスの状態を照会するには、VM に SSH 接続し、ドライバーと共にインストールされる nvidia-smi コマンド ライン ユーティリティを実行します。
ドライバーがインストールされている場合、VM で GPU ワークロードを実行するまで、Nvidia SMI は GPU-Util を 0% として一覧表示します。 ドライバーのバージョンと GPU の詳細は、次の表示と異なる場合があります。
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 をダウンロードします。
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 ライブラリのインストール ガイドをご覧ください。
(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
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 ドライバーのインストール プロセスでは、カーネル モジュールのビルドとインストールをスキップして、署名付きカーネル モジュールの別のソースを選択するオプションが提供されないため、GRID で使用するには、署名付きカーネル モジュールをインストールした後に Linux VM でセキュア ブートを無効にする必要があります。
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 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
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
に 2 つの行を追加します。IgnoreSP=FALSE EnableUI=FALSE
存在する場合、
/etc/nvidia/gridd.conf
から 1 つの行を削除します。FeatureType=0
VM を再起動して、インストールの確認に進みます。
ドライバーのインストールの確認
GPU デバイスの状態を照会するには、VM に SSH 接続し、ドライバーと共にインストールされる nvidia-smi コマンド ライン ユーティリティを実行します。
ドライバーがインストールされている場合、VM で GPU ワークロードを実行するまで、Nvidia SMI は GPU-Util を 0% として一覧表示します。 ドライバーのバージョンと 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 にデプロイされた仮想化ソリューションでは動作しません。
次のステップ
- NVIDIA ドライバーがインストールされている Linux VM のイメージをキャプチャするには、「Linux 仮想マシンを一般化してキャプチャする方法」を参照してください。