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

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

Comet.mlを使ってみた

前に、Weights & Biasesを使って実験管理する方法をやってみました。

www.nogawanogawa.com

最近のkaggle強い方々のtweetを見る限り、mlflowで実験管理をするのが徐々に普及している感じがしますが、その流れもあってかwandbなどの実験管理サービスを使用する事例も見られるようになっている印象です。

Comet.mlもwandbと同様、実験管理ができるサービスとなっています。 というわけで、今回はComet.mlを使用してみたので、そのメモです。

Comet.ml is 何?

www.comet.ml

Comet.mlはwandbなどと同様、機械学習の実験管理をマネージドで行うサービスです。

公式ページを見るとこんな感じに書いてあります。

Comet works with existing ML libraries and has built-in team collaboration. Comet – Build better models faster!

既存のライブラリと連携して使用できて、チーム開発にも活用することを想定しているようですね。 要するにWeights & Biasesの競合サービスってわけです。

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

そんなことを考えていると、気になるのがそのお値段です。

https://www.comet.ml/site/pricing/

f:id:nogawanogawa:20200707215054p:plain

個人で使用するなら無料、小規模のチーム(~4人)なら$39、8人程度のチームになると$179、それ以上は応相談って感じになってますね。

一人で使う分には、プライベートのプロジェクトを構築して100GBまで使用できるので、個人で使うには十分かと思います。

使ってみる

なにはともあれ使ってみます。

Pytorch

今回は、サンプルとしてPytorchのサンプルコードを使用して見ていきたいと思います。

www.comet.ml

github.com

サンプルコードを貼り付けてちょこっと書き足せば普通に動きます。

drive.google.com

注意点としては、experiment.end()コマンドで実験完了を指定してください。 これを忘れると、実験がいつまで経って完了しないようです。

www.comet.ml

ちゃんとできるとこのような感じで見れるかと思います。

www.comet.ml

複数実験の比較表示

複数の実験を行うことを想定しているので、その比較表示ができます。 表示するものについてはユーザーがカスタマイズできるようですね。

f:id:nogawanogawa:20200707225841p:plain

個別の実験の詳細表示

個別の実験の詳細についても自動で記録できます。

f:id:nogawanogawa:20200707230552p:plain

ここではaccuracyやlossの推移のグラフ、実験に使用したハイパーパラメータ、実験時の使用したライブラリ、コンソールログ、出力(画像、テキスト、音声など)をまとめて記録することができます。

特徴的なのは、NNのネットワークグラフやノートブック本体についても記録することができる点です。 これにより、環境の情報やパラメータだけでなく、実際に使用したコードがどのようなものであったかまであとから確認することができます。

f:id:nogawanogawa:20200708000917p:plain

良いと感じたところ

comet.mlの何が良いって、wandbとは違ってノートブックの管理までできる点が非常に魅力的です。 wandbを使用すると実験結果は自動でダッシュボードを作成するだけですが、comet.mlでは実験時のノートブックの管理まで一緒に行うことができます。 これにより、githubなどのサービスを使う必要がなくなるので、過去の実験の状況確認のためにいろんなサービスを行ったり来たりしなくていいのは非常に魅力的ですね。

惜しいと感じたところ

他のライブラリに対する統合機能拡張が若干物足りない感じがします。

パッと見た限りでは、木系(LightGBMやXGBoostなど)は機能が組み込まれていないようでした。 (実はその辺りまで柔軟にできる使い方があるんでしょうか?ちょっとそこまでは調査できなかったです。)

この辺りの"かゆいところに手が届くか"という点では、wandbの方が優勢かもしれません。

想定される使い方

他のライブラリとの統合機能を見る限り、現状NN系を使用するのであれば十分使用しやすいかと思います。 特に、ネットワークグラフなどもトラッキングできるので、コードを見返す手間も少なくてすみます。

現状だと、NN系についてはほとんど自動で様々なデータを取ることができるように見えます。

感想

使ってみた印象としては非常に良いと思います。 MLOpsという観点で考えたときに、実験の結果とノートブックの管理を同時に行えるサービスというのは非常に有効だと思います。