今回は Linux (Ubuntu 18.04) において、Anaconda をベースとして
TensorFlow(GPU) と Keras を用いた機械学習環境を構築する。
前回、Windows Server 2019 に環境を作ってみた際に、
TensorFlow と CUDA, cuDNN 等の複雑なGPU周りのver互換性は
Anaconda が面倒を見てくれそうということが分かったので、
普段遣いのメインマシン(Ubuntu 18.04) で、NVIDIA graphic driver の verを変えずに試してみた。
PC環境
OS: Ubuntu 18.04 (Bionic Beaver) LTS Server
GPU: NVIDIA Quadro P5000
Driver version: 390.116(やや古め)
Anaconda: 2019.03
※ CUDA や cuDNN は未インストール
Anaconda による機械学習環境作成
基本的には前回 の Anaconda の項目をトレースする。
ただし、NVIDIA (graphic) driver が古いので、tensorflow-gpu の ver を選ぶ必要がある。
グラフィックドライバとCUDAの対応表 より、v390.116@Linux は CUDA v9.1 までと分かる。
conda install tensorflow-gpu=x.x.x をタイプした際に
合わせて入れられる cudatoolkit の version を確認する。
python 3.7 系では tensorflow-gpu と cuda v9.1 以前の組み合わせがなかったので、
python 3.6 系をベースにすることにする。
専用仮想環境の作成
上記で説明したように、python は 3.6系を指定(3.6.10 が入った)。
tensorflow-gpu は 1.9.0 を指定、依存解決で入る cudatoolkit は 9.0 だった。
他は、前回と同様。
1 2 3 4 5 6 7 8 9 10 |
conda create -n keras-rl-gpu python=3.6 # 3.6.10 conda activate keras-rl-gpu conda install matplotlib numpy jupyter conda install tensorflow-gpu=1.9.0 # cudatoolkit 9.0 conda install keras pip install keras-rl pip install gym ipython kernel install --user --name=keras-rl-gpu --display-name=keras-rl-gpu |
TensorFlow(GPU) の動作確認
これも前回と同様、jupyter から上で作成した keras-rl-gpu の kernel を指定して、
import tensorflow としてみたり、以下でデバイスが見えるかなどを確認。
in [1]:
1 2 |
from tensorflow.python.client import device_lib device_lib.list_local_devices() |
out[1]:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[name: "/device:CPU:0" device_type: "CPU" memory_limit: 268435456 locality { } incarnation: 1064575167184979163, name: "/device:GPU:0" device_type: "GPU" memory_limit: 12525119079 locality { bus_id: 1 links { } } incarnation: 7200116359330211234 physical_device_desc: "device: 0, name: Quadro P5000, pci bus id: 0000:65:00.0, compute capability: 6.1"] |
ということで正しく認識できている。
前回と同じ TensorFlow を用いたサンプルを実行したところ、
おおよそ2倍程度の処理時間となった。