Ubuntu ディープラーニング　環境構築（ゲーミングノート）

###Ubuntu ディープラーニング　環境構築（ファウンデーション）については以下のリンクからご覧ください。
[Ubuntuディープラーニング環境構築（インストール準備)](https://qiita.com/aiiika/items/4ae527e915015b334fd9)
[Ubuntuディープラーニング環境構築（インストール編)](https://qiita.com/aiiika/items/cd4d35e89652b49fbffc)
[Ubuntuディープラーニング環境構築（マルチブート)](https://qiita.com/aiiika/items/7f623840b31767ff9f48)

AIの勉強を開始する際、GPUは必須だと思い
ASUS FX502というゲーミングノートを中古で安く入手しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496711/60f9d6c4-e9ff-7244-2091-83531a9c5946.png)

スペックは以下のとおりです。

|ハードウエア |仕様 　|コメント  |
|--------------|------|--------------|
|CPU |core i 5|core i 7でなくともOK  |
|メモリー  |8GB  |本来16GB欲しい  |
|HD|1TB|windowsも併用するならSSDが欲しい|
|GPU|NVidia1060|入門なら1050でも可|

入手してから分かったのですが、この機種（というかASUS)最大の問題は
**BIOS設定でSecureBootをdisbableできない**
ことにありました。

BIOSの入り方は起動時にF2ボタン連打、またはWindows再起動時にUEFIの設定
BIOSはGUIでしたが挿入したUSBを最初に起動するように設定するのは簡単で、運よくSecureBootのまま起動可能でした。
他に試したことのあるGamingNoteでは以下の問題がありました。

- Dell コスパは非常に良い。SSD+HDでHDにインストールしたがOSからSSDが認識せず、インストール後起動不可（SSDの設定を変更する必要がある）
- MouseComputer USB起動できないことは無いがUSBのハードを選ぶ。たいへんクリティカル

[Ubuntuディープラーニング環境構築（インストール準備)](https://qiita.com/aiiika/items/4ae527e915015b334fd9)
からの処理をすべて終了し、UbuntuとWindowsマルチブートが可能な状態になる。

- このPCにはrEFIndが最初からインストールされており、こちらから起動してもマルチブートが可能でした。
- SecureBootをDisbable可できなくても、Ubuntu自体は起動できる場合もありますが、こにに商用のディスプレィドライバ等を入れると、SecureBootの認証作業が必要になります。
- 以前はUbuntu16.04LTS用のNVidia CUDAをインストールして安定化しておりましたが、最近レボジトリに登録され、CUDA10のインストールが簡単になりました。

####商用ディスプレィドライバのインストール

```terminal
ubuntu-drivers devices
sudo ubuntu-drivers autoinstall
sudo reboot
```
reboot前にpasswordを設定する（２回聞かれる）
SecureBootに対応していない商用のドライバをインストールすると、起動時認証が必要になる
rebootすると
**please any key to perform MOK management**
と言われるので、何かkeyを押す。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496711/aed00703-99ef-90ea-64bd-6f6831df3aea.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496711/e6caaa04-f8a5-7c65-78c6-a8ec538019f0.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496711/2fc62397-a731-252b-f64c-02c6c6e704c7.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/496711/01e647f2-0ceb-9cc7-06f5-b994fc3c5b30.png)
起動したら、Terminalから

```
$ nvidia-smi
```
と入力してGPUの情報が出力されればよい。

####レポジトリの登録

```terminal
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804_10.0.130-1_amd64.deb
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
sudo apt update
wget http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt install ./nvidia-machine-learning-repo-ubuntu1804_1.0.0-1_amd64.deb
sudo apt update
```

**CUDA10とcuDNNのインストール**

```terminal
sudo apt install -y --no-install-recommends cuda-10-0 libcudnn7 libcudnn7-dev
```

**TensorflowRTのインストール**

```terminal
sudo apt-get install nvinfer-runtime-trt-repo-ubuntu1804-5.0.2-ga-cuda10.0
sudo apt update
```

これでGPUが使えるようになります。

```terminal
sudo pip uninstall tensorflow
sudo pip install tensorflow-gpu==1.14
```
としてGPU版Tensorflowを使えるようにします。
バージョンによっては、kerasも入れ替えた方がよいかも知れません。

基本的にはどの最近のマシンでは設定はほぼ同じと思いますが、人柱が嫌な方は動作実績のあるマシンを使うべきだと思います。
デスクトップでも良い方はGPUの交換も可能ですので、余裕あるBTOマシンをご注文した方が良いです。
このASUSのゲ－ミングノートはディスプレィ17インチですし、重く消費電力も大きいです。

追記(2020/01/16)
どうも、

```terminal
nvcc -V
```
ができないと思ったら、toolkitがインストールされていませんでした。
以下作業追加

```terminal
sudo apt install nvidia-cuda-toolkit
sudo apt update
```
tensorflow-gpu==2.1.0も試しましたが、うまく行かない！
tensorflow-gpu==2.0.0にしました。