その3で Fedora25 と CUDA のインストールが終わりました。
いよいよ Deep Learning を始めたい!となるのも分かりますが、その前に Docker と nvidia-docker をインストールしましょう。
作業を Docker コンテナ上で行うべき3つの理由
- ホストの環境が汚れない
- 前の環境を残したまま新しい環境を構築できる
- Docker ならオーバーヘッドがほとんど存在しない
Deep Learning はまだ新しい技術で、(定番はありますが)枯れた方法というものがありません。
今後も色々な手法が出て来るでしょうし、正解という方法もまだ無いのが現状です。
何か環境を変えたいとなった時に、 Docker コンテナで新たに構築することで「以前の環境が残っていたために安定しない」という事がなくなります。
また、「新しい環境を試してみたけどやっぱり前の方が良かった」となった時も切り戻しが比較的簡単にできます。
それなら ESXi や VirtualBox でも良いの?
ESXi や VirtualBox でも GPU をパススルーできれば問題なく使えると思います。
ですがオーバーヘッドが Docker と比べて高い事や、「一度に1つの仮想マシンしか GPU を使えないこと」がデメリットになります。
ホスト直接の方がオーバーヘッドは少ない!
- Docker だと学習コストが増える
- CUDA の学習に全力投球したい
どうぞ、ホスト上で直接ご利用ください。
その方が一番性能を発揮できるのは間違いありませんし、先ずはやってみるというのは何より重要です。
KickStart を使えば、そこまで再構築の手間もないと思います。
それでも Docker も面白そうだなと思われるなら、この記事が何かの助けになれば幸いです。
Docker インストール
Docker CE インストール
公式サイトの通り実行するだけです。
なお、特に断りがない限り全て root で実行します。
既存 Docker のアンインストール
dnf remove docker docker-common container-selinux docker-selinux docker-engine
リポジトリインストール
dnf install dnf-plugins-core
dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
dnf config-manager --set-enabled docker-ce-edge
Docker CE (Comunity Edition) のインストール
dnf install docker-ce
Docker Compose インストール
アップデートに容易に対応する為、 pip を使ってインストールします。
pip3 のアップデート
pip3 install -U pip
docker-compose のインストール
pip3 install docker-compose
一般ユーザの Docker 利用登録
Docker はプロセスが全て root で実行されます。
この為、通常は一般ユーザでは実行できません。
一般ユーザに Docker の実行権限を与えたい場合は、以下を実行します。
usermod -aG docker <ユーザー名>
nVidia Docker インストール
ここのCentOS用手順でインストールします。
wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.1/nvidia-docker-1.0.1-1.x86_64.rpm
rpm -i /tmp/nvidia-docker*.rpm && rm /tmp/nvidia-docker*.rpm
systemd 修正
systemctl edit nvidia-docker
以下を追記します。
[Service]
ExecStart=
ExecStart=/usr/bin/nvidia-docker-plugin -s $SOCK_DIR -d /usr/local/nvidia
ドライバー配置ディレクトリの作成
mkdir -p /usr/local/nvidia
chown -R nvidia-docker. /use/local/nvidia
実行テスト
Docker を実行したいユーザーで、以下を実行します。
nvidia-docker run --rm nvidia/cuda nvidia-smi
下のような表示が出れば完了です。
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 381.22 Driver Version: 381.22 |
|-------------------------------+----------------------+----------------------+
| 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 108... Off | 0000:05:00.0 On | N/A |
| 23% 27C P8 10W / 250W | 223MiB / 11169MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 1 GeForce GTX 108... Off | 0000:06:00.0 Off | N/A |
| 23% 30C P8 8W / 250W | 138MiB / 11172MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 2 GeForce GTX 108... Off | 0000:09:00.0 Off | N/A |
| 23% 27C P8 9W / 250W | 138MiB / 11172MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
| 3 GeForce GTX 108... Off | 0000:0A:00.0 Off | N/A |
| 23% 31C P8 8W / 250W | 138MiB / 11172MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
+-----------------------------------------------------------------------------+