のっぴきならない事情により最近流行りのDNNをやってみたくなった。
そこでWindowsでも使えるChainerをインストールし使ってみた。
せっかくなのでQiitaに初投稿、OSはWindows7以降64bitを想定。
1.GITを使える様にする
これ無くてもChainerダウンロードできるがローカルでもバージョン管理できるので便利。
とりあえず以下のものをインストールする。使わない人は飛ばしてください。
Git for Windows
これでGITコマンド使える様になる、何気にGUIもついてる。
TortoiseGit使うにはこれが必要になる。
TortoiseGit
エクスプローラーの右クリックメニューにGIT関係処理追加してくれる。
必要ならLanguage Packs もインストール。
2.Pythonを使える様にする
Anaconda4
をインストールする。インストール時に「All Users」の方を選ぶ。
これ入れれば大体のことはできる。かなり便利。
3.VisualStudio2013と2015のCommunityをインストール
https://www.visualstudio.com/ja-jp/downloads/download-visual-studio-vs#DownloadFamilies_2
↑のページ左に並んでる Visual Studio 2013 と Visual Studio 2015 のCommunityを順にインストール。
Visual Studio 2013
CUDA7.5がVS2015対応していないのでしょうがないのでインストール。
CUDA8なら対応するらしいが現時点でまだリリースされていない。
インストールオプションでC++以外全解除してもいいかも。
Visual Studio 2015
インストール時に必ず「Visual C++」にチェックを入れる。
これはChainerインストール時にCython使うようになってるため必須。
一応WindowsSDKにもチェック入れてみる。
Python Tools for Visual Studio にもチェック入れてPythonプログラミングしやすくする。
4.CUDA7.5とcuDNNインストール
※グラボがNVIDIAじゃなかったりCUDA使わない人は飛ばしていいです。
CUDA7.5
これは普通にダウンロードできる。
インストール時にVS2013用に色々勝手にやってくれるようだ。
cuDNN
これはユーザー登録しないとダウンロードできない。
登録&ログインしてダウンロードページに進むといくつか選択肢があるが
「Download cuDNN v5 (May 12, 2016), for CUDA 7.5」 を選ぶ。
cuDNNはZIP解凍して自分でCUDAフォルダにコピーする必要がある。
自分の環境だと解凍された bin, include, lib を
「C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5」 内に上書きした。
5.ChainerをGitHubからクローンする
Chainer のページ右側の 「Clone or download」 をクリック。
表示されたアドレスをクリップボードにコピー。 ※アドレス右側のボタンでコピーできる
※GIT使わない人は 「Download ZIP」 でもいい。
エクスプローラーで適当なフォルダ右クリックして
**「Git クローン(複製)...」を選んで表示されたダイアログでOK押すと
選んだフォルダ内に「chainer」**フォルダができる。
6.ChainerをPython環境へインストール
コマンドプロンプト開いて、さっき作った**「chainer」**フォルダへ移動。
**「python setup.py install」**を実行する。
すると色々ビルドしてAnaconda環境にインストールされる。
7.CUDAコンパイラ「nvcc」用にパスを通す
nvccがVS2013のcl.exe使うのでパスを通す。ユーザー別の方のパスでいいんじゃないかな。
自分の環境では**「C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin」**をパスに追加した。
これやらないとGPU使用での実行時にエラーが出る。
8.サンプルを実行する
せっかくなのでVS2015で新規にPython Application作ってそこにchainerのmnistサンプルコピーして実行してみる。
ちゃんとGPU使えるか確認するためデバッグオプションで**-g0**をコマンドライン引数に渡しておく。
この状態でかなり待たされるが辛抱強く待っていると・・・
何やら動き始めたぞ! GPUもちゃんと使ってる様だ。
よかったよかった。でもこのサンプル学習結果確認するところまで作られてないようで残念。
とりあえず以上でChainer使える様になるはずです。