Ubuntu 20.04にNVIDIA Driverをインストール

Ubuntu 20.04 に NVIDIA ドライバをインストールします。これにより、FFmpeg で NVENC を使用したハードウェアエンコードや GPU サポートされた TensorFlow などを使用することができます。

環境

私の環境は以下のとおりです。

OS

  • Ubuntu 20.04.2 LTS (5.11.0-25-generic)

ビデオカード

  • MSI GeForce GTX 1050 2GT LP

手順

まず、インストールできそうなドライバ一覧を確認してみます。下記のコマンドを実行します。

ubuntu-drivers devices

結果、

WARNING:root:_pkg_get_support nvidia-driver-390: package has invalid Support Legacyheader, cannot determine support level
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001C81sv00001462sd00008C97bc03sc00i00
vendor   : NVIDIA Corporation
model    : GP107 [GeForce GTX 1050]
driver   : nvidia-driver-460-server - distro non-free
driver   : nvidia-driver-418-server - distro non-free
driver   : nvidia-driver-460 - distro non-free
driver   : nvidia-driver-470 - distro non-free recommended
driver   : nvidia-driver-390 - distro non-free
driver   : nvidia-driver-450-server - distro non-free
driver   : xserver-xorg-video-nouveau - distro free builtin

この時点では、nvidia-smi コマンドを実行することができません。

$ nvidia-smi
Command 'nvidia-smi' not found, but can be installed with:
sudo apt install nvidia-utils-435         # version 435.21-0ubuntu7, or
sudo apt install nvidia-utils-440         # version 440.82+really.440.64-0ubuntu6
sudo apt install nvidia-340               # version 340.108-0ubuntu5.20.04.2
sudo apt install nvidia-utils-390         # version 390.144-0ubuntu0.20.04.1
sudo apt install nvidia-utils-450-server  # version 450.142.00-0ubuntu0.20.04.1
sudo apt install nvidia-utils-460         # version 460.91.03-0ubuntu0.20.04.1
sudo apt install nvidia-utils-418-server  # version 418.211.00-0ubuntu0.20.04.1
sudo apt install nvidia-utils-460-server  # version 460.91.03-0ubuntu0.20.04.1
sudo apt install nvidia-utils-470         # version 470.57.02-0ubuntu0.20.04.1

recommended されているドライバをインストールし、OS を再起動します。

sudo ubuntu-drivers install
sudo reboot

再起動後、nvidia-smi コマンドを実行してみます。ドライバのバージョンが 470、CUDA のバージョンが 11.4 であることがわかります。

$ nvidia-smi
Sat Jul 24 21:35:37 2021       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.57.02    Driver Version: 470.57.02    CUDA Version: 11.4     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:01:00.0  On |                  N/A |
| 45%   45C    P0    N/A /  75W |    406MiB /  1966MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A       918      G   /usr/lib/xorg/Xorg                215MiB |
|    0   N/A  N/A      1218      G   /usr/bin/gnome-shell              188MiB |
+-----------------------------------------------------------------------------+

再インストール

私の環境では、Linux PC を電源ボタン長押しでシャットダウンすると、次回起動した際に NVIDIA ドライバが壊れる?ことがよくあります。

ERROR: for xxx  Cannot start service xxx: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: Running hook #0:: error running hook: exit status 1, stdout: , stderr: nvidia-container-cli: initialization error: nvml error: driver not loaded: unknown
ERROR: Encountered errors while bringing up the project.

そのような場合は、NVIDIA ドライバをいったんアンインストールし、再度インストールします。

sudo apt remove nvidia-driver-*
sudo apt autoremove
sudo ubuntu-drivers install
sudo reboot

参考情報

NVIDIA の方の投稿によると、NVIDIA ドライバは cuda-drivers パッケージでインストールすることがオススメとのことです。

Medium

※ この記事は以前私が Qiita に書いたものを、現状に合わせて更新したものです。(内容、結構変わりました)…