Edited at

Ubuntu 18.04 GeForce RTX 2080 GPU Deep Learning


  • Ubuntu 18.04

  • GeForce RTX 2080

の構成で GPU を動作させるための設定手順。

まだ書きかけだがその内ちゃんと書き直すかも。


Disable Secure boot

sudo apt install mokutil -y

sudo mokutil --disable-validation

Change Secure boot state を選んで、パスワードを入力した後 YES を選択して再起動する。すると解像度が適切なものになった。

dmesg | grep secure

[ 0.000000] secureboot: Secure boot disabled

Secure boot が無効になったことが確認できた。


Disable nouveau

$ lsmod | grep -i nouveau

nouveau 1716224 0
i2c_algo_bit 16384 1 nouveau
ttm 106496 1 nouveau
drm_kms_helper 172032 1 nouveau
mxm_wmi 16384 1 nouveau
drm 401408 3 drm_kms_helper,ttm,nouveau
wmi 24576 4 intel_wmi_thunderbolt,wmi_bmof,mxm_wmi,nouveau
video 45056 1 nouveau

sudo nano /etc/modprobe.d/blacklist-nvidia-nouveau.conf

blacklist nouveau

options nouveau modset=0

sudo update-initramfs -u

Reboot してはいけない。


Install NVIDIA Driver


Enter CUI mode

自分の環境だと Ctrl + Alt + F3 で CUI mode に入り Ctrl + Alt + F2 で GUI mode に戻れた。


Install driver

sudo add-apt-repository ppa:graphics-drivers/ppa

sudo apt update
ubuntu-drivers devices
sudo apt install nvidia-driver-410
# enter password
sudo reboot
# enroll & enter password

$ nvidia-smi

Tue Jan 29 13:34:45 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.78 Driver Version: 410.78 CUDA Version: 10.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce RTX 2080 Off | 00000000:01:00.0 On | N/A |
| 24% 32C P8 14W / 215W | 337MiB / 7949MiB | 2% Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1780 G /usr/lib/xorg/Xorg 18MiB |
| 0 1838 G /usr/bin/gnome-shell 57MiB |
| 0 2475 G /usr/lib/xorg/Xorg 116MiB |
| 0 2616 G /usr/bin/gnome-shell 84MiB |
| 0 3539 G ...uest-channel-token=16844326574801113722 58MiB |
+-----------------------------------------------------------------------------+


CUDA と cuDNN はインストールしない

conda もしくは nvidia-docker に管理を任せるので CUDA や cuDNN のインストールはしない。


Install conda

conda を使いたい人はこちら。

$ wget "https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh"

$ sh Miniconda3-latest-Linux-x86_64.sh
$ conda -V
conda 4.5.12


nvidia-docker

nvidia-docker を使いたい人はこちら。


Install nvidia-docker

上記を参考にして nvidia-docker をインストールする。Docker が既にインストールされていることが必要。


Rootless Docker

Rootless Docker を利用している場合は上のリンク先のような対応が必要。

sudo vim /etc/nvidia-container-runtime/config.toml

具体的には上記ファイルを以下のように書き換える。

- #no-cgroups = false

+ no-cgroups = true

マシンを再起動した後、以下のように言われた場合は systemctl --user start docker を実行すると良い。

Cannot connect to the Docker daemon at unix:///run/user/1000/docker.sock. Is the docker daemon running?

ログインの度に上記コマンドを実行しなければならない状態を解決するには sudo loginctl enable-linger username を実行しておくと良いかもしれない。


GPU の動作確認

nvidia-docker の場合は以下のようにしてコンテナを起動する。

docker run -it --gpus all nvidia/cuda:10.0-devel-ubuntu18.04 bash

Docker 19.03 より --gpus all が利用できる。


PyTorch

python3 を実行してインタラクティブモードで確認する。

>>> import torch 

>>> print(torch.cuda.is_available())
True
>>> torch.cuda.get_device_name(0)
'GeForce RTX 2080'


TensorFlow and Keras

python3 を実行してインタラクティブモードで確認する。

from tensorflow.python.client import device_lib

print(device_lib.list_local_devices())

上記を実行すると以下のように利用できるデバイスの一覧を確認できる。

[name: "/device:CPU:0"

device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 9038648218982750694
, name: "/device:XLA_GPU:0"
device_type: "XLA_GPU"
memory_limit: 17179869184
locality {
}
incarnation: 2090976096258654801
physical_device_desc: "device: XLA_GPU device"
, name: "/device:XLA_CPU:0"
device_type: "XLA_CPU"
memory_limit: 17179869184
locality {
}
incarnation: 9284591186135588828
physical_device_desc: "device: XLA_CPU device"
]


MNIST

TBW