※公式からWindowsバイナリが提供されたため、この記事の内容はほとんどの人には不要です。
GPUをGeForce 1080に交換したので、前回の日記でWindowsでGPUを有効にしてビルドしたTensorFlowを動かしてみた。
結果は以下の通り、GPUで実行できた。
tensorflow\models\image\mnist>python convolutional.py I h:\src\tensorflow\tensorflow\stream_executor\dso_loader.cc:125] successfully opened CUDA library cublas64_80.dll locally I h:\src\tensorflow\tensorflow\stream_executor\dso_loader.cc:125] successfully opened CUDA library cudnn64_5.dll locally I h:\src\tensorflow\tensorflow\stream_executor\dso_loader.cc:125] successfully opened CUDA library cufft64_80.dll locally I h:\src\tensorflow\tensorflow\stream_executor\dso_loader.cc:125] successfully opened CUDA library nvcuda.dll locally I h:\src\tensorflow\tensorflow\stream_executor\dso_loader.cc:125] successfully opened CUDA library curand64_80.dll locally Extracting data\train-images-idx3-ubyte.gz Extracting data\train-labels-idx1-ubyte.gz Extracting data\t10k-images-idx3-ubyte.gz Extracting data\t10k-labels-idx1-ubyte.gz I h:\src\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:944] Found device 0 with properties: name: GeForce GTX 1080 major: 6 minor: 1 memoryClockRate (GHz) 1.8225 pciBusID 0000:01:00.0 Total memory: 8.00GiB Free memory: 6.66GiB I h:\src\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:965] DMA: 0 I h:\src\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:975] 0: Y I h:\src\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:1034] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1080, pci bus id: 0000:01:00.0) E h:\src\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:662] Could not identify NUMA node of /job:localhost/replica:0/task:0/gpu:0, defaulting to 0. Your kernel may not have been built with NUMA support. Initialized! Step 0 (epoch 0.00), 12.3 ms Minibatch loss: 8.334, learning rate: 0.010000 Minibatch error: 85.9% Validation error: 84.6% Step 100 (epoch 0.12), 5.3 ms Minibatch loss: 3.247, learning rate: 0.010000 Minibatch error: 4.7% Validation error: 7.4% Step 200 (epoch 0.23), 5.3 ms Minibatch loss: 3.363, learning rate: 0.010000 (省略) Step 8300 (epoch 9.66), 5.3 ms Minibatch loss: 1.611, learning rate: 0.006302 Minibatch error: 0.0% Validation error: 0.8% Step 8400 (epoch 9.77), 5.3 ms Minibatch loss: 1.596, learning rate: 0.006302 Minibatch error: 0.0% Validation error: 0.8% Step 8500 (epoch 9.89), 5.3 ms Minibatch loss: 1.606, learning rate: 0.006302 Minibatch error: 0.0% Validation error: 0.8% Test error: 0.8%
実行時間の比較
Step 100 (epoch 0.12), 5.3 ms
といった行で、100ステップの実行時間が表示されている。
前回のCPUでの実行時間は、
Step 100 (epoch 0.12), 120.8 ms
と表示されており、約120msかかっていた。
それに比べ、今回は5.3msで実行されており、22.8倍高速に計算できている。
GPUで実行されていることの確認
実行結果に、
E h:\src\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:662] Could not identify NUMA node of /job:localhost/replica:0/task:0/gpu:0, defaulting to 0. Your kernel may not have been built with NUMA support.
という行が出力されているのが気になるが、実行時間からGPUで実行されていると考えて問題はなさそうである。
ビデオカードの付属ソフトで、GPUのクロックが表示できるので確認したところ、アイドル時はGPUクロックが200MHzくらいであるが、実行中は2GHzくらいになっていたので、ちゃんとGPUで実行できているようである。