pipでReNomをインストールして起動する方法


機械学習フレームワークであるReNomをUbuntu環境に構築してみました。
GitHubのREADMEを参考にしています。

https://github.com/ReNom-dev-team


インストールしたアプリは、

- ReNom本体：TensorflowやChainerのような機械学習ライブラリ
- ReNomTAG：教師データ作成アプリ、単体で動く
- ReNomIMG：画像解析アプリ、ReNom本体が必要
- ReNomDP：数値データ前処理アプリ、単体で動く
- ReNomRG：数値データ回帰アプリ、ReNom本体が必要

です。


# 検証環境
Ubuntu16.04, python3.6, cuda10.2, cudnn7.6

ReNomはGPUでもCPUでも使えるようで、基本的にはGPUとCPUの環境でインストール方法に違いはありませんでした。（pipでインストールする場合の話）

GPU環境がセットアップされていればGPUが使われるし、セットアップされてなければCPUが使われるということのようです！


# 事前準備

pythonやGPUの環境をセットアップしていきます。趣旨とずれるので細かい説明は書かずにコマンドだけ載せます。

python3.6およびpipのインストール
※ppa:jonathonfが使えなくなったので、変更する必要があります。
参考：https://qiita.com/pudding167/items/1d7226155cbfcd76bb1a


    $ sudo add-apt-repository ppa:jonathonf/python-3.6
    $ sudo apt update
    $ sudo apt install -y python3.6 python3.6-dev
    
    $ wget https://bootstrap.pypa.io/get-pip.py
    $ sudo python3.6 get-pip.py


cuda10.2のインストール
参考：https://developer.nvidia.com/cuda-downloads


    $ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-ubuntu1604.pin
    $ sudo mv cuda-ubuntu1604.pin /etc/apt/preferences.d/cuda-repository-pin-600
    $ sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/7fa2af80.pub
    $ sudo add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/ /"
    $ sudo apt-get update
    $ sudo apt-get -y install cuda

cudnn7.6のインストール
https://developer.nvidia.com/rdp/cudnn-download
にてダウンロードして、マシン内にコピーして下記を実行。

    $ sudo dpkg -i libcudnn7_7.6.5.32-1+cuda10.1_amd64.deb
    $ sudo dpkg -i libcudnn7-dev_7.6.5.32-1+cuda10.1_amd64.deb



# ReNom本体をインストール

ここからが本題です。
まずは本体をインストールします。
GitHubには、git cloneしてソースコードからビルドする方法と、whlファイルをダウンロードしてpipでインストールする方法が用意されています。

pipの方が圧倒的に簡単なので、pipでインストールします。
whlファイルはOSやcudaのバージョンで異なるようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429044/b77d5b75-34d3-8de8-c228-bf456c4d94d0.png)


今回は、Ubuntu16.04, Python3.6, cuda10.0, cudnn7.6 のwhlファイルを利用します。

該当リンクURLをコピーしてpipでインストールします。

    $ sudo pip install https://renom.jp/docs/downloads/wheels/renom_dl/ubuntu1604/python3.6/cuda10.0/cudnn7.6.2.24/ReNom2.7.3/renom-2.7.3-cp36-cp36m-linux_x86_64.whl

pandasをインストールします。（pandasはwhlファイルでインストールされなかったですが、起動するためには必要でした…）GitHubにあるrequirements.txtにある通りのバージョンにしています。

    $ sudo pip install pandas==0.21.1

pythonを起動してimportできるかテストします。

    $ python3.6
    Python 3.6.8 (default, Oct  9 2019, 14:04:01)
    [GCC 5.4.0 20160609] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import renom
    >>> 

エラーは何も出力されず、問題なくimportできました！


# ReNomTAGを起動する

さてここからは実際のアプリをインストールしていきます。

GitHubを見ると、バージョンによって複数のwhlファイルが用意されています。
今回は現時点で最新バージョンをインストールします。

    $ sudo pip install https://grid-devs.gitlab.io/ReNomTAG/bin/renom_tag-1.4b0-py3-none-any.whl

では実際に起動してみます。

    $ renom_tag
    Bottle v0.12.13 server starting up (using WSGIRefServer())...
    Listening on http://0.0.0.0:8080/
    Hit Ctrl-C to quit.
    

`http://0.0.0.0:8080/` でサーバが起動したみたいなので、ブラウザからアクセスしてみます。（リモートマシンを対象に構築している場合は、0.0.0.0ではなく実際のIPアドレスを指定する必要があります。例えば、 `http://192.168.1.100:8080` といった形式になるかと。）


URLを入力してアクセスすると、ReNomTAGの画面が表示されました。
NOTICEとしてデータを格納するディレクトリを作成するか聞かれていますので、「OK」を押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429044/86f85e69-3d51-44f6-2025-83fec4e93f67.png)


次はユーザ名を設定する画面になります。ユーザ名を入力して「OK」を押すと下記のように成功したメッセージがでます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429044/6135b5da-139c-d1c6-f218-fcefc0797fd5.png)



これで初期設定が完了したようで、画面が表示されました。ただ今回は何もデータは入れていないので、「No images found.」と表示されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429044/c1e4536f-9d53-7729-33a3-bbef8787bafb.png)


ReNomIMGは画像データを入れて、Detection、Segmentation、Classificationに必要な教師データが作れるアプリで、どうやってデータを格納して、どうやって使うかは、GitHubやhttp://renom.jp/ja/index.html に解説がありました。
実際に使うときは参考にしながら進めれば良さそうです。


# ReNomIMGを起動する

TAGと同じく現時点で最新のバージョンをインストールします。

    $ sudo pip install https://grid-devs.gitlab.io/ReNomIMG/bin/renom_img-2.3.2-cp36-cp36m-linux_x86_64.whl

また、python3-tkをインストールしないと起動しないようなので、インストールしておきます。

    $ sudo apt install python3-tk

では実際に起動してみます。

    $ renom_img
    Listening on http://0.0.0.0:8080/
    Hit Ctrl-C to quit.
    

TAGと同じくブラウザからアクセスしたところ、下記のような画面が表示されました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429044/8424fe5a-d516-429f-b3e9-cded6dbb0a5e.png)


今度は、初期セットアップは何もなくいきなり表示されました。
TAGで作成した教師データと合わせて画像データを入れて画像解析をやってくれるアプリということで、データの入れ方などはTAGと同じく、GitHubやrenom.jpに解説があります。それを参考にして進めていけるかと。


# ReNomRGを起動する

ReNomRGも他と同じくpipでインストールできました。

    $ sudo pip install https://renom.jp/docs/downloads/wheels/renom_rg/renom_rg-0.6b1-py3-none-any.whl

起動します。

    $ renom_rg
    Directory scripts is newly created.
    Directory datasrc/prediction_set/output is newly created.
    Directory datasrc/prediction_set/output/dataset_scaling is newly created.
    Directory datasrc/prediction_set/output/csv is newly created.
    Directory storage/ml_models is newly created.
    INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
    INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
    INFO  [alembic.runtime.migration] Running upgrade  -> a1643f735a26, init
    INFO  [alembic.runtime.migration] Running upgrade a1643f735a26 -> 710ce1a59d37, update_dataset_def
    INFO  [alembic.runtime.migration] Running upgrade 710ce1a59d37 -> ca4a3a6fed87, update_model
    INFO  [alembic.runtime.migration] Running upgrade ca4a3a6fed87 -> a22b45bfd754, add_target_data_to_dataset
    INFO  [alembic.runtime.migration] Running upgrade a22b45bfd754 -> e8b6391f50bf, add paramsearcher
    INFO  [alembic.runtime.migration] Running upgrade e8b6391f50bf -> 83b33c9bb091, add_true_pred_histogram
    INFO  [alembic.runtime.migration] Running upgrade 83b33c9bb091 -> b87432936ccf, add histogram to dataset
    INFO  [alembic.runtime.migration] Running upgrade b87432936ccf -> 4e2cc619c7bf, #16
    INFO  [alembic.runtime.migration] Running upgrade 4e2cc619c7bf -> 1b16a19827b2, #42
    INFO  [alembic.runtime.migration] Running upgrade 1b16a19827b2 -> 6cb95f3b3377, #18:add importances
    INFO  [alembic.runtime.migration] Running upgrade 6cb95f3b3377 -> 2c2d0baf4e03, #90
    INFO  [alembic.runtime.migration] Running upgrade 2c2d0baf4e03 -> 1b5fa6c3c388, fix #110
    Listening on http://0.0.0.0:8080/
    Hit Ctrl-C to quit.
    

こちらは何やら出力が多いですが、起動したようです。ブラウザからアクセスすると下記のような画面が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429044/c2e7520c-db3b-34f1-0414-9868dcbcdcaf.png)


404 Errorが出ていますが、「File data.pickle is not found.」とあるので、データがないよって言っているだけです。データを用意したら解消されそうです。

「OK」を押すとReNom IMGと同様の画面が表示されました。
ReNomRGは数値データを扱うアプリということで、csvファイルやpickleファイルを格納すれば回帰分析してくれるようです。


# DPを起動する

pipでインストールします。

    $ sudo pip install https://grid-devs.gitlab.io/ReNomDP/bin/renom_dp-0.2b2-py3-none-any.whl

起動します。

    $ renom_dp
    Bottle v0.12.16 server starting up (using WSGIRefServer())...
    Listening on http://0.0.0.0:8080/
    Hit Ctrl-C to quit.
    

ブラウザからアクセスすると下記のように画面が表示されました。Select Fileを選択しても何も表示されませんが、データを入れたら選択できるようになるようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/429044/74d91fbd-5ff7-7616-d863-a81ff3aa00ea.png)





# まとめ

ReNomを色々インストールして起動してみました。
データを入れて使っていないので、片手落ち感がありますが、とりあえずReNomアプリが動く環境は簡単に構築できる、ということが分かりました！（ほぼpipだけ。GPU環境をセットアップする方が時間かかる…）