概要
TensorFlow の GPU 版をインストールするときは CUDA, cuDNN のバージョンをしっかりと合わせないと正常に動かない場合があります。TensorFlow 0.8 GPU 版のインストールに成功したので手順をメモしておきます。
環境
- OS: Ubuntu Server 14.04 LTS (64bit) クリーンインストールし openssh-server のみをインストールした状態
- GPU: NVIDIA TITAN X
CUDA, cuDNN の入手
CUDA 7.5 と cuDNN v4 をダウンロードして Ubuntu の ~ に配置しておきます。
CUDA 7.5 はこちらからcuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb
をダウンロードしてください。
cuDNN v4 はこちらのサイトでアカウントを作成したのちログインし、アンケートをいくつか答えたのちcuDNN v4 Library for Linux
のリンクからcudnn-7.0-linux-x64-v4.0-prod.tgz
をダウンロードしてください。
CUDA 7.5 のインストール
$ sudo dpkg -i cuda-repo-ubuntu1404-7-5-local_7.5-18_amd64.deb
$ sudo apt-get update
$ sudo apt-get install cuda
cuDNN v4 のインストール
$ tar xvzf cudnn-7.0-linux-x64-v4.0-prod.tgz
$ sudo cp cuda/include/cudnn.h /usr/local/cuda/include
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
パスを通す
~/.bashrc
に以下を追加
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib64"
export CUDA_HOME=/usr/local/cuda
設定を反映させる
$ . ~/.bashrc
TensorFlow のインストール
virtualenv で TensorFlow のインストール先を作成
$ sudo apt-get install python-dev python-virtualenv
$ virtualenv ~/tensorflow-GPU
$ . ~/tensorflow-GPU/bin/activate
TensorFlow をインストール
$ pip install --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow-0.8.0rc0-cp27-none-linux_x86_64.whl
動作確認
シンプルなサンプルで動作確認を行います。CPU 版と同じ以下のコードを実行します。
$ python
...
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42
>>>
GPU 版では以下のような出力に変わります。
$ python
...
>>> import tensorflow as tf
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:105] successfully opened CUDA library libcurand.so locally
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:900] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
I tensorflow/core/common_runtime/gpu/gpu_init.cc:102] Found device 0 with properties:
name: GeForce GTX TITAN X
major: 5 minor: 2 memoryClockRate (GHz) 1.076
pciBusID 0000:01:00.0
Total memory: 12.00GiB
Free memory: 11.87GiB
I tensorflow/core/common_runtime/gpu/gpu_init.cc:126] DMA: 0
I tensorflow/core/common_runtime/gpu/gpu_init.cc:136] 0: Y
I tensorflow/core/common_runtime/gpu/gpu_device.cc:755] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX TITAN X, pci bus id: 0000:01:00.0)
>>> print(sess.run(hello))
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42
コンソールを新しく立ち上げた場合などは以下のコマンドを実行して TensorFlow を有効にします。
$ . ~/tensorflow-GPU/bin/activate
GPU だとどれくらい速くなるの?
Deep MNIST for Experts を CPU で実行した場合は30分かかりました。 CPU は Intel Core i7-6700K なので速い部類だと思います。しかし TITAN X で実行するとなんと1分30秒に短縮されます。GPU での実行速度は圧倒的という感じです。