オワラナイ日常

国家総合職試験、官庁訪問、院試などを本音で語ります。

CUDA9.1/9.0 + cuDNN7 + Tensorflow + Keras + Pyenv + Anaconda3 + Python3/2.7の最新版導入の仕方まとめ

CUDA9.1/9.0はTensorflowに対応していないのではないか?と話題になっていますが、

海外のデベロッパサイトを通じ調べたところ実は簡単に入れることができる!ということを知り、 ぜひみなさんに使っていただきたいと思い、備忘録として残しておきます。

なぜ、私が、ここまでして実装したかというと、使っているGPUがRyzen7のため、CUDA9.1/9.0でないと性能が発揮できないからです。

他のGPUにおいても、本当にCUDA9.1/9.0はアルゴリズムが改良されて、計算速度が早いのでぜひオススメです!

ある場所ではrootで入らなければ行けなかったり、CUDA9.1ゆえのトラブル(なぜかファイルが移動している)があり少々手間取りますが、必ず導入はできますので最後までお付き合いください。

※CUDA9.0をインストールする場合は、⑳を飛ばしてください。

※最新版Ubuntu17.04にて実装済

①まずpyenvの必要なモジュールをインストール(すべてを1行で)する。

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev libpng-dev

②pyenvをgitからcloneをする。

git clone git://github.com/yyuu/pyenv.git ~/.pyenv

③そしてプラグインもcloneする。(すべてを1行で)

git clone https://github.com/yyuu/pyenv-pip-rehash.git ~/.pyenv/plugins/pyenv-pip-rehash

④Pathを通す。

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
source ~/.bashrc

⑤Anacondaの最新版をチェック

pyenv install -l | grep anaconda3

⑥私の場合は、anaconda3-5.0.1でしたのでインストールする。

pyenv install anaconda3-5.0.1

⑦グローバルも忘れずに。

pyenv global anaconda3-5.0.1

⑧Pathを通す。

echo 'export PATH="$PYENV_ROOT/versions/anaconda3-5.0.1/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

⑨python3が動くか確認

python

⑩Anacondaの環境の中に、python2.7も導入する。

conda create -n py27 python=2.7 anaconda
source activate py27

⑪python2.7が動くか確認

python

⑫Anacondaの環境から出ます。

source deactivate

⑬念の為、今までインストールしたものをアップデート

conda update -y conda
pip install --upgrade pip

⑭いよいよCUDAをインストールする。

sudo dpkg -i cuda-repo-ubuntu1704-9-1-local_9.1.85-1_amd64.deb
sudo apt-key add /var/cuda-repo-9-1-local/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda

cuDNNをインストールする。(すべてを1行で) ※Runtime LibraryとDeveloper Libraryの2つ。

sudo dpkg -i libcudnn7_7.0.5.15-1+cuda9.1_amd64.deb libcudnn7-dev_7.0.5.15-1+cuda9.1_amd64.deb

bazelをダウンロードした後、インストールする。 ※bazel-0.7.0推奨

chmod +x bazel-0.7.0-installer-linux-x86_64.sh
./bazel-0.7.0-installer-linux-x86_64.sh --user
export PATH="$PATH:$HOME/bin"

⑰bazelが起動するか確認。

bazel

GPUが認識されているか確認。(動かなければ再起動)

nvidia-smi

⑲tensorflowをcloneする。 GPUを使いますか?の質問以外は、Noを答える。

sudo apt-get install libcupti-dev
git clone https://github.com/tensorflow/tensorflow
cd tensorflow
git checkout r1.4
./configure

⑳いよいよですが、buildする前に、CUDA9.1のシンボリックをルートで書き換える。(すべてを1行で)

root# ln -s /usr/local/cuda/include/crt/math_functions.hpp /usr/local/cuda/include/math_functions.hpp

㉑buildする。(すべてを1行で)

bazel build -c opt --copt=-march="haswell" --config=cuda //tensorflow/tools/pip_package:build_pip_package

㉒buildもあと少し。

bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg
ls /tmp/tensorflow_pkg

㉓そしてtensorflowをインストールする。

pip install /tmp/tensorflow_pkg/tensorflow-1.4.1-cp36-cp36m-linux_x86_64.whl

㉔Kerasをインストールする。

pip install keras

以上でインストールは終わりになります。 あとは、再起動をした後、コマンドプロンプト

python
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!

と表示されれば、インストールは完了です。 快適なDeep learningを楽しみましょう。お疲れ様でした。

参考にさせていただいたサイト

qiita.com

【随時更新】pyenv + Anaconda (Ubuntu 16.04 LTS) で機械学習のPython開発環境をオールインワンで整える  | ALGO GEEKS

Build from source  |  TensorFlow

stackoverflow.com

以上、ありがとうございました。