1
3

More than 5 years have passed since last update.

iMacにGPU版tensorflowをインストール。を挫折するまで。

Last updated at Posted at 2018-10-14

環境

iMac, Late 2012
macOS High Sierra 10.13.4
CPU: 2.7GHz intel Core i5
GPU: NVIDIA GeForce GT 640M 512MB
GPU Driver Version: 355.11.10.10.30.120

卒論でDeep Learningを扱うため、研究室のNVIDIA製GPUを積んでいるマシンでGPU版tensorflowを使えるようにセットアップしようと試みました。
まぁ、今さっきメキメキっと音を立てて心が折れたところなんですけど。。。
結論(推論)からいいますと、おそらく今回のGPUドライバのバージョンに対応するバージョンのCUDAドライバをNVIDIAが提供していないのではないかと思われます。正しくセットアップできる方法をご存知の方!お願いします!教えてください!

CUDA ドライバ+ツールキットをインストール

基本的に以下の記事を参考に進めました。
1. Python: Keras/TensorFlow の学習を GPU で高速化する (Mac OS X)
2. TensorFlowのGPU版をMacに対応させる

上記の記事には以下のコマンドでcudaがインストールできると書いてあるのですが、現在はcuda->nvidia-cudaとなっているようですのでご注意を。

$ brew install coreutils
$ brew cask install cuda //今はない
=>
$ brew cask install nvidia-cuda  //こちらで

またはNVIDIAのサイトからインストールできます。
ここでバージョンはこちら(tensorflowのサイト)に、CUDA8、cuDNN5.1はテスト済みだと書いてあったのでそちらのバージョンを選びました。

cuDNN をダウンロード

CUDAバージョンに合うcuDNNをこちらからダウンロード。なお、会員登録が必要です。

それらを解凍して、/usr/local/cuda以下のファルダに入れます。

$ sudo mv ~/Download/include/* /usr/local/cuda/include/
$ sudo mv ~/Download/lib/* /usr/local/cuda/lib/

tensorflow-gpuをpipでインストール

$ pip install tensorflow-gpu

ここで僕はtensorflowをインポートした時にLibrary not loaded: @rpath/libcublas.8.0.dylibというエラーがでてものすごいハマりました。
これはシンボリックリンクが上手く貼れていないために生じているようです。
ググるとOSXのセキュリティシステムのSIPがどうとかLD_LIBRARY_PATH(今はEl Capitan では LD_LIBRARY_PATH, DYLD_LIBRARY_PATH が環境変数にならないだそうです)とかがどうとか出てきます。僕はそれらやっても解決しませんでしたが、以下のコマンドで解決しました。結構な力技ですね。笑

$ ln -s /usr/local/cuda/lib/* /usr/local/lib/

これでOK!いざ高速計算!!ひゃっほーーーい!!

計算実行ー>遅い!

なんで!?
ん〜。。。

GPU対応tensorflowを野良buildしてインストール

CUDAとかOSとかのバージョンの問題なのかな、と思い。以下の記事を参考にtensorflowを自前でビルドしました。
MacでGPU(cuda)が使えるtensorflowをビルドする

基本的に上記の手順にしたがえばOKですが、cuDNNのファイルへのリンクを通しておかないとエラーが出ます。また場合によっては
Linking of rule '//tensorflow/python:_pywrap_tensorflow_internal.so' failed
というエラーが出るので、ここに
書いてあるようにtensorflow/third_party/gpus/cuda/BUILD.tplファイルのlinkopts = [“-lgomp”]をコメントアウトしてください。

buildは1時間ぐらいかかります。

確認->GPU認識してないフザケンナ!

ようやくtensorflowを再インストールして高速計算だ!!と思いきやまたもや遅い!怒

TensorFlowからGPUが認識できているかを2行コードで確認する
の方法で確認してみてもCPUしか認識していない!ちっっっっっっっくしょ〜〜〜〜〜!!

CUDAの動作確認->ダメじゃん!

というかそもそもCUDAドライバがダメなんじゃないかと思いまして、CUDA sampleから確認。

$ cd /Developer/NVIDIA/CUDA-9.1/samples/1_Utilities/deviceQuery
$ sudo make
$ ./deviceQuery

=>
./deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

cudaGetDeviceCount returned 35
-> CUDA driver version is insufficient for CUDA runtime version
Result = FAIL

。。。ダメじゃん!!!最初っからダメだったんじゃん!!

原因

Python CUDA on MacBookPro
上記の記事によると、GPU Driver VersionとCUDA Driver Versionを統一しなければならないらしい。じゃあ、NVIDIAのサイトからバージョン探してダウンロードしちゃえばいいんだ!と探してみるも、、、ない!!!なんてっこったパンナコッタ!!!圧倒的にMacOS対応のドライバがない!!!サポートやめてるっぽい!!

GPU Driverよりバージョンの低いCUDA Driverならイケるんじゃないかと試してみたりもしましたが、それもダメでした。涙
そんなこんなで挫折しましたので、対応方法を知っている方がいれば是非お教えください。(土下座)

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3