edo1z blog

プログラミングなどに関するブログです

TensorFlowのWindows版をインストールする

TensorFlowのWindows版がでてた

「Windows10上のTensorFlowでGPUを利用しようとしてダメだった→できるようになったみたいです!」なんと、Windows版でGPU利用も可能なものが出てるらしい。「Google、オープンソースの機械学習ライブラリ「TensorFlow」のWindows版を公開」

Windows版は「Python」言語のパッケージ管理システム「PyPI」のパッケージとして配布されており、Windows 7/10およびWindows Server 2016で利用が可能。GPUアクセラレーションとして“CUDA 8.0”と“cuDNN 5.1”がサポートされている。

インストール

「TensorFlow が正式に Windows サポートして GPU が使えたので試してみた」ここに色々インストール手順が書いてあります。自分はNVIDAのサイトで登録とかすでにしているのですが、どんな登録をして、何をパソコンにインストールしたのかとかは忘れました。Pythonはanacondaでインストールしたはずでバージョンは3.5です。前は確かTensorFlowはPython2.7に対応していた気がしますが、3.3以上も対応しているようです。

$ python --version
Python 3.5.2 :: Anaconda 4.1.1 (64-bit)

Anacondaの64bit版の4.1.1で、Pythonのバージョンは3.5.2でした。

以下2つを実行して、TensorFlowとTensorFlow-GPUがインストールできるようです。

$ pip install tensorflow

Successfully installed protobuf-3.1.0.post1 tensorflow-0.12.1

$ pip install tensorflow-gpu

Successfully installed tensorflow-gpu-0.12.1

インストールできました。

動くかチェック

とりあえず使えるのかチェックしてみます。 tensor.pyというファイルに、下記を書いて実行してみます。

import tensorflow as tf

結果

I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library
 cublas64_80.dll
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_blas.cc:2294] Unable to load cuBLAS
 DSO.
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library
 cudnn64_5.dll
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_dnn.cc:3459] Unable to load cuDNN D
SO
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library
 cufft64_80.dll
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_fft.cc:344] Unable to load cuFFT DS
O.
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA l
ibrary nvcuda.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library
 curand64_80.dll
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_rng.cc:338] Unable to load cuRAND D
SO.

GPU関連のインストール・設定等は全くできていなかったようです。

下記を書いて実行してみました。

import tensorflow as tf

hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
a = tf.constant(10)
b = tf.constant(32)
print(sess.run(a + b))

結果

I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library
 cublas64_80.dll
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_blas.cc:2294] Unable to load cuBLAS
 DSO.
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library
 cudnn64_5.dll
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_dnn.cc:3459] Unable to load cuDNN D
SO
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library
 cufft64_80.dll
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_fft.cc:344] Unable to load cuFFT DS
O.
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA l
ibrary nvcuda.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:119] Couldn't open CUDA library
 curand64_80.dll
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\cuda\cuda_rng.cc:338] Unable to load cuRAND D
SO.
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:885] Found device 0 wit
h properties:
name: GeForce GTX 970
major: 5 minor: 2 memoryClockRate (GHz) 1.1775
pciBusID 0000:01:00.0
Total memory: 4.00GiB
Free memory: 3.31GiB
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:906] DMA: 0
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:916] 0:   Y
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:975] Creating TensorFlo
w device (/gpu:0) -> (device: 0, name: GeForce GTX 970, pci bus id: 0000:01:00.0)
b'Hello, TensorFlow!'
42

GPU関連でWarning的メッセージが沢山でるものの一応動いています。搭載しているGPUも認識されていて名前とかが表示されてます。

NVIDA関連の設定

CUDA Toolkit 8.0

https://developer.nvidia.com/cuda-downloads 上記のように設定してダウンロードして、インストールしました。結構時間かかりました。

cuDNN v5.1

下記でユーザ登録したらダウンロードできます。 https://developer.nvidia.com/rdp/cudnn-download zip内のcudaフォルダの中身をC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0にコピーします。

動作チェック

パソコンを再起動して、改めてtensor.pyを実行してみました。

I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA l
ibrary cublas64_80.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA l
ibrary cudnn64_5.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA l
ibrary cufft64_80.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA l
ibrary nvcuda.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA l
ibrary curand64_80.dll locally
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:885] Found device 0 wit
h properties:
name: GeForce GTX 970
major: 5 minor: 2 memoryClockRate (GHz) 1.1775
pciBusID 0000:01:00.0
Total memory: 4.00GiB
Free memory: 3.31GiB
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:906] DMA: 0
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:916] 0:   Y
I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:975] Creating TensorFlo
w device (/gpu:0) -> (device: 0, name: GeForce GTX 970, pci bus id: 0000:01:00.0)
b'Hello, TensorFlow!'
42

全部successfullyと書いてるのでうまくいっているようです。