3行で
- 毎度毎度何かしらやらかしてくれるnvidiaのアレコレを簡単に構築したい
- dockerは19.03以上でGPU対応したので、構築済みのdockerイメージを使う
- ホストOSに必要なのはGPUのドライバのみ。CUDA不要
必要な作業
- OSのインストール
- GPUドライバのインストール
- dockerのインストール
- nvidia-container-toolkitのインストール
完成形
user@host:~$ sudo docker run --rm -it --gpus all nvidia/cuda:7.5-devel
root@695b31f3738d:/# nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2015 NVIDIA Corporation
Built on Tue_Aug_11_14:27:32_CDT_2015
Cuda compilation tools, release 7.5, V7.5.17
root@695b31f3738d:/# nvidia-smi
Fri Jun 5 11:19:48 2020
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.59 Driver Version: 440.59 CUDA Version: 10.2 |
|-------------------------------+----------------------+----------------------+
| 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 GTX 1070 Off | 00000000:01:00.0 On | N/A |
| 28% 36C P8 10W / 151W | 573MiB / 8117MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
+-----------------------------------------------------------------------------+
root@695b31f3738d:/#
こんなんになります。
nvidia/cuda:***-devel
の***
の部分を10.0
だったり9.0
だったりにするとCUDAのバージョンを変えられる。
ホストOSでやるとめんどいやつ。
OSのインストール
ここなどからisoを取得してRufusなどでライブUSBを作ります。
USBさしてPCを再起動してBIOSの画面で起動の優先順位をUSBを最優先にすれば、あとは指示にしたがうだけ。
GPUドライバのインストール
sudo ubuntu-drivers autoinstall
やってる間に別のターミナル立ち上げてnouveauを無効にしましょう。blacklist-nouveau.conf
というファイルを作り、下記の内容を書き込んでおく。
sudo nano /etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
options nouveau modeset=0
ドライバのインストールが終わったタイミングでカーネルモジュール再読込
sudo update-initramfs -u
PCを再起動してnvidia-smi
を行う。GPUの情報っぽいものが出ればドライバインストール成功。
(不要)CUDAのインストール
docker前提ならホストOSにCUDAは不要です。
The machine running the CUDA container only requires the NVIDIA driver, the CUDA toolkit doesn't have to be installed.
https://github.com/NVIDIA/nvidia-docker/wiki/CUDA
CUDAのバージョンなり、その他機械学習フレームワークのバージョンだったりを色々変えたいモチベーションはあると思うので、dockerでいいのではないかと思います。構築簡単だし。
dockerのインストール
公式
19.03以降のバージョンをインストールしてください。
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
成功していれば
sudo docker run hello-world
が通ります。
nvidia-container-toolkitのインストール
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker
うまくいっていれば
sudo docker run --rm --gpus all nvidia/cuda:7.5-devel nvcc --version
が
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2015 NVIDIA Corporation
Built on Tue_Aug_11_14:27:32_CDT_2015
Cuda compilation tools, release 7.5, V7.5.17
を返します。別のバージョンのCUDAも簡単に試せて
sudo docker run --rm --gpus all nvidia/cuda:10.0-devel nvcc --version
などとすればOKです。
補足
tensorflowもこの方法で導入できます。
https://www.tensorflow.org/install/docker
探せばメジャーなフレームワークはdockerイメージがありそうで、もうホストOSに環境構築する必要はないのでは。