ディープラーニング用のフレームワークを何か動かしてみました。かたりぃなです。 以前にCPU版のみのchainerを動かしてみたことはあるのですが、今回はGPU版に挑戦です。 今回の記事は動かすことよりもトラブルシューティングが主な内容になります。
作業前の自分の作業環境でchainerに関連しそうなものはこんなものでした。 最初はVMWareやDockerを使おうかとも考えていましたが、仮想環境からGPUがどう見えるのかとか調べるのが面倒になってきたので、Windows上で直接動かします。
ソフトウェア
- windows10
- visual studio 2015 community
ハードウェア
- GeForce GTX670
- IntelCore-i7 3.4G
- RAM 8GB
以下のサイトを参考にして必要なものをインストールしていきました。
参考にさせていただいたサイト
Windows上にChainer v1.5+CUDA+cuDNNを一番簡単に入れれる方法 - Qiita
WindowsでChainerをGPUを使って動かす - TadaoYamaokaの日記
Windows環境でChainerのGPUを使えるようにするまで - Qiita
chainerの準備
基本的なインストール手順は先人が示してくれているのでそれに従います。
- anaconda(python3.5)を入れる
- cuda-toolkit(7.5)を入れる
- 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アカウントはクラウド連携するので次のような手順で作り直します。 一旦クラウドから切り離してローカルで作業するのがポイントですね。
- ユーザーアカウント作り直し&データ移行の手順
コンパイラのパスが通っていない
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と比べて小さめサイズというのもありがたいところ。 帰りの電車の中で読んでいると、疲れている時などは丁度いい感じに眠くなれるので、疲労度チェックにも使えます。
- 作者: 山下隆義
- 出版社/メーカー: 講談社
- 発売日: 2016/02/23
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (5件) を見る
- 作者: 麻生英樹,安田宗樹,前田新一,岡野原大輔,岡谷貴之,久保陽太郎,ボレガラダヌシカ
- 出版社/メーカー: 近代科学社
- 発売日: 2016/02/01
- メディア: Kindle版
- この商品を含むブログを見る