はじめに
この記事は 2017/10/25現在の情報です。
TensorflowのためのGPU環境を用意したときに時間を要してしまったので注意点をまとめておきます。
これからTensorflowのGPU環境を用意する方の時間の節約になれば幸いです。
伝えたいこと: Tensorflowを使うときはcudaとcudnnのバージョンに注意
目次
- 環境
- Tensorflow対応のcudaのバージョンの注意
- Tensorflow対応のcudnnのバージョンの注意
- その他の注意点
- ざっくり手順
1. 環境
Ubuntu 16.04 azure x86_64
(この記事の内容自体は環境に依存しない可能性が高いと思います)
2. Tensorflow対応のcudaのバージョンの注意
cudaのtoolkitをダウンロードするときは以下のページからダウンロードしますが、現時点での最新版が9.0になっています。つまり、普通にダウンロードした場合cudaのバージョンは最新の9.0です。
ただし、現時点のTensorflowはcudaの9.0には対応していません。
cuda9.0の環境を用意してTensorflowのGPU版を実行したところ、libcusolver.so
に関してエラーが発生しました。
そのため、以下の記事で言及されているようにcuda toolkitのarchiveから8.0のバージョンをダウンロードする必要があります。
Download and install CUDA 8.0 instead of CUDA 9.0
↓ここに8.0があります。
CUDA Toolkit Archive
3. Tensorflow対応のcudnnのバージョンの注意
cuDNNダウンロードリンク: cuDNN Download
cuda8.0に対応する最新版のcudnnのバージョンはv7.0です。
ただしここにも注意が必要でv7.0ではTensorflowは対応していないようです。
Tensorflowを動かすと、libcudnn.so.6
に関してエラーが発生します。
この場合対処する方法はあって、以下のようにlibcudnn.so.6
に対してシンボリックリンクをはってあげればオーケーです。
$ sudo ln -s /usr/lib/x86_64-linux-gnu/libcudnn.so.7.0.3 /usr/lib/x86_64-linux-gnu/libcudnn.so.6
以下の記事で言及されていました。なお、このことが事前に分かっていればcudnnのv6.0をはじから選択するのが無難ですね。
Ubuntu 16.04LTSにKerasやTensorFlowを入れてGPGPUできるようにする
4. その他の注意点
他に何かエラーが起きた場合、環境変数の設定がしっかりされているか確認すると良いと思います。
以下のように設定が必要です。
export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
しっかり書いておかないと例えば、以下のようなインストールをしたときにバージョンを勝手に変えられたりしました。
$ sudo apt install nvidia-cuda-toolkit
5. ざっくり手順
ざっくりと手順をまとめます。
公式の手順を追っていけば出来ると思います。
また、以下の大筋だけ把握しておけば検索して他の記事で細かいことは対応出来ると思います。
① NVIDIAドライバダウンロード
自分のGPU環境を選択して用意。
NVIDIAドライバダウンロード
② cudaの準備
こちらのアーカイブのリンクから8.0のバージョンを選びましょう。
CUDA Toolkit Archive
③ cuDNNの準備
cuda8.0用のv6.0をダウンロードすればよいです。
(利用にはログインが必要になると思います。)
各cudnnごとにインストール手順がcuDNN Install Guide
という項目のリンクにあるのでそれを見るとインストール出来ます。
例えば、ubuntu16.04なら以下の3つをダウンロード、実行すればよいです。
cuDNN v6.0 Runtime Library for Ubuntu16.04 (Deb)
cuDNN v6.0 Developer Library for Ubuntu16.04 (Deb)
cuDNN v6.0 Code Samples and User Guide for Ubuntu16.04 (Deb)