Posted at

WindowsでLet's DeepLearning! (VS2013+caffe+CUDA7.5+cudnn5.1)

More than 1 year has passed since last update.


WindowsでもDeepLearningがやりたい

DeepLearningのフレームワークといえば、CaffeやTensorflow、Chainerなどが有名ですが、これらはWindowsをサポートしていないものが多く、これまでUbuntuで環境構築をしていました。(ChainerはWindowsでも動きます)

でもやっぱりWindowsでもやりたい。

というわけでCaffeをWindowsでできないかと試行錯誤した結果、なんとかビルドできたので記しておきます。

といっても特に難しいことはなく、Windows版のCaffeは公式のページからGithubのレポジトリへのリンクがあるので、そのREADMEに従えばビルドできます。

https://github.com/Microsoft/caffe

ただ上の手順だと、cudnn3あるいはcudnn4じゃないといけなかったり、詳細な説明がなかったり…

自分はcudnn5.1が使いたいので、CaffeのWindowsブランチをForkしてcuDNNv5向けに変更を加えたリポジトリを使います。

変更箇所は以下の通りです。


・include\caffe\layers\cudnn_relu_layer.hpp

・include\caffe\layers\cudnn_sigmoid_layer.hpp

・include\caffe\layers\cudnn_tanh_layer.hpp

・include\caffe\util\cudnn.hpp

・src\caffe\layers\cudnn_conv_layer.cu

・src\caffe\layers\cudnn_relu_layer.cu

・src\caffe\layers\cudnn_relu_layer.cpp

・src\caffe\layers\cudnn_sigmoid_layer.cu

・src\caffe\layers\cudnn_sigmoid_layer.cpp

・src\caffe\layers\cudnn_tanh_layer.cu

・src\caffe\layers\cudnn_tanh_layer.cpp


https://github.com/yuzsh/caffe


実行環境


  • Windows10

  • VisualStudio2013 (2015はCUDAが対応していないためできません)

  • CUDA7.5

  • cudnn5.1 (v3やv4でも良い)

  • Python2.7 (自分はanacondaで)


準備

リポジトリのクローン(場所はお任せします)

Windows版のブランチをダウンロードします。


git clone -b windows https://github.com/yuzsh/caffe.git


caffeのルートディレクトリに移動して、プロパティファイルをコピーしておく。


cd caffe

copy .\windows\CommonSettings.props.example .\windows\CommonSettings.props


各種ライブラリのインストール方法は省略しますが、

CUDAやcudnnはNVIDIAの公式ページからインストールしてください。

PythonはAnacondaを使うと便利です。

またPythonモジュールで、numpy、scipy、matplotlib、scikit-image、protobufが必要となるのでインストールが必要です。自分は以下のようにしました。


activate anaconda2

conda install -y numpy scipy matplotlib scikit-image pip

pip install protobuf



CommonSettings.propsの編集

.\windows\CommonSettings.propsを開きます。VisualStudioで開くと見やすいでしょう。

確認するところは、



CommonSettings.props

<CpuOnlyBuild>false</CpuOnlyBuild> //デフォルトはfalse GPU使えない人はtrueに

<UseCuDNN>true</UseCuDNN> //デフォルトはtrue GPU使えない人やなくてもいい人はfalseに
<CudaVersion>7.5</CudaVersion> //CUDAのバージョン
<PythonSupport>true</PythonSupport> //Python使うのでtrueに デフォルトはfalse
<MatlabSupport>false</MatlabSupport> //Matlab使うか 今回使わないのでfalse(デフォルト)
<CudaArchitecture></CudaArchitecture> //デフォルトではいろいろ書いてあるけど、最近のアーキテクチャ使ってる人は空に(GTX1080など)
<CuDnnPath> path to your cudnn </CuDnnPath> //$(CuDnnPath)\cuda\include となるように
<PythonDir>C:\Anaconda3\envs\anaconda2</PythonDir> //Pythonのパス


ちなみにDebugモードのときはPythonはfalseにしないとPython27_d.libがないためエラーになります。

これが終わったら、今度はプロジェクトの設定で「警告をエラーとして扱う:No」に変更するのですが、自分のリポジトリをクローンした場合はすでにやってあるので大丈夫かと思います。


ビルド

あとはcaffe.slnファイルを開いて、ソリューションのビルド。

結構時間かかります。

ビルドが無事完了すると、Build\x64\Release(またはBuild\x64\Debug)に、exeとdllが作成されます。


PATHの設定

環境変数PYTHONPATHに<caffe_root>\Build\x64\Release\pycaffeを追加します。

ちなみにwindowsでの環境変数の取り扱いは、RapidEEが便利です。


動作確認

コマンドプロンプトを開き、pythonを立ち上げ、import caffe がエラーなく通ればインストール完了。

また、\Build\x64\Releaseに移動してcaffe.exeを実行して使い方のメッセージが表示されれば問題なくEXEが生成されていることが確認できます。

補足ですが、MNISTなどのサンプルはシェルスクリプトで書かれているため、これを実行できる環境やソフトを準備する必要があります。

自分はgitを入れるときに設定していました。

以上となります。

Ubuntuよりも簡単にできた気がします。

ちなみにchainerはpip install chainerだけでインストールできます。