深層学習環境の更新
前提
既に,Ubuntu 16.04 LTSにCUDAとTensorFlowを入れて深層学習環境をつくるの方法にてCUDA,cuDNN,TensorFlowを導入済みとする.
やりたいこと
- CUDAのバージョンアップ
- cuDNNのバージョンアップ
- TensorFlowの更新
グラフィックカードドライバーとCUDAのバージョンアップ
既にレポジトリを登録しているの,通常のパッケージ更新で大丈夫.
sudo aptitude update
sudo aptitude upgrade
パッケージ依存関係の問題の解消が求められるかも知れない. その場合は設定を考え修正.
ちなみに~/.zshrc
の設定は以下のように修正した.
export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export CUDA_HOME=/usr/local/cuda
テスト
サンプルを試してみる.
cd /usr/local/cuda/samples
sudo make
OpenGL関係もビルドできるようになったが,実行時エラーが出る. とりあえず今後の課題.
幾つか試す.
cd bin/x86_64/linux/release
# デバイス情報
./deviceQuery
# バンド幅
./bandwidthTest
# 多体問題
./nbody -benchmark -numbodies=256000 -device=0
cuDNNのバージョンアップ
導入したい最新のcuDNNをダウンロードする.NVIDIA Developerのアカウントが必要. ダウンロードしたファイルを展開し,CUDAのディレクトリへコピーする.
tar xzvf cudnn-9.1-linux-x64-v7.tgz
sudo cp -a cuda/lib64/* /usr/local/cuda/lib64/
sudo cp -a cuda/include/* /usr/local/cuda/include/
TensorFlowの更新
CUDAとcuDNNの対応を状況を確認して,適切なものをインストールする. pypiからではCUDAなどのバージョンが適切でない場合があるので,ここではTensorFlow Optimized Wheelsを利用する. 例えば,Python3.5,CUDA9.1であれば,TensorFlow 1.4.1 (GPU, CUDA 9.1).
TensorFlow Optimized Wheelsでは基本的にIntel(R) Math Kernel Library for Deep Neural Networks (Intel(R) MKL-DNN)をサポートするwheelとなっている(そうでないものにはwithout MKLなどの記載がある).そのためMKL-DNNを導入する必要がある. MKL|TensorFlow Optimized Wheelsの通りの手順でインストール可能.
一度古いバージョンをアンインストールし,適切なWheelのURLを指定してインストールする.
pip uninstall tensorflow-gpu tensorflow-tensorboard
pip install --upgrade https://github.com/mind/wheels/releases/download/tf1.4.1-gpu-cuda91/tensorflow-1.4.1-cp35-cp35m-linux_x86_64.whl
これでインストールできた.
テストコードを試して,インストールの完了とGPUが利用できているか確認. チュートリアルから以下のコードを試す.
# Creates a graph.
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)
# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# Runs the op.
print(sess.run(c))
うまくいけば環境が構築できたことになる.
今後の課題
- OpenGL系のテストの実行時エラーの解消