lubuntu 16.10にGPU版tensorflowをインストールしてみました。ようやくできました。

NVIDIA GeForce 950M搭載PCにubuntuをインストールしてみた。

前回ubuntu16.04をインストールしました。

ところがnvidiaドライバを入れたところ、ログインループ問題に引っかかり解決できませんでした。w

永久にログインすらできなくなる糞仕様。

ubuntu16.04に見切りをつけて、最新のlubuntu16.10英語版をインストールしたところ大正解。

最新の環境をあっさり一発でセットアップできました。今までの苦労は何だったんだ。

軽量lubuntuにすると起動も軽快です。

環境構築だけで苦戦している人が多いようですが、tensorflowやディープラーニングを構築するならlubuntu16.10です。

一つずつ確認しながら進んで行きましょう。

環境 lubuntu16.10
GPU: GEFORCE 950M

lubuntuのダウンロード

$sudo apt-get update

$sudo apt-get upgrade

nvidiaドライバのインストール 
nvidiaの最新ドライババージョンは375です。

nvidia ドライバ
GPUを検索にかけるとバージョンがでてきます。恐らくみんな375なはずです。
ダウンロードボタンが出てきますが、クリックしません。apt-get からインストールします。

$sudo add-apt-repository ppa:graphics-drivers/ppa

$sudo apt-get update

$sudo apt install nvidia-375 nvidia-settings

$sudo apt install mesa-utils

再起動するとNVIDIA X Server Settingsがインストールされています。

GPUの使用状況を確認してみます。
$nvidia-smi
Fri Dec  9 10:08:43 2016      
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.20                 Driver Version: 375.20                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 950M    Off  | 0000:01:00.0     Off |                  N/A |
| N/A   40C    P0    N/A /  N/A |      0MiB /  2034MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+
                                                                              
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

Cudaインストール
$sudo apt-get install nvidia-cuda-toolkit

Cuda 8.0がインストールされています。
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2016 NVIDIA Corporation
Built on Sun_Sep__4_22:14:01_CDT_2016
Cuda compilation tools, release 8.0, V8.0.44

cuDNNインストール
cuDNNとはディープラーニング用のライブラリです。

NVIDIA cuDNN
ログインして、cuDNN v5.1 Library for Linuxをダウンロードします。
$tar xzvf cudnn-8.0-linux-x64-v5.1.tgz
$ sudo cp -a cuda/lib64/* /usr/local/lib/
$ sudo cp -a cuda/include/* /usr/local/include/
$ sudo ldconfig

tensorflowのインストール
pythonはバージョン2.7と3.5の2つが入っています。2と3で互換性がないので両方入っています。
$python -V
Python 2.7.12+

$python3 -V
Python 3.5.2+

$sudo apt-get install python3-pip

$sudo pip3 install --upgrade pip

$export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-0.12.0rc0-cp35-cp35m-linux_x86_64.whl

$sudo pip3 install --upgrade $TF_BINARY_URL

exportの一行ですが、下のtensorflow.orgから貼り付けました。ubuntu64 bit, GPU enabled, python3.5
Download and Setup - TensorFlow

$ python3

>>> import tensorflow as tf
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcurand.so locally


>>> hello = tf.constant('hello tensorFlow!')
>>> sess = tf.Session()
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:936] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
I tensorflow/core/common_runtime/gpu/gpu_device.cc:885] Found device 0 with properties:
name: GeForce GTX 950M
major: 5 minor: 0 memoryClockRate (GHz) 1.124
pciBusID 0000:01:00.0
Total memory: 1.99GiB
Free memory: 1.95GiB
I tensorflow/core/common_runtime/gpu/gpu_device.cc:906] DMA: 0
I tensorflow/core/common_runtime/gpu/gpu_device.cc:916] 0:   Y
I tensorflow/core/common_runtime/gpu/gpu_device.cc:975] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 950M, pci bus id: 0000:01:00.0)

これでGPU版tensorflowをインストールできました。

厳選リンク 参考にさせていただきました。
TensorFlow r0.9 (GPU版)を ubuntu16.04 にインストール


ついでに初期設定をしておきましょう。
google chromeのインストール

$wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb

$sudo dpkg -i google-chrome*.deb

$sudo apt-get install -f

$google-chrome

windowsとubuntu マルチブートにしていると時刻がずれるのを直す

$sudo timedatectl set-local-rtc 1

lubuntuの日本語化

昔私が書いたブログ
Elementary OS 初期設定2 日本語入力 Japanese Input

変更点が一つあります。
zenityというパッケージを追加インストールします。
$sudo apt-get install zenity

パッケージをインストールし終わったらスタートメニューからSettings(設定) -> Language Support(言語サポート)
日本語を一番下から一番上に引っ張ります。

$fcitx-setup-helper

ログアウトし直すと半角/全角キーを押すと日本語入力できるようになります。