TL; DR
- comet.mlという機械学習の実験データを保存できるサービスがある
- 1〜2分程度で学習過程のダッシュボードが作成できる
- 勝手にネットワークのグラフやログ出力を記録してくれる
- 過去にやった実験を忘れても再現できるようになる
実験ごとのログ取りが面倒な人はこいつでサクッとログ取りましょうって話。
comet.mlとは
機械学習のgithubを目指している、機械学習実験を保存するサービスです。
https://comet.ml
comet.ml上では実験ごとに学習曲線やデータの入出力の可視化をしたり、
使用したハイパーパラメータとその値を、更には学習コードを記録することができます。
使い方は公式ドキュメントに投げます。Quickstartから順に読んで、例に従って書いていけばサクッと導入できます。
https://www.comet.ml/docs/
なぜ便利か
とりあえず列挙しますが、それでも雰囲気すらわからないと思うで、これを読みながら、公式の概要説明動画を見ることをお勧めします(以下)
https://www.youtube.com/watch?v=xaybRkapeNE
comet_ml apiを通すだけでグラフとログを保存してくれる
tensorboardでグラフ構造を可視化すると場合によっては手間がかかりましたので、
何も意図して記述しなくてもグラフを出力してくれるのは嬉しかったです。
特にpytorchだと仕様がわからなくて断念したので嬉しいです。
ただしテキストベースでの出力になるので注意しましょう。
また、プログラムのログ出力もcometml上で見れるようになっているので、
ロギング機構を作る手間も省けました。いちいちsshを使ってCLIで見に行く必要もなくなりましたし。
ダッシュボードをカスタマイズできる
(2/3追記)学習曲線のグラフのグルーピングもできます。Charts
の画面で下図の Add Chart
を選択->まとめたい指標(例えばtrainとvalidationのaccuracy)を選択すると同じグラフに学習曲線をまとめられます。
まとめた学習曲線はこんな感じ
学習を再現できる
個人でkaggleに参加する場合などで、ズボラな人はいちいちgitにコードやハイパーパラメータを記録しないかと思います。そういう人に必ずあるのが、過去の学習を再現できなくて後悔することかと思っています。
comet.mlならAPIをコードに挟むだけで、学習する度に学習過程を自動で保存してくれますので、ズボラな人でも過去の学習を再現できるようになります。コードを書くだけなので、わざわざ実験ごとにgitでブランチを分けるとかタグ付けするとかする必要がありません。
お勧めする人
個人で機械学習をやっている人
個人でやると、いちいちログ機構やダッシュボードを作っている余裕がないし、わざわざ他人に作ってもらう理由がないので重宝します。cometmlなら直近10件までの実験を無料で記録できます。実験記録がある程度publicになってもいい内容でしたらお勧めです。
ダッシュボードのサーバーを作るのが面倒な人
私がこれに該当しました。
GCP上で計算を回していたので、tensorboardサーバーを立てて、nginxでbasic認証を6006ポートに通そうとしましたが、面倒でやりませんでした。
cometmlのAPIを使って、cometmlにエポック毎のロスなどを記述すれば勝手にダッシュボードを作ってくれるのは便利でしたね。
fluentdなどロギング機構を作成するのが面倒な人
上と似たような動機です。インフラエンジニアじゃなかったらだるくないですか?
個人で機械学習をやる場合で、例えばstdoutとstderrの生の出力でも抵抗がない人は、勝手にプログラムの吐いたstdoutとstderrを記録してくれます。
上記に関する知識がない人
機械学習からエンジニアになった人はインフラ側に関する知識が全然ない人が多いかと思います。kaggleなど個人で機械学習を行なっている人にも便利なものではないでしょうか。
おすすめしない人
(無料版の場合は)仕事でデータを扱っている
無料版は全てのダッシュボードがパブリックになるので、仕事で使っている場合は注意しましょう
学習曲線が見づらいと思う人
例えばtensorboardみたいに、訓練データのロストバリデーションデータのロスを、
一つのグラフにまとめてくれる機能はありません。確認できなかったので多分ないと思っています。
(2/3追記)嘘つきました。先述の通り一つのグラフにまとめる機能があります。
ネットワークのアウトプットが見づらい
上の動機に似ていますが、まだtensorboardに劣る点はあるかと思います。
ネットワークのグラフの出力がテキストベースなので、イメージで掴みにくいと思います。
ただし各層ごとのハイパーパラメータをしっかり出力してくれましたので、酷くて意味がないということはないかと思います。
注意点
勝手にコードを晒しますので、**クレデンシャルをコードに直書きとかは絶対にやめましょう。**大変なことになりますので、ズボラな人はご注意を。
最後に
まだ使い始めてまもないのでちょくちょく修正加えようと思っています。