概要
iMacやMacBook Proは、機種によってはNVIDIAのグラフィックボードを搭載しているようです。
手持ちのMacBook Pro (Retina, 2012 MID)にNVIDIA GeForce GT 650Mが載っていました。
せっかくのGPUを活かすべく、tensorflow-gpuのセットアップをしてみました。
注意
- 2017年2月12日時点の記事です。
- CUDA GPUsが必要です。
環境
- OS 10.12.3 (Sierra)
- Python 2.7
- tensorflow-gpu 0.12.1
セットアップ
基本的には、公式のDownload and Setupに従います。また、コマンドは参考記事とほぼ同様です。
※以下はTensorflowをconfigure済みの場合のコマンドです。途中で試行錯誤したので、一部の手順が抜けている可能性があります。
Cuda
$ brew upgrade
$ brew install coreutils
$ brew cask install cuda
cuDNN
NVIDIAのダウンロードページから入手。ユーザー登録が必要。
今回はcuDNN v5.1 Library for OSXをダウンロードしました。
中身を、/user/local/cuda/lib
と /user/local/cuda/include
にそれぞれ移します。
後の実行時にエラーが出たので、シンボリックリンクも貼りました。
$ cd /usr/local/cuda/lib
$ sudo ln -s libcuda.dylib libcuda.1.dylib
パスの記述は、最終的に以下のようになりました。
export CUDA_HOME=/usr/local/cuda
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda/lib"
export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:$CUDA_HOME/lib"
export PATH="$CUDA_HOME/bin:$PATH"
tensorflow-gpu
$ brew install bazel
$ brew install tensorflow-gpu==0.12.1
インストールができたら、configureしてください。
動作確認
tensorflowを使うサンプルを動かしてみます。インポートエラーなどが出なければOKです。
公式のUsing GPUsに色々書かれていますが、configを渡すこともできます。
import tensorflow as tf
...
# for tensorflow-gpu
config = tf.ConfigProto()
config.log_device_placement = True
config.gpu_options.allow_growth = True
...
sess = tf.Session(config=config)
sess.run(c)
実行時に、以下のようにデバイスの情報が表示されます。
I tensorflow/core/common_runtime/gpu/gpu_device.cc:885] Found device 0 with properties:
name: GeForce GT 650M
major: 3 minor: 0 memoryClockRate (GHz) 0.9
pciBusID 0000:01:00.0
Total memory: 1023.69MiB
Free memory: 833.14MiB
さいごに
途中で結構ハマってしまいました。
また、Free memoryが少ない場合、実行後に落ちました。最初はセットアップに失敗したかと思いましたが、Chromeなど他のアプリケーションをシャットダウンすると上手くいきました。
CPU版tensorflowと比べると、かなり処理が速くなった気がします。メモリ容量で問題が出た時は、別マシンか外付けのグラフィックカードを使うのが良いかもしれません。