iMac(late 2012)にてchainerをgpuモードで動かす
先日セミナーにてchainerを知り自分でも動かしてみたくチャレンジしてみました。
自宅のiMacはNVIDIAのグラボを載せていたのでどうせならgpuモードで
動かしたかったのですがなかなか成功せず苦労しました。。。
なんとかmnistをgpuモードで動かすことに成功したので、記録として記述します。
以下の内容は2016/3時点の内容です。
環境
マシン : iMac(late 2012)
CPU : Core i7 3.4GHz
メモリ : 24GB
GPU : GForce GTX 680MX
OS : 10.11.4(El Capitan)
pythonのインストール
- pyenvをインストールしてver 2.7.11をインストール
- pyenv-virtualenvをインストールしchainer用の環境を作成
- .bash_profileに以下を記述
#pyenv
export PATH="\$HOME/.pyenv/bin:\$PATH"
eval "\$(pyenv init -)"
eval "\$(pyenv virtualenv-init -)"
chainerのインストール(cpuモード)
pyenv_virtualenvで作成した環境をdefaultにした前提で
pip install chanier
以上でmnistのサンプルコードをダウンロードしてgpu=-1で実行したところ成功
cpuモードは超簡単!
cudaのインストール
gpuモードで動かすためにcudaをインストールした
-
NVIDIAのサイトからMacOS用をダウンロード(Ver 7.5)
https://developer.nvidia.com/cuda-downloads -
以下のページからcudnnをダウンロード(登録の必要あり)
https://developer.nvidia.com/cudnn -
cudaのインストーラを起動してインストール
-
cudnnのファイルを解凍しファイルをコピー
include -> /Developer/NVIDIA/CUDA-7.5/include
lib -> /Developer/NVIDIA/CUDA-7.5/lib -
.bash_profileに以下を記述
## cuda 7.5
export PATH=/Developer/NVIDIA/CUDA-7.5/bin:/Developer/NVIDIA/CUDA-7.5/bin/nvcc:$PATH
export DYLD_LIBRARY_PATH=/Developer/NVIDIA/CUDA-7.5/lib:$DYLD_LIBRARY_PATH
- chainerを再インストール
pip uninstall chanier
pip install chanier
-
mnistのサンプルコードをgpu=0で実行
->失敗(import cupyでエラー) -
調べてみたところEl CaptitanではDYLD_LIBRARY_PATHの上書きが有効にならないとの記事をみつけたので、試しにcudaのライブラリを/usr/local/cuda/libにリンクを貼ってみた
-s /usr/local/cuda/lib/* /usr/local/lib
-s /Developer/NVIDIA/CUDA-7.5/lib/* /usr/local/lib[^1]
[^1] /usr/local/cudaと/Developer/NVIDIA/CUDA-7.5のlibをそれぞれリンクしているのは、libフォルダだけ別のファイルが入っているため
- 再度chainerを再インストールしてコードを実行
>失敗(xcode7.3 のcommand line toolsのバージョンが対応していないっていうエラーっぽい)
"nvcc fatal : The version ('70300') of the host compiler ('Apple clang') is not supported".
XCodeの設定変更
-
Command Line Toolsをダウングレードしたいので、以下のページからxcode ver 6.4をダウンロード
https://developer.apple.com/downloads/ -
xcode.app(6.4)のパッケージの中のXcodeDefault.xctoolchainフォルダをXcode640.xctoolchainにリネームしてxcode(使ってる新しいやつ)の同じ場所にコピー
-
xcodeを起動して"preferences"-"Locations"の中の"Command Line Tools"のプルダウンを"Xcode 6.4"に変更
-
再度chainerを再インストールしてgpu=0でコードを実行
-> 成功!!
まとめ
NVIDIAのGPUを載せたMacならchainerをGPUモードで動かせることが確認できた。
ディープラーニングによく使われるGPUに比べたら非力なGPUだが、それでもCPUよりは高速に学習していて感動でした。
やっと環境が構築できたので、これから中身を触っていこうと思います。