MacでもTensorFlowでGPUに対応することができるようになりました。ディープラーニングの学習には膨大な計算量がかかります。計算速度を速めることで、ハイパーパラメータやアイデアの検証サイクルが速まり、能率よく開発することができます。

こちらがNVIDIAが計測したAlexNetの測定結果です。

GPU測定結果 なぜGPUはディープラーニングに向いているか

GPUで処理した結果はCPUの7倍以上は性能を発揮できているのです。これは、GPUが行列演算・並列計算を得意としていてニューラルネットと相性がいいからです。

Googleが開発したTPUはさらにGPUの10倍の性能を出すらしい。恐ろしい。

インストール

まずは自身のMacがNVIDIAのGPUを搭載しているか確かめて、CUDAをインストールしましょう。

$ brew upgrade
$ brew install coreutils
$ brew cask install cuda

cuDNNのインストール こちらからcuDNN v5.1 Library for OSXをインストールして

$ tar xvfz cudnn-7.5-osx-x64-v5.1-rc.tgz
$ cd cuda
$ sudo mv include/* /usr/local/cuda/include/.
$ sudo mv lib/* /usr/local/cuda/lib/.

とします。

GUIのインストーラが現れてインストールされます。そして .zshrc.bash_profileにライブラリとパスを追加します。

export DYLD_LIBRARY_PATH=/usr/local/cuda/lib:$DYLD_LIBRARY_PATH
export PATH=$PATH:/usr/local/cuda/bin

TensorFlowをGitHubからクローンしてビルドの設定をします。

$ git clone https://github.com/tensorflow/tensorflow.git
$ cd tensorflow
$ ./configure

Do you wish to build TensorFlow with GPU support? という質問にはyesとして ここで私の環境ではどういうわけかシンボリックリンクが無限ループしてしまいました。その方はもう一度CUDAをアンインストールしてもう一度インストールし直せば大丈夫です。

そして Please note that each additional compute capability significantly increases your build time and binary size. という質問に GeForce GT 750M の場合 “3.0,3.5,5.2”と3.0を追加します。 こちらを参考にしてください。

$ bazel build -c opt --config=cuda //tensorflow/cc:tutorials_example_trainer
$ bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
$ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
$ pip install /tmp/tensorflow_pkg/tensorflow-{ verson }-whl

とするとインストール完了です。

Reason: Image not found というエラーが出たら、DYLD_LIBRARY_PATH のPATHを設定できているか確認してください。 それでもまだ出る場合、El Capitanの問題である可能性もあるので、 /usr/local/lib にシンボリックリンクして対処しましょう。 加えて、libcuda.dylibも libcuda.1.dylib という名前にシンボリックリンクすることで対処できます。

参考