DataikuでGPUを使うためのセッティングをする

# はじめに
Dataikuでディープラーニングを扱うにあたってGPUの設定を行ったので、その内容をまとめておこうと思います。また、簡単にDataikuでGPUを使ってディープラーニングを行う方法についてまとめました。
今回使用した環境は以下の通りです。

- AWS EC2インスタンスタイプ: p2.xlarge
- OS: Ubuntu 18.04.5 LTS
- Dataiku DSS: Version 8.0.4

# 環境側での設定

### ドライバのインストール
まず初めに、リポジトリを追加しNVIDIAのドライバをインストールします。

```
$ wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-repo-ubuntu1804_10.2.89-1_amd64.deb
$ sudo dpkg -i cuda-repo-ubuntu1804_10.2.89-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-get update
$ sudo apt install ubuntu-drivers-common
$ sudo ubuntu-drivers autoinstall
$ sudo reboot
```

再起動後、`nvidia-smi`を実行してGPUの情報が表示されれば、インストール成功です。

### CUDAとcuDNNのインストール
次にCUDAとcuDNNをインストールします。
Dataikuで対応しているバージョンがCUDAは9または10.0、cuDNNは7なので、今回はCUDA 10.0とcuDNN 7をインストールします。

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

# DataikuでCode-Envの設定
続いて、Dataiku上でGPUを使用するためのCode-Envを作成します。
Dataikuにログインしたら、右上のメニューを開き、[Administration]を選択します。
![top.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442306/63571ceb-7f84-49c6-02b6-f40178f56a59.png)
![menu.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442306/cc1696c5-59ec-680d-8171-8b2bbe3bc14d.png)
Dataikuの設定画面が開きます。設定画面のタブの中から、[Code Envs]をクリックします。
![admin.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442306/f94af119-4301-bddc-6cb5-1e0d19fd32b9.png)
下画像のような画面になるので、[NEW PYTHON ENV]をクリックします。
![code_envs.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442306/071a5b4f-c4f0-1a27-ca1b-ad3e95f60960.png)
名前を適当に付けます。他の部分の設定は変更しないで大丈夫です。入力したら[CREATE]をクリックします。
![new_python_env.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442306/4a485fa9-dae7-b8bb-c637-40c7d25bf45f.png)
すると、Code Envの作成が始まるので少し待ちます。作成が終わるとCode Envが追加されますのでそれを選択します。
![code_envs2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442306/5dad15d7-3754-5a87-0da8-5e2608b9b6d3.png)
左のメニューから[Packages to install]を選択します。
![python_GPU.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442306/cf70a4b9-6370-dc05-ec3a-9bb4587c3475.png)
Packages to install画面で[ADD SETS OF PACKAGES]をクリックします。
![packages_to_install.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442306/0a03eb35-ff34-283f-fbb9-b1f93e00c410.png)
下画像のようなダイアログが表示されるので、Required packages forのメニューを開き、[Visual Deep Learning: Keras, Tensorflow (GPU with CUDA 10.0 and cuDNN 7)]選択します。その後[ADD]をクリックします。
![add_package.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442306/b604ad5c-c921-8761-2dbd-8729f6e5d397.png)
すると、ディープラーニングに必要なライブラリが自動で入力されます。その後、[SAVE AND UPDATE]をクリックすることで、それらのインストールが始まります。
![save_and_update.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442306/6ffa24d1-85b4-2065-2e8f-088c19a77cb6.png)
これで、GPUを使用するための準備は完了です。

# DataikuでのGPUの使い方
Dataikuで設定したGPUを使って計算する方法を簡単に説明したいと思います。
データセットを選択し、表示された画面右側のメニューから[LAB]をクリックします。
![flow.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442306/0fd5402c-a24e-8363-c34c-db8973e0d167.png)
Visual analysisメニューから[Deep Learning Prediction]を選択します。
![lab.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442306/797918ae-e9c3-830f-1b42-650224b95af3.png)
表示されたダイアログで、目的変数を選択するメニューが表示されるので、予測したい項目を選択します。(今回のデータはKaggleのHouse Pricesのデータを使用しています。)
![feature_select.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442306/8f3eb1b7-320d-65ff-7c20-c78996effd12.png)
[Deep Learning]が選択されていることを確認し、[CREATE]をクリックします。
![create_model.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442306/06053320-0060-972f-da08-944ffa867133.png)
下画像のように、モデルのデザイン画面が表示されます。今回は細かい設定はせず、このまま[TRAIN]をクリックします。
![deep_learning_model.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442306/c63a4a59-6c0a-6d4b-e53e-3cd8258fb8a7.png)
表示されたダイアログの中で、ACTIVE GPU FOR TRAININGをクリックしてOFF→ONにします。これで計算時にGPUを使用するように設定されます。
![active_gpu.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442306/79d9da90-8932-a0c4-0898-32758abeb412.png)
PCに複数GPUが搭載されている場合は、下画像の赤枠内に複数GPUが表示され、使用するGPUを選択することができます。GPUを選択したら[TRAIN]クリックすれば学習が始まります。
![train_model.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442306/31824170-9451-3721-9348-4749da8bf438.png)
少し待つと学習が終わり、結果が出力されます。今回は何も調整を行っていないため、結果は気にしないでください。
![result.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/442306/b6fae4c6-6872-3a1f-8026-e599f1ccacac.png)
DataikuでGPUを使用する方法については以上です。
今後、Dataikuを使用してディープラーニングなどを行いたいときは参考にしてください。


# 参考
- [CUDA 10とcuDNNをUbuntu 18.04LTSにインストールする](https://qiita.com/JeJeNeNo/items/045948694327977f614f)