Deep Learningの勉強をしようと考えて、GPU搭載のマシンを購入して環境構築した際、多少ハマったのでメモを残しておく。とある事情によりWindowsを使いたいのと、Windows+Linuxのデュアルブートにはあまり良い思い出がないので、Windows上で環境を構築した。
実行環境
-
GeForce GTX 1080
-
Windows 10 Home
-
Visual Studio 2015 Community
-
CUDA Toolkit 8.0
-
cuDNN 6.0
-
Anaconda 5 (Python3.6)
-
tensorflow-gpu 1.4.0
-
keras 2.0.8
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がうまく動かないという問題がある。(私はこれでハマった)
上記の画面が表示されたら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) のインストール
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で計算されることを確認した。
所感
やっぱりGPUは爆速で良い。(ちゃんと計測してないけど、CPUのみと比較して10〜20倍くらい速いと思う)
一番面倒くさいのはMicrosoftとNVIDIAの開発者アカウント登録だった。
参考
Windows10:KerasでGPUを使用する環境構築のTip's(TensorFlow) - Qiita
[Python]Windows10にTensorflow-GPU+Kerasをインストールする[2017/10/5] - Qiita