1. Qiita
  2. 投稿
  3. TensorFlow

GTX-1080でTensorFlow

  • 19
    いいね
  • 2
    コメント

GTX-1080を入手したものの、pip でインストールしたTensorFlowでは使えないとのこと
四苦八苦したのでメモ
Pythonの経験がまだ半年程度なのでインストール周りで無駄が多そう...

環境

Ubuntu 16.04
Python 3.5.2

Nvidiaのドライバが入ってないからかDVDブートだと画面が表示されなかったので、GTX-1080を取り外してインストール
Ubuntuのインストールが終わったらGTX-1080を取り付けて起動しSSHで接続した

Nvidiaドライバーのインストール

GTX-1080 など GeForce を Ubuntu 16.04 LTS で CUDA-8.0RC と共に使う
をがっつり参考にさせてもらってインストール
とりあえず、
まずは Ubuntu 16.04LTS で nVIDIA GeForce を使う一般設定から
だけを行った

これで、ようやくGTX-1080出力の画面が映るようになった

CUDAのインストール

https://developer.nvidia.com/cuda-toolkit
このサイトの CUDA Toolkit 8 RC Now Available
をクリック

Linux -> x86_64 -> Ubuntu -> 16.04 -> deb(local)
を選んでダウンロード
表示されたコマンド通りに実行してインストール

cuDNNのインストール

https://developer.nvidia.com/cudnn
ここのDownloadをクリック
cuDNN Download Survey はスルーしてページ下部の Proceed To Downloads をクリック
I Agree To.. にチェックして
Download cuDNN v5.1 (August 10, 2016), for CUDA 8.0 の中の
cuDNN v5.1 Library for Linux をクリックしてダウンロードする
TensorFlowのチュートリアルを参考にしつつ

$ tar xvzf cudnn-8.0-linux-x64-v5.0-ga.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*

CUDAのパス設定

$ echo 'export CUDA_ROOT=/usr/local/cuda' >> ~/.bash_profile
$ echo 'export PATH=/usr/local/cuda/bin:$PATH' >> ~/.bash_profile
$ echo 'export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATH' >> ~/.bash_profile
$ echo 'export CPATH=/usr/local/cuda/include:$CPATH' >> ~/.bash_profile

*追記
akinorihommaさんにご指摘いただきました。
上記コードがecho ... > ... で上書きになってました。
修正依頼を反映しております。申し訳ございませんでした。

Nvidiaドライバーの再インストール

CUDAをインストールしたらGUIでログインできなくなった(どうやらドライバのせいらしい)ので再インストールする

$ sudo apt-get install nvidia-367 --reinstall
$ sudo reboot

Bazelのインストール

TensorFlowをビルドするためにBazelをインストールする
http://www.bazel.io/docs/install.html
このマニュアル通りに行う

Pythonのインストール

Pythonはpyenvを使ってインストールした
pyenvでのインストールは文献がたくさんあるので省略

TensorFlowのビルド

まずはリポジトリをクローンしてくる

$ git clone https://github.com/tensorflow/tensorflow ~/tensorflow

マニュアル通りに依存関係をインストール
pyenvの場合はどうなるのだろうと思いながら...

$ sudo apt-get install python3-numpy swig python3-dev python3-wheel

特に記述はなかったように思うけど、gccのバージョンが5.3以上だとビルドエラーを起こしたので4.9をインストールしておく

$ sudo apt-get install gcc-4.9
$ sudo apt-get install g++-4.9
$ sudo apt-get install libstdc++6-4.9-dbg

クローンしてきたディレクトリに移動

$ cd ~/tensorflow

pyenvのバージョン指定

$ pyenv local YOUR_VERSION

*追記
YusukeSuzuki@githubさんのコメントより、pyenvの設定を行わないとビルド結果が正しくないようなので、
pyenvで用いるバージョンを設定してください。
ご指摘ありがとうございました。

ビルドの設定を行う

$ ./configure

Google Cloud Platform supportGPU supporty
gccはさっきインストールした4.9を指定する/usr/bin/gcc-4.9
それ以外はEnter連打。

設定ができたらさっそくビルド

$ bazel build -c opt --config=cuda //tensorflow/tools/pip_package:build_pip_package
$ bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg

これで/tmp/tensorflow_pkg.whlファイルが生成されてた

ということでpip install

$ pip install /tmp/tensorflow_pkg/tensorflow-0.9.0-py3-none-any.whl

これでmnistのサンプルも実行できた