CUDA+KerasでDeep Learningを行うときの最低限の環境構築

ubuntuをインストールした際にGPUでKerasを使用するために行った設定を覚えておくためのページです

* 環境

|OS        |Ubuntu16           |
|:-:       |:-:                |
|GPU       |Geforce GTX 1080 Ti|
|GPU Driver|nvidia-396         |
|CUDA      |cuda9.2            |
|cudnn     |cudnn7.1           |

# いろいろセッティングを行う前に
下のとこで書かれているパッケージのインストールなどは基本的に(terminal)コマンドラインを使用する
そのために知っておくと楽な操作方法や知っていてほしい最低限のコマンドを並べていく

* ターミナルを開くショートカットキー
    * `Ctrl+Alt+t`

* ターミナルでのコピー&ペースト
    * コピー: `Ctrl+Shift+c`
    * ペースト: `Ctrl+Shift+v`  

* ターミナルでのファイルの開き方
    * gedit ファイルのあるパス    

* 知っていてほしいコマンドリスト

|コマンドリスト |コマンドの意味                             |
|:------------|:---------------------------------------|
|sudo         |管理者権限                                |
|gedit(or vim)|ファイル編集                              |
|cp(mv)       |ファイルやディレクトリのコピー(移動)          |
|ls           |現在いるディレクトリにあるファイル(フォルダ)一覧|
|cd           |作業ディレクトリの変更                      |
|cat          |ファイルの中身を確認する                    |
|tar(unzip)   |tar(zip)ファイルを解凍する                 |
|pip          |pythonのインストールパッケージ管理           |


# セッティング

* 環境の更新

    ```
    sudo apt-get update
    sudo apt-get upgrade
    ```

* 必要なパッケージをインストール

    ```
    sudo apt-get install git build-essential cmake
    sudo apt-get install vim
    ```

### GPU環境の構築
* NVIDIAのドライバーのインストール

    `Ctrl+Alt+F1`でCUI画面に切り替え, コマンドでGUIを停止後ドライバーをインストールする
    インストールするドライバのバージョン(今回はnvidia-396)は[ここ](http://www.nvidia.co.jp/Download/index.aspx?lang=jp)でGPUの製品の種類などを入力していき,自分の環境にあったものを使用する

    ```
    sudo service lightdm stop   #GUI画面の停止
    sudo add-apt-repository ppa/:graphics-drivers/ppa
    sudo apt-get update
    sudo apt-get install nvidia-396
    sudo reboot    #再起動
    ```
    インストールできているかの確認
    ターミナルに

    ```
    nvidia-smi
    ```
    
    と入力し,下記のように表示されれば問題なし

    ```
    +-----------------------------------------------------------------------------+
    | NVIDIA-SMI 396.26                 Driver Version: 396.26                    |
    |-------------------------------+----------------------+----------------------+
    | 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 1070    Off  | 00000000:01:00.0  On |                  N/A |
    | 27%   32C    P8     6W / 151W |    412MiB /  8117MiB |      0%      Default |
    +-------------------------------+----------------------+----------------------+
                                                                               
    +-----------------------------------------------------------------------------+
    | Processes:                                                       GPU Memory |
    |  GPU       PID   Type   Process name                             Usage      |
    |=============================================================================|
    |    0      1427      G   /usr/lib/xorg/Xorg                           278MiB |
    |    0      3134      G   compiz                                        41MiB |
    |    0      4488      G   ...-token=22AC0E09E25E7BBA3D989DD67581E063    90MiB |
    +-----------------------------------------------------------------------------+


* CUDAのインストール

    [CUDAダウンロードページ](https://developer.nvidia.com/cuda-downloads)に行き, 順にLinux->x86_64->Ubuntu->16.04->dev[network]などを選択してDownloadボタンを押す
    Downloadボタンの下に書かれているようにコマンドを入力していく

    ```
    例)
    cd (ダウンロードしたファイルのディレクトリパス)
    sudo dpkg -i (ダウンロードファイル名)
    sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
    sudo apt-get upadate
    sudo apt-get install cuda-9-2
    ```

    CUDAを使用するために`~/.bashrc`にPATHを通す

    ```bash:.bashrc
    export LD_LIBRARY_PATH=/usr/local/cuda-9.2/lib64:$LD_LIBRARY_PATH
    export PATH=/usr/local/cuda-9.2/bin:$PATH
    ```

    CUDAがきちんと入っているかの確認

    ```
    nvcc -V
    ```

    と入力し,下記のように表示されれば問題なし

    ```
    nvcc: NVIDIA (R) Cuda compiler driver
    Copyright (c) 2005-2018 NVIDIA Corporation
    Built on Wed_Apr_11_23:16:29_CDT_2018
    Cuda compilation tools, release 9.2, V9.2.88
    ```


* cudnnのインストール

    [cudnnのダウンロードページ](https://developer.nvidia.com/cudnn)に行き, アカウント作成後
    `I Agree To the Terms of the cuDNN Software License Agreement`のチェックボタンを押し, `Download cuDNN v7.1.4 (May 16, 2018), for CUDA 9.2`を押す
    ホームページで下記の4つをクリックしダウンロードする(ダウンロードした時どれがどんな名前でダウンロードされたかを覚えておく)
 
    * cuDNN v7.1.4 Library for Linux
    * cuDNN v7.1.4 Runtime Library for Ubuntu16.04 (Deb)
    * cuDNN v7.1.4 Developer Library for Ubuntu16.04 (Deb)
    * cuDNN v7.1.4 Code Samples and User Guide for Ubuntu16.04 (Deb)  
  
    下記のコマンドを実行しインストールする

    ```
    cd (ダウンロード先のパス)
    sudo tar -xvf cudnn-9.2-linux-x64-v7.1.tgz
    sudo cp cuda/include/* /usr/local/lib/cuda-9.2/include
    sudo cp cuda/lib64/* /usr/local/lib/cuda-9.2/lib64
    sudo dpkg -i libcudnn7_7.1.4.18-1+cuda9.2_amd64.deb
    sudo dpkg- i libcudnn7-dev_7.1.4.18-1+cuda9.2_amd64.deb
    sudo dpkg -i libcudnn7-doc_7.1.4.18-1+cuda9.2_amd64.deb


### 必要なパッケージのインストール  
* ubuntu環境用パッケージのインストール(必要そうなのがあれば追加します)

    ```
    sudo apt-get install ssh build-essential pydot graphviz
    ```  

#### 仮想環境の構築

* python環境の構築

    ```
    sudo apt-get install virtualenv virtualenvwrapper
    sudo apt-get install python-dev python-pip python-numpy python-tk
    sudo apt-get install python3-dev python3-pip python3-numpy python3-tk
    sudo pip install virtulaenv virtualenvwrapper
    sudo pip3 install virtualenv virtualenvwrapper
    ```

* pythonの実行用仮想環境の構築用の設定PATHを通す

    ```bash:.bashrc
    source /usr/local/bin/virtualenvwrapper.sh
    export WORKON_HOME=~/.virtualenvs
    ```

* 仮想環境の作成
    [virtualenv環境の構築参考サイト](https://qiita.com/caad1229/items/325ca5c8ad198b0ebce7)

    ```
    mkvirtualenv (作成する環境名) --python=python3.5
    ```

* 仮想環境に入リ方&出方

    ```
    workon (環境名)    #入り方
    deactivate        #抜け方
    ```

* Kerasを使用したDeep Learining用環境の構築

    ```
    pip install --upgrade pip
    pip install tensorflow_gpu keras Pillow scikit-learn opencv-python pydot pydot3 pydotplus graphviz
    ```
<br>

* エディタのインストール　

    atomの場合
    [atomホームページ](https://atom.io/)からdebファイルをダウンロード

    ```
    cd (ダウンロードファイルのあるパス)
    sudo dpkg -i (ダウンロードファイル名)
    sudo apt-get update
    ```

    visual studio codeの場合
    [vscodeホームページ](https://www.microsoft.com/ja-jp/dev/products/code-vs.aspx)からdebファイルをダウンロード

    ```
    cd (ダウンロードファイルのあるパス)
    sudo dpkg -i (ダウンロードファイル名)
    sudo apt-get update
    ```

## 終了!  
# 参考サイト  

http://www.iandprogram.net/entry/2015/09/11/181208
http://www.iandprogram.net/entry/2016/06/24/210724
https://sicklylife.jp/ubuntu/1604/settings.html
https://qiita.com/yukoba/items/3692f1cb677b2383c983
https://qiita.com/caad1229/items/325ca5c8ad198b0ebce7