Re:ゼロから始めるML生活

どちらかといえばエミリア派です

Neptune.aiを使ってみた

この前はcomet.mlを使った実験管理を試してみてました。

www.nogawanogawa.com

今回は、類似のサービスであるNeptune.aiを使ってみたのでそのメモです。

Neptune.ai is 何?

neptune.ai

位置づけとしては、wandbやcomet.mlと同様に機械学習の実験管理を担うSaaSという位置づけです。

実際のサービスページによると、謳い文句は、

The most lightweight experiment management tool that fits any workflow.

(どんなワークフローにもフィットする最も軽量な実験管理ツール)

とのことです。

でも、お高いんでしょう?

お決まりの、お値段の確認です。

公式サイトでは下記のようになっています。

f:id:nogawanogawa:20200708204300p:plain

他のサービスと同様、個人で使う際には無料で使用できます。 個人で使用する際には、ストレージは100GBまで使用可能で、プライベート・パブリックのプロジェクトを作成することができます。

10人以下のチーム開発で使用する際には、ストレージは1TB、一人あたり$79となっており、それ以上については問い合わせにて対応というお値段設定になっていますね。  

使ってみる

今回は公式で用意されていたLightGBMでやってみます。 使用したソースコードはこちらです。

Neptune-LightGBM Integration — Neptune docs 2.0.0 documentation

実験で出力されるデータを記録するだけなら下記のコードを付け加えることで記録が可能です。

import neptune

neptune.init(api_token='<APIトークン>',
             project_qualified_name='ユーザー名/プロジェクト名')
neptune.create_experiment(name='実験名')

実験完了時に

neptune.stop()

で実験完了のシグナルを出してあげることをお忘れなく。

結果の確認

実験一覧を表示する画面から、比較したい実験を選択してCompareすれば、記録された値をグラフ・表で比較表示できます。

f:id:nogawanogawa:20200708224002p:plain

f:id:nogawanogawa:20200708224015p:plain

個別の結果についても、各実験を選択してあげれば詳細を確認できます。 また、実行中のCPUやメモリの使用率についても自動で取得しています。

f:id:nogawanogawa:20200708224310p:plain

この辺りの結果の確認については、他のサービスと遜色ないと言って良いと思います。

コードの管理

Comet.mlでは、実験に使用したNotebook本体についても記録することができたのですが、Neptune.aiでもNotebookの管理は可能といった感じでした。

普通にjupyter-notebookを使用している場合には下記の指示に従うことでノートブックの管理ができるようです。

f:id:nogawanogawa:20200708224639p:plain

また、Pythonスクリプトを直接使用している場合でもスクリプトをアップロードする機能があります。

docs.neptune.ai

  • upload_source_files (list or str, optional, default is None) –

※ Google Colabを使用してソースコードを管理する方法が見当たりませんでしたが、普通にjupyterを使用していれば問題なくできそうでした。

良いと感じたところ

Comet.ml同様、ノートブックの管理まで可能なのは非常に魅力的だと感じます。 また、それ以外にもスクリプトの管理が可能で、コードも含めて実験管理するのであればComet.mlより柔軟に使用できるかもしれません。

また、Comet.mlよりもサポートしているライブラリが多いように感じました。 木系のライブラリについても普通にサポートしていますし、NN系のフレームワークもTensorflowやPytorchも使用できるようでした。 その辺りの機能の広さも良いと思います。

惜しいと感じたところ

もはや重箱の角をつつくようですが、表示できるデータに付いては若干Comet.mlの方が多いかもしれません。 むしろComet.mlはデータ過多な気もしますし、wandbよりは機能は充実しているとは感じました。 そのため、本当に"重箱の角をつつく"レベルですかね。

よくわからないところ

私の確認不足なのか、jupyter-notebook以外からノートブックを管理する方法が見当たりませんでした。 jupyter-notebookが使えるから別にいいんですが、できるとより嬉しいなとは思います。

今回では、Google Colabからノートブックを記録できなくて困りました… これはどうやってやるんだろう...?

想定される使い方

個人で使う分には、ファーストチョイスはNeptune.aiで良いと思います。

NN系についてはComet.mlの方が機能が充実している感じがするのと、複数人で使用する際にはお値段が高くなるので、その点は考慮すべきかと思います。

kaggleを始めとするコンペのチームで使用することを考えると、使用できれば非常に便利ですが、料金が高くつく可能性があるので、お財布と相談という感じでしょうか。 料金的な問題がクリアできれば、実験管理はかなり楽になるのではないでしょうか?

感想

neptune.aiはwandbやcomet.mlより、機能が豊富といった感じですかね。 wandb・comet.ml・neptune.aiは実験管理のSaaSとしてメジャーどころかと思いますので、これで一通りは体験した気がします。

あともう一つだけ実験管理のサービスを見つけましたので、そちらはまた別の機会にやれたらと思います。(やるとは言ってない)