GTX1050tiを取り付けからTensorFlowを動かすまで


機械学習用にGPUが欲しいけどお高いGTX1080等に手を出せずにいた自分が、ついにGTX1050tiを買っていろいろした話。

環境・目標

windowsとkubuntuのdualbootをしています。メインはkubuntu。これまではグラフィックはCPU(i7-2700K)についているHDGraphics3000頼り。
kubuntuで機械学習にGPUを使えるようにするのが目的。windowsは動けばOK。

取り付け・ドライバのインストール

自作Pcにwindows10とubuntu14.04をいれてみた(GPU有)」によると、デフォルトのままの場合、GPUを挿すとGPU側から出力しようとするんだけど、相性の問題か、画面がほぼ全く映らない。なので、BIOSの設定をいじってCPU側から出力されるようにする。
こうすると、windowsもkubuntuも起動できるので、それぞれでドライバをインストール。windowsはnvidiaのサイトからドライバのインストーラを拾ってきて実行。

kubuntuが厄介だった。
GTX-1080 など GeForce を Ubuntu 16.04 LTS で CUDA-8.0RC と共に使う」をそのままなぞるのが正解だった。(「nvidia-番号」は適当に最新のもので)
cudaを入れた後に「nvidia-番号」をインストールし直すというのが謎の手法だが、nvidiaのサイトのドライバのインストーラを単純に実行して失敗した。(デスクトップ環境であるplasmashellが起動後すぐにクラッシュするようになった。)

cuda・cudnn

cudaは上でインストールできたのでOK。cudnnはnvidiaの会員登録のようなものが必要。ダウンロードしたら、TensorFlowのサイトに書かれているやり方でインストール。(https://www.tensorflow.org/versions/r0.11/get_started/os_setup.html#optional-install-cuda-gpus-on-linux)

TensorFlowはバージョン0.11になってcuda8をサポートしたらしいので、自分の場合は現状の最新のものをインストールできたけど、本来は上手く行かない可能性があるので注意が要りそう。

TensorFlow

pipコマンドで適当に入れればいいのだけど、CPUを使う環境を残しておきたい、GPU環境が修正不要でこのまま使うか疑わしい、という理由で、pyenv-virtualenvでGPU環境下のTensorFlowを作ることにした。pyenv-virtualenvは、環境に名前をつけたり、ディレクトリごとに環境を用意できるのがメリット。
pyenvはanyenvでインストールして、

git clone https://github.com/yyuu/pyenv-virtualenv ~/.anyenv/envs/pyenv/plugins/pyenv-virtualenv

でプラグインとしてインストール。
pyenvでpython環境を作るときに変な警告が出たのでpyenvのwikiに書かれた必要なものをインストールしました。(https://github.com/yyuu/pyenv/wiki/Common-build-problems)

そんな感じで、専用の環境を作り、その環境にTensorFlowを含め使いそうなパッケージをインストール。

とりあえず、import tensorflow as tfだけで動かしたり、mnistしてみたりして確認。肝心の計算スピードは、以前書いたCNNで試してみて、一分ちょっとで99%の精度が出たので満足。