ずいぶん昔の話だが、TensorFlowがWindowsに対応した。どうやらコマンドプロンプト経由でインストールする形式のようだ。
今回初めてTensorFlowをWindowsに導入してみたので、その手順を記録しておく。
- msys2経由でのWindows版TensorFlowは難しい(不可能だったので諦めた)
- Windowsコマンドライン経由でのインストールでも、Pythonのツールを間違えるとインストール出来ない
- 動作テストをする
msys2経由でのWindows版TensorFlowは難しい(不可能だったので諦めた)
msys2経由でpythonをインストールし、Windows版あるいはLinux版TensorFlowを導入しようとしたのだが、pip installの段階でエラーが出てしまい、ネットで情報を調べてもわからなかったので諦めてしまった。
Windowsコマンドライン経由でのインストールでも、Pythonのツールを間違えるとインストール出来ない
Windowsコマンドライン経由でのインストールでも最初につまずいた。Pythonの公式ホームページからPython 3.5.2のパッケージをインストールしたのだが、TensorFlowをインストールしようとしてもどうしてもうまくインストールできなかった。
> pip install --upgrade https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-0.12.1-cp35-cp35m-win_amd64.whl tensorflow_gpu-0.12.1rc0-cp35-cp35m-win_amd64.whl is not a supported wheel on th is platform.
のようなエラーメッセージが表示され、どうしてもインストール出来ない。
いろいろ調査した結果、Pythonのインストールは公式パッケージではなく、Anacondaのパッケージを使用しなければならないようだ。
Anacondaのパッケージを利用してPython 3.5.2をインストールし、TensorFlowをインストールした結果、インストールが開始された。
ありゃ、失敗してしまった。どうやら、さらにオプションを追加しないとダメらしい。
>pip install --upgrade --ignore-installed https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-0.12.1-cp35-cp35m-win_amd64.whl Collecting tensorflow-gpu==0.12.1 from https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-0.12.1-cp35-cp35m-win_amd64.whl Using cached https://storage.googleapis.com/tensorflow/windows/gpu/tensorflow_gpu-0.12.1-cp35-cp35m-win_amd64.whl Collecting protobuf>=3.1.0 (from tensorflow-gpu==0.12.1) Using cached protobuf-3.1.0.post1-py2.py3-none-any.whl Collecting numpy>=1.11.0 (from tensorflow-gpu==0.12.1) Using cached numpy-1.11.3-cp35-none-win_amd64.whl Collecting six>=1.10.0 (from tensorflow-gpu==0.12.1) Downloading six-1.10.0-py2.py3-none-any.whl Collecting wheel>=0.26 (from tensorflow-gpu==0.12.1) Using cached wheel-0.29.0-py2.py3-none-any.whl Collecting setuptools (from protobuf>=3.1.0->tensorflow-gpu==0.12.1) Using cached setuptools-32.3.1-py2.py3-none-any.whl Installing collected packages: six, setuptools, protobuf, numpy, wheel, tensorflow-gpu Successfully installed numpy-1.11.3 protobuf-3.1.0.post1 setuptools-27.2.0 six-1.10.0 tensorflow-gpu-0.12.1 wheel-0.29.0
おおお、上手くいった。
動作テストをする
以下のようにしてTensorFlowをインポートした。
C:\Users\masayuki>python Python 3.5.2 |Anaconda 4.2.0 (64-bit)| (default, Jul 5 2016, 11:41:13) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import tensorflow as tf I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\stream_executor\dso_loader.cc:128] successfully opened CUDA library 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 library 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 library 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 library 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 library curand64_80.dll locally
GPUが認識されているかチェック
>>> hello = tf.constant('Hello, TensorFlow!') >>> sess = tf.Session() I c:\tf_jenkins\home\workspace\release-win\device\gpu\os\windows\tensorflow\core\common_runtime\gpu\gpu_device.cc:885] Found device 0 with properties: name: GeForce GTX 780 Ti major: 3 minor: 5 memoryClockRate (GHz) 1.0845 pciBusID 0000:01:00.0 Total memory: 3.00GiB Free memory: 2.56GiB 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 TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 780 Ti, pci bus id: 0000:01:00.0) >>> print(sess.run(hello)) b'Hello, TensorFlow!' >>> a = tf.constant(10) >>> b = tf.constant(32) >>> print(sess.run(a + b)) 42
これは動作している、という理解でいいのかな?