catalinaの備忘録

ソフトウェアやハードウェアの備忘録。後で逆引きできるように。

windows10でchainer+CUDA+cuDNNをGPUで動かしてみた

ディープラーニング用のフレームワークを何か動かしてみました。かたりぃなです。 以前にCPU版のみのchainerを動かしてみたことはあるのですが、今回はGPU版に挑戦です。 今回の記事は動かすことよりもトラブルシューティングが主な内容になります。

作業前の自分の作業環境でchainerに関連しそうなものはこんなものでした。 最初はVMWareやDockerを使おうかとも考えていましたが、仮想環境からGPUがどう見えるのかとか調べるのが面倒になってきたので、Windows上で直接動かします。

  • ソフトウェア

  • ハードウェア

    • GeForce GTX670
    • IntelCore-i7 3.4G
    • RAM 8GB

以下のサイトを参考にして必要なものをインストールしていきました。

参考にさせていただいたサイト

Windows上にChainer v1.5+CUDA+cuDNNを一番簡単に入れれる方法 - Qiita

WindowsでChainerをGPUを使って動かす - TadaoYamaokaの日記

Windows環境でChainerのGPUを使えるようにするまで - Qiita

chainerの準備

基本的なインストール手順は先人が示してくれているのでそれに従います。

  1. anaconda(python3.5)を入れる
  2. cuda-toolkit(7.5)を入れる
  3. chainerを入れる

というわけで試しに動かしてみます。 chainerのexamplesにmnistがあるのでこれを走らせます。 コマンドは

python train_mnist.py -g 0

です。

とりあえず動かすことはできました。 動かすまでにいろいろと問題があったので、問題が起きたポイントごとに原因と解決策を整理します。 その前にトラブルシューティングの基本的なことを一つ。 上記pythonコマンドを打ってエラーが出た場合、以下の情報が表示されます。

  • コマンドが戻り値0以外で終了した(異常終了した)
  • 異常終了したコマンドラインとパラメータ

エラーになったコマンドを実際に打ってみてエラー情報を確認しつつ進めます。

cuda-toolkit7.5はvisualstudio2013までしかサポートしていない。

nvcc(cudaコンパイラ)が出すエラーなのですが、visual studio2013付属のコンパイラまでしかサポートしないというエラーメッセージを出してきます。 おとなしくvisual studio community 2013をインストールします。 昔のvisual studioは最新版(手元の環境では2015)がインストール済みの場合は古いバージョンはインストールさせてくれなかった気がしますが、今回はすんなりインストールできました。

Windowsのユーザー名が日本語

何をいまさら的なところで足元をすくわれました。 windows10にアップグレードしたときにmicrosoftアカウントを作ったのですが、そのとき適当に作ったアカウントが日本語名でした。 日本語ユーザー名で作業しているとpythonがパス文字列をUTF8デコードするところでエラーになります。 今までwindowsで作業するときはVM上か、VisualStudioで作業する場合でもD:\myproject\とかで作業していたのであまり問題にはなりませんでした。 どうしてpythonだけエラーになるのだろうと調べてみましたが、アプリケーション固有の設定情報(ここではanaconda/python)が置かれる場所がここでした。 C:\Users\日本語ユーザー名\AppData\

python側の文字コードの設定を変更するだけでもいけるのかもしれませんが、また同じ轍を踏みそうなのでアルファベットのみのユーザー名を作り直します。 Microsoftアカウントはクラウド連携するので次のような手順で作り直します。 一旦クラウドから切り離してローカルで作業するのがポイントですね。

  • ユーザーアカウント作り直し&データ移行の手順
    • 作業中のユーザーアカウント(microsoftアカウント)をクラウドから切り離してローカルアカウントでログインしなおす
    • ローカルアカウントで新規にユーザーアカウントを作成
    • 新しく作成したユーザーアカウントに必要なデータ(AppDataとかDeskTopとか)をコピー
    • 新しく作成したローカルユーザーアカウントでログインしなおした後、microsoftアカウントに紐づける

コンパイラのパスが通っていない

nvcc(cudaコンパイラ)がvisual studio 2013のコンパイラのパスを認識できない状態だとこんなエラーになります。

nvcc fatal   : Cannot find compiler 'cl.exe' in PATH

環境変数PATHの設定しましょう。 visualstudio2013のcl.exeは私の環境ではこの場所に置かれていました。 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin

感想と今後の予定

とりあえずchainerのサンプルをGPUで動かすことまでできたのでひと段落です。 実行速度はGPUを使ったほうが圧倒的に早くなっています(以前試したCPUのみの場合は30分以上かかっていたものが5分前後になった)。 これくらいの速度ならトライ&エラーしやすそうですね。 速度計測は今回は面倒&興味がないのでやりません。体感できたから良しとします。 今回利用したPCは何年も前に買ったもので、当時出たばかりのDiablo3、バージョンアップごとに重くなっていくA列車で行こう9などの3Dゲームを快適に遊ぶために買ったものだったのですが、意外なところで役に立ってよかったです。

とりあえず最初の一歩は踏み出せました。 今後はchainerの詳しい使い方を調べていこうと思います。

その他参考にした資料など

基礎からがっつりやるならPRMLもよいのですが、難しい内容かつ大判なので通勤電車で軽く読むといったことがしづらい本です。 私は紙のノートに数式ごりごり書いていかないと覚えられないオールドタイプですので。 通勤中はこのあたりの本を読み進めていくのが最近の私のスタイルです。PRMLと比べて小さめサイズというのもありがたいところ。 帰りの電車の中で読んでいると、疲れている時などは丁度いい感じに眠くなれるので、疲労度チェックにも使えます。

イラストで学ぶ ディープラーニング (KS情報科学専門書)

イラストで学ぶ ディープラーニング (KS情報科学専門書)

この本は実践的な内容でした。どんなフレームワークがあるのか、どんなことができるのかといった内容が多いと感じました。 もちろん数学的な説明もしっかりと丁寧になされているので「ディープラーニングってよくわかんないけど、動かして試してみたい」って人向けかと思います。

深層学習 Deep Learning

深層学習 Deep Learning

こちらは機械学習人工知能の歴史的な内容を踏まえての学術的なしっかりとした解説が主な内容でした。 体系的にしっかりと学ぶならこちらのほうがよさそうです。