状況
タイトル通り、Ubuntu+GPUにバージョンアップしたTensorFlow1.4を入れるとNVIDIAドライバとPyhtonバージョンの間でトラブルがあったので、一通りメモ。結果的に、うまくGPUが動いてMLできているのでとりあえず成功。
Anacondaインストール
まずはapt-get更新。
$ sudo apt-get update
更新できたら、Anacondaの公式サイトにいってインストーラーダウンロード。
$ bash ~/Downloads/Anaconda3-5.0.1-Linux-x86_64.sh
シェルを使ってインストール。※リモート操作などの場合は、pyenvを使うのがスマートっぽい。
Anacondaが入ったらPythonの主要なライブラリはデフォルトでインストールされているのでとりあえず
$ pip install conda
でcondaをインストール。エラーが出た場合は、
$ pip install --upgrade pip
でpipを更新するとできる(かも)
condaがインストールできたら、TensorFlow用の仮想環境を構築する。
condaコマンドで仮想環境を作る
下記のように。
$ conda create -n [env name] python=[Python version] anaconda
たとえば
$ conda create -n tensorflow13 python=3.6 anaconda
みたいな。
※タイトルにもあるようにTensorFlowが1.3のときは3.6に対応してたが…1.4から3.6だとエラーが出るようになった?結果的に3.5にするとうまくいったという記事ですが、TensorFlow側でいつの間にか対応しているということはありそう。
【以下、NVIDIAのTensorFlow用のチュートリアル】
https://www.nvidia.com/en-us/data-center/gpu-accelerated-applications/tensorflow/
NVIDIAドライバの最新版をインストール
$ sudo add-apt-repository ppa:graphics-drivers / ppa
$ sudo apt-get install nvidia-375
このあとグラフィックドライバを有効にするために再起動したほうが良いみたい。
CUDA ToolKitインストール(ver8.0)Linux用をダウンロード
重要 ver.9.0が最新ですが、TensorFlow1.4に対応したCuDNNのバージョン6.0に対応してないので8.0をインストールする。
https://developer.nvidia.com/cuda-toolkit
公式サイトでdebファイルをダウンロードしようとすると、9.0しかダウンロードできないので、Additional ResourcesのLegacy Releasesから8.0 GA2をダウンロードする。
とにかく最初に8.0をダウンロードするのが重要で、もし最新版をインストールしてる場合はアンインストールしたほうがよさそうです。(ディレクトリ構造が違うらしくCuDNNがスマートにインストールできない)
$ sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb```
$ sudo apt-get update
$ sudo apt-get install cuda
を手順通り行う。CUDA ToolKitがインストールされた。
CuDNN for Linuxをインストール
NVIDIAにログインして素直にcuDNN v6.0 Library for Linuxをダウンロード。
$ tar -xzvf cudnn-8.0-linux-x64-v5.1.tgz
で解凍で中身をコピー。
$ sudo cp cuda/include/cudnn.h /usr/local/cuda/include
$ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
と、順番に実行。最新版をインストールしていると、そもそもusr/local配下にcudaなんてディレクトリが生成されなかったんですが自分だけでしょうか。
TensorFlowとの依存関係に必要なパッケージをインストール。
$ sudo apt-get install libcupti-dev
これでNVIDIAのドライバ周りが整った。
TensorFlowをインストールする。
さきほど作ったAnacondaの仮想環境を有効にする。
$ source activate [env name]
で、
pip install tensorflow-gpu
してTensorFlowのGPU版をインストール。
で、ここからが問題。TensorFlow1.4だと、ここでなぜかPython3.5じゃないと動きませんよといわれる。
エラーメッセージで検索すると、GitHubのTensorFlowのフォーラムでもガヤついていたので、自分だけじゃないという安心感。
だったらばということでAnacondaで再度Python3.5の実行環境作って走らせたら動いたよかったね!