TRAINSを使ってみる
皆さんこんにちは。HANDAI JKの赤沢と申します。
本日は機械学習管理ツール、TRAINSを使ってみるお話をさせていただこうと思います。技術系の話に寄っています。 TRAINS自体も開発途上であり多分すぐに仕様などが変わると思うので、その時々で良い感じにやってください。このページの更新もしてくれるとなおgood…
TRANSとは
ディープラーニングなどの機械学習の研究や実験をやっている人なら分かるかと思いますが、学習を回すときのデータやログ、ハイパーパラメータの値、結果などのかんりっていうのが、実験が進むにつれてどんどん複雑になってぐちゃぐちゃになってくちゃくちゃになってしまうものです。 TRAINはそれら機械学習で煩雑になりがちな部分を簡単に管理、共有できるOSS(オープンソースソフトウェア)です。 allegro.aiという会社が開発中で、現在(2020/02/07)β版となっています。
■allegro.ai : 2016年設立で、多数の企業から投資を受けており現在の資金は$11M(11億)くらいらしいです。 本社はイスラエルのRamat Genにあって、主にディープラーニングやコンピュータビジョンに関するライフサイクル管理プラットフォームの開発を行っています 。
できること、魅力
- 実験結果、ログの保存共有、バージョンコントロール
- 手軽に使える
- pipでインストールしてプログラムに二行追加するだけです。
(注)対応しているライブラリでしか使えないみたいです(TensorFlow、Pytorch、Keras、Scikit-learn)。 - 自前のserverを使う時もdockerを使用するのでとても楽チン。
実験結果の管理から解放!
使い方
TRAINSはpythonのパッケージとして提供されておりpipからインストール可能です。
pip install trains
コードを書き足すのは二行だけで、これだけでほぼ全ての記録を取ってくれます。 また、残しておきたい変数などは別途追記すれば記録できます。
from trains import Task task = Task.init(project_name=`examples`, task_name='absl example')
実行するとコンソールにURLが出力されるのでそこに飛んでください。
すると結果が表示されます。 ハイパーパラメータやモデルの情報なども見れます。 図は対応しているライブラリで出力すればOKです(Matplotlib & Seaborn)。
データ保存期間
上記のようにプログラムに二行足しただけだと、trainsのデモサーバーに保存されるようになっています。 そしてこのでもサーバーは毎日24時にリセットされてしまうみたいです。 なので本格的に運用するにはtrains-serverをインストールして自前でサーバーを立ち上げ、そこにデータを保存していってください。
trains-serverの使い方
基本的にtrains-serverのREADME、installation通りに行えばいけます。
- dockerを使用します。
ログイン処理も簡単。(ですが、パスワードを
yml
ファイルにベタ書きしなければならないので、ここに関しては怪しすぎますね。笑) サーバーのセットアップが完了したら、trains に飛んで、README、Configration Your Own Trains Serverの通りに行ってください。trains init
コマンドで、セットアップ時にserverのIPとポートを入力 or マニュアルで作業(~/.trains.conf
)することになります。これをしなかったらデモサーバーで運用されます。
これで完了です。TRAINSのコードを追記したプログラムで実行してください。
Linux、MacOS Xで使用可能なdockerイメージは予め準備されています。 Windowsの場合は、VMで動かすLinuxの上でdockerを動かすことが推奨されています。
実際にやったコマンド(作業記録)
私が実際に動かしたときのコマンドを記録しておきます。
192.168.*.*(dockerインストール済みのLinuxリモートサーバー) にサーバーを立てました。
コマンドの意味はわかると思うので細かい説明は省略します。
docker pull allegroai/trains sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose sudo rm -R /opt/trains/ (<-コンフリクトが起きてなければ不要) sudo mkdir -p /opt/trains/data/elastic sudo mkdir -p /opt/trains/data/mongo/db sudo mkdir -p /opt/trains/data/mongo/configdb sudo mkdir -p /opt/trains/logs sudo mkdir -p /opt/trains/config sudo mkdir -p /opt/trains/data/fileserver sudo chown -R 1000:1000 /opt/trains git clone https://github.com/allegroai/trains-server.git cd trains-server /usr/local/bin/docker-compose -f docker-compose.yml up
そしてサーバーが立ち上がり、ローカルから192.168..:8080
を見に行くと正常動作が確認できました。