Going Faraway

渡辺遼遠の雑記帳。技術ネタと読んだ本の紹介。

Windows10でKeras/tensorflowがGPUを使用できない場合のチェックポイント

Deep Learningの勉強をしようと考えて、GPU搭載のマシンを購入して環境構築した際、多少ハマったのでメモを残しておく。とある事情によりWindowsを使いたいのと、Windows+Linuxデュアルブートにはあまり良い思い出がないので、Windows上で環境を構築した。

実行環境

2017年12月現在の環境構築ポイント

  • Windows環境の最新のcuDNNはCUDA 9.0に対応していないため、8.0をインストールする
  • CUDA 8.0のインストールには、Visual Studio 2015のVisual C++とWindows10 SDKが必要
  • Python側は、Anacondaを使ってちゃんと仮想環境を切ればあまりハマるポイントは無いと思われる

環境構築
Visual Studio 2015のインストール

https://my.visualstudio.com/downloads (要ユーザ登録)

次のCUDA Toolkit 8.0のインストールのために必要。CUDA のバージョンはVSのバージョンと密接に結びついているらしく、現行のCUDA 8.0はVS2017に対応していないため、2015を使用する必要がある。Visual C++Windows 10 SDKが必要らしいのでチェックを入れてインストールする。

CUDA Toolkit 8.0 のインストール

CUDA Toolkit 8.0 - Feb 2017 | NVIDIA Developer

CUDA Toolkit 8.0 - Feb 2017 を選択しインストールする。なお、前項のVisual Studio 2015が無くてもインストーラ自体は問題なく完了してしまうが、tensorflow-gpuがうまく動かないという問題がある。(私はこれでハマった)

f:id:liaoyuan:20171229234527j:plain

上記の画面が表示されたらVSのインストールがうまくいっていないので、そのまま進まずにVSのインストールからやり直し。

cuDNNのインストール

https://developer.nvidia.com/rdp/cudnn-download (要ユーザ登録)

cuDNN v6.0 (April 27, 2017), for CUDA 8.0を選択し、zipファイルをダウンロードする。ファイルを解凍すると、cuda/bin,include,libフォルダが展開されるので、CUDAのインストールフォルダ C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0 以下のフォルダを上書きコピーする。(もしくは、任意の場所に配置してパスを通す)

Anaconda 5.0 (Python3.6) のインストール

Downloads | Anaconda

Anaconda Python 3.6 versionをダウンロードしてインストール。特に注意点はなし。

Python環境構築

今回は問題が起こらなかったけど、numpyのインストールに失敗したりバージョン不整合が起こるケースがあるらしいので、ちゃんと仮想環境を切ってインストールしたほうが良さそう。Anaconda Promptを起動して仮想環境dlを作成する。

conda create -n dl 

コマンドで仮想環境に入る。

activate dl

以下のコマンドで、必要なpythonのパッケージをインストールする。

conda install -n dl tensorflow-gpu
conda install -n dl keras

今回の環境では、なぜかAnaconda デフォルトのjupyterではpython kernelの切り替えができなかったので、仮想環境側にもjupyterをインストールした。

conda install -n dl jupyter 

最後に、jupyterのnotebookを起動してkerasをimport。
"Using TensorFlow backend." と表示されることを確認する。

import tensorflow
print(tensorflow.test.is_built_with_cuda())

True であれば、tensorflowのインストールは問題なく完了してGPUが使用できるはず。

トラブルシュート時のチェックポイント

CUDA Toolkit

CUDA Toolkitのインストール後、コマンドプロンプトから以下のコマンドを実行する。(nvccはnVidia製のGPU用のコンパイラ)

> nvcc
"nvcc fatal : No input files specified; use option --help for more information"

と表示されれば、CUDAのインストールには問題がないと思われる。nvccを認識できなければCUDAのインストールに失敗している。

cuDNN

tensorflow 1.3以降のバージョンでは、cuDNN 6 (cudnn64_6.dll) が必要となる。cuDNNがロードできないと怒られる場合は、cuDNNのインストールに失敗している (もしくはパスが通っていない) と考えられる。

tensorflowインストールチェックスクリプト

TensorFlow on Windows self-check · GitHub

Windowsでtensorflow構築時の問題切り分けに有用なスクリプトを発見したので共有しておく。VSのライブラリ、cuDNN、CUDA Toolkitのインストール状況と、tensorflowがCUDAを認識しているかを確認してくれる。

動作確認

keras付属のMNISTのサンプルを動作させて、GPUで計算されることを確認した。

f:id:liaoyuan:20171229235314j:plain

所感

やっぱりGPUは爆速で良い。(ちゃんと計測してないけど、CPUのみと比較して10〜20倍くらい速いと思う)

一番面倒くさいのはMicrosoftNVIDIAの開発者アカウント登録だった。

参考

Windows10:KerasでGPUを使用する環境構築のTip's(TensorFlow) - Qiita

[Python]Windows10にTensorflow-GPU+Kerasをインストールする[2017/10/5] - Qiita