MATHGRAM

主に数学とプログラミング、時々趣味について。

NVIDIA積んでたiMac(EI Capitan)にubuntu14.04ぶち込んで、chainerをGPUモードでぶん回せるようにしたよ!

こんにちは。
タイトルが荒ぶってんのは、この環境設定に10時間くらいかかったからです。まじ疲れた。
しかし、すべて自分の無知のせい・・・。

いつかの時のためにメモを取っておきます。

環境

結構前に買ったiMac

ぶち込んだubuntuのバージョン

経緯

とりあえず流れまとめるとこんな感じ。


iMacNVIDIAグラボが積んであることに気づく。

macでchainerのgpuモードを試そうとする。

なにやらmacでやるのは厳しそうだと知る。
根拠:ChainerをMac OSXでビルドする - Qiita

ならubuntuで動かせばええやん。とvirtual boxをインストールする。

なにやらvirtual boxに本体側のGPUを認識させるのは厳しそうだと知る。
根拠:memo: Virtual Box上のUbuntuへのCUDA導入について - おは皆伝日記

デュアルブートしかねえのか。

10時間後、成功する。chainerもGPUモードで動いた。

こんな感じです。
同じようなこと思って同じようなことしてる人たくさんいると思うんだけどな。
デュアルブート躊躇ってたらやったほうがいいと思いますよ!

まずはubuntuを入れるところから

とにかく、くそお世話になった以下のサイトに感謝します。
ottan.xyz

こちらの記事はYosemiteに関するものですが、基本的にこれに沿ってやれば行けます。
しかし一つ、つまづく点が。

ブートローダ(rEFInd)のインストール

の部分がCapitanだと上手くいきません。
そこで以下のようにすることで対処ができました。

まずはこの記事と同じようにブートローダをDLします。
この記事では"「install.sh」を実行します。"とありますが、少し形式が変わったようで、実行するファイル名は"refind_install"というものです。

まあここはフォルダの中身を見ればすぐわかるので大丈夫です。
問題点は、このrefind_installをターミナルから、起動してインストールしようとするとエラー吐くというところ。
スクショ取ってなかったので定かではないですが"command + rでリカバリーモード入ってそっちからやれや、ヴォケ"みたいな感じだった気がします。

ということで、怒られた通りにやっていきます。

  1. 再起動。
  2. command + rを長押ししてリカバリーモードに突入
  3. 上部にあるプルダウンメニューからターミナルを起動
  4. 同じようにrefind_installが存在するディレクトリへ移動して、インストーラ起動。
  5. 再起動。

こんな感じでやれば行けます。
あとは上のサイトさまが仰る通りに進めていけばOKです。本当わかりやすかった。

次はCUDAを入れる

そして次に行うのがCUDAとcuDNNの設定。ここが本当に大変でした。
参考サイトさまはこちら。
tanakahx.hatenablog.com

こちらのサイトも本当に助かりました。
余計なことをせず、ubuntuデュアルブートして諸々の初期設定が終わったら、すぐにこのサイトと同じように進めればスムーズに行けます。
ちなみに僕もCUDAのバージョンは7.5です。

CUDAが入って、テストする部分は下で紹介してるサイトがやっているようにすると、いいと思います。
こんな感じ。

$ cp -r /usr/local/cuda/samples ~
$ cd ~/samples
$ make
$ cd bin/x86_64/linux/release
$ ./smokeParticles

なんかGPU使ってる感がすごい出て、ちょっと嬉しいですよ。

cuDNNを入れる

使えるものは入れましょう。上のテスト方法が載っているこちらのサイト様に沿ってやりました。
ry0.github.io

登録までは1日くらいかかるみたいですね。僕はなぜか登録が済んであったので、速攻でできました。
まじでサンキュー、過去の自分。笑
最新版でやったので僕の場合はこんな感じでインストールできました。

$ tar -zxf cudnn-7.0-linux-x64-v4.0-prod.tar
$ cd cuda/lib64
$ sudo cp lib* /usr/local/cuda/lib64/
$ cd ../
$ cd include
$ sudo cp cudnn.h /usr/local/cuda/include/

これで無事インストール完了。

chainerをインストールする

ここまで行ければ、多分あとは大丈夫。
流れとしては、

  • pyenvを入れる。

参考サイト:Ubuntuにpyenvを用いてpythn環境を構築しました。 | たくのこ Web

  • python 2.7.6 をインストールして、環境を2.7.6に変更。
  • pipやらなんやらを入れあと、cythonとh5pyを先に入れる
  • pip install chainer でchainerをインストールする。

こんな感じで行けました。最後の部分かなり雑ですが・・・。一つだけ注意するのは、参考にするべきサイトはchainerの1.5より新しいものを扱っているもの、という部分です。1.5から依存関係が結構変わったみたいなので、ここだけ注意すればあとはなんとかなるはずです。

以上でインストールが終了です。
試しにMNISTのGPUモードを動かしたら、epoch20が5分もしないうちに終わりました。これはマジで世界変わるぞ・・・。

どっかの記事で、"10倍速度が上がるってのは、10倍間違えられるってこと。んで、機械学習で大事なことは、何回も間違う(試す)こと。" 的なことが書いてあって、さすが偉い人は言うことチゲェって思った覚えがあります。

MNISTでのCPUモードとGPUモードの速度の差は約60倍って書いてありました。つまり60倍間違えられる!やったね!

まとめ

以上です。この環境を使ってなんか記事書きますね。

最後に、参考にさせてもらったサイトさま、ありがとうございました!

それでは!

p.s. 家のiMacちゃんがまた輝き出すのがめっちゃ嬉しいわ。proに浮気しててごめんよ。