環境
macOS : Sierra
pyenv : 1.0.10
TensorFlow : 1.0.1
ハマった内容
DockerでTensorFlowを実行していたんだけど限界を感じたので「やっぱりGPUや!GPGPU入門や!」としようとしたらハマった。
インストール方法
pyenv
でAnacondaを用意して、PipでTensorFlowをインストールした
pyenv
だいぶ前だったので覚えてないけれど、Homebrewを使った気がする
$ brew update
$ brew install pyenv
参考 : pyenv/pyenv: Simple Python version management
CUDA & cuDNN
Download and Setup | TensorFlowを参考にしてセットアップする
easy_installは使わなかった。
感想でしかないのだけれど、こういうTensorFlowの範疇外のノウハウまで書かれているのはTensorFlowのユーザーの広がりと、サポートの大変さがにじみ出ていると思う。
TensorFlow
Jupyter Notebookを使いたいので、pyenvでAnacondaを利用
$ pyenv local anaconda3-x.x.x
なお、次のようなことをやろうとするとうまく行かなかった(ログを残せばよかった)
$ pyenv virtualenv anaconda3-x.x.x tensorflow
$ pyenv shell tensorflow
$ jupyter-notebook
# (この環境にはjupyter-notebookというコマンドが無いのでanaconda3-x.x.xを使ってね的なエラーメッセージ)
エラー内容
ここまで実行してもimport tensorflow
が通らなかった
StackOverflowでも同じバグを踏んでいる人が居た
解決策
Githubでissueに解決策が書かれていた
他にもいくつか解決策が書かれていたけれど、結局これにしたがってmacOSのSIP (Security Integrity Protection) を切った
原因
Homebrewでインストールした場合、cudaは/Developer/NVIDIA/CUDA-8.0/
にインストールされ、/usr/local/cuda
にエイリアスが作成される
インストール先のディレクトリ/usr/local/cuda
がmacOSでSIPにより保護されているため、pythonからアクセス出来ないのが原因
なので色々と対処方法は考えられるけれど、cuda, cuDNN, TensorFlowのアップデートの手間を考えてSIPを切った
Disclaimer
上記の内容はOSに備えられたセキュリティ機構を自らオフにしています
CentOSでselinuxをOffにするのと同様に、実行する場合は自己責任で実行ください
Reference
TensorFlow
-
Anaconda 環境に Google の人工知能オープンソース Tensorflow をインストールしてみた - datalove’s diary
-
"import tensorflow" terminated by signal SIGSEGV (Address boundary error) - Stack Overflow