TensorFlow (with GPU Support) インストール
2018/01/29 |
Google 社発の機械学習ライブラリ (または 人工知能ライブラリ/ディープラーニング と呼ばれることも), TensorFlow をインストールします。
TensorFlow を利用するにあたり、Python, C, Java, Go が使用可能ですが、当例では Python で進めます。
Python を使用する場合の要件として Python 2.7 または Python 3.3 以上が必要です。 当例では RHEL/CentOS 7系 標準の Python 2.7 で進めます。
また、当例では公式で提供されているコンパイル済みバイナリーをインストールしますが、バイナリーの場合、GPU
サポート有り版と無し版 が提供されています。ここでは GPU サポート有り版をインストールします。
|
|
[1] |
GPU サポート有り版では CUDA 7.0 以上がシステム要件です。
当例では事前に CUDA 9.0 をインストールしています。 |
[2] |
システム要件として cuDNN v3 (CUDA Deep Neural Network library (Deep Learning用の速度向上ライブラリ)) 以上も必要です。
cuDNN は NVIDIA 社で提供されています。下記サイトにアクセスして、インストール済み CUDA のバージョンに対応した
cuDNN をダウンロードします。(ダウンロードにはアカウント登録が必要)
⇒ https://developer.nvidia.com/rdp/cudnn-download
|
[3] | ダウンロードした cuDNN ライブラリを配置しておきます。 |
[root@dlp ~]# tar zxvf cudnn-9.0-linux-x64-v7.tgz [root@dlp ~]# cp ./cuda/include/cudnn.h /usr/local/cuda-9.0/include/ [root@dlp ~]# cp -a ./cuda/lib64/libcudnn* /usr/local/cuda-9.0/lib64/ [root@dlp ~]# ldconfig [root@dlp ~]# echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-9.0/extras/CUPTI/lib64' >> /etc/profile.d/cuda90.sh [root@dlp ~]# source /etc/profile.d/cuda90.sh |
[4] | 必要なパッケージをインストールしておきます。 |
# EPELからインストール [root@dlp ~]# yum --enablerepo=epel -y install python2-pip python-devel
|
[5] | TensorFlow をインストールします。 |
# pip を更新しておく [root@dlp ~]# easy_install -U pip Searching for pip Reading https://pypi.python.org/simple/pip/ Best match: pip 9.0.1[root@dlp ~]# pip install --upgrade tensorflow-gpu Collecting tensorflow-gpu Downloading tensorflow_gpu-1.5.0-cp27-cp27mu-manylinux1_x86_64.whl (201.9MB) ..... ..... Successfully installed absl-py-0.1.9 backports.weakref-1.0.post1 bleach-1.5.0 enum34-1.1.6 funcsigs-1.0.2 futures-3.2.0 html5lib-0.9999999 markdown-2.6.11 mock-2.0.0 numpy-1.14.0 pbr-3.1.1 protobuf-3.5.1 setuptools-38.4.0 six-1.11.0 tensorflow-gpu-1.5.0 tensorflow-tensorboard-1.5.0 werkzeug-0.14.1 wheel-0.30.0 |
[6] | 任意の一般ユーザーで動作確認します。 CPU supports ~ のメッセージは通知メッセージのため動作に問題はありません。TensorFlow のバイナリがメッセージ中に記載の CPU 機能を有効にしてコンパイルされていない旨の通知です。 |
[cent@dlp ~]$ vi hello_tensorflow.py import tensorflow as tf hello = tf.constant('Hello, TensorFlow!') sess = tf.Session() print(sess.run(hello)) python ./hello_tensorflow.py 2018-01-28 11:27:55.110172: I tensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 2018-01-28 11:27:56.522539: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1105] Found device 0 with properties: name: GeForce GTX 1060 6GB major: 6 minor: 1 memoryClockRate(GHz): 1.8475 pciBusID: 0000:03:00.0 totalMemory: 5.93GiB freeMemory: 5.86GiB 2018-01-28 11:27:56.522640: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1195] Creating TensorFlow device (/device:GPU:0) -> (device: 0, name: GeForce GTX 1060 6GB, pci bus id: 0000:03:00.0, compute capability: 6.1) Hello, TensorFlow! |
[7] | 公式で提供されている機械学習モデルを実行して TensorFlow に触れてみましょう。 |
[cent@dlp ~]$ mkdir tensorflow [cent@dlp ~]$ cd tensorflow [cent@dlp tensorflow]$ git clone https://github.com/tensorflow/models.git [cent@dlp tensorflow]$ cd models/official/mnist [cent@dlp mnist]$ python mnist.py INFO:tensorflow:Using default config. ..... ..... INFO:tensorflow:loss = 5.4853288e-05, step = 47901 (0.749 sec) INFO:tensorflow:Saving checkpoints for 48000 into /tmp/mnist_model/model.ckpt. INFO:tensorflow:Loss for final step: 6.582842e-05. INFO:tensorflow:Starting evaluation at 2018-01-28-04:22:02 2018-01-28 13:22:03.039551: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1195] Creating TensorFlow device (/device:GPU:0) -> (device: 0, name: GeForce GTX 1060 6GB, pci bus id: 0000:03:00.0, compute capability: 6.1) INFO:tensorflow:Restoring parameters from /tmp/mnist_model/model.ckpt-48000 INFO:tensorflow:Finished evaluation at 2018-01-28-04:22:04 INFO:tensorflow:Saving dict for global step 48000: accuracy = 0.0987, global_step = 48000, loss = 0.038478132 Evaluation results: {'loss': 0.038478132, 'global_step': 48000, 'accuracy': 0.0987} |
[8] | 機械学習実行中にグラフィックカードの状態を見ると、それなりの負荷がかかっていることが確認できます。 |
[root@dlp ~]# nvidia-smi Tue Jan 28 13:21:54 2018 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 390.12 Driver Version: 390.12 | |-------------------------------+----------------------+----------------------+ | 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 106... Off | 00000000:03:00.0 Off | N/A | | 38% 68C P2 87W / 120W | 5941MiB / 6077MiB | 70% Default | +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ | Processes: GPU Memory | | GPU PID Type Process name Usage | |=============================================================================| | 0 22493 C python 5931MiB | +-----------------------------------------------------------------------------+ |