MLflow TrackingのREST APIを叩くC++ライブラリを作った
MLflow Trackingは数値実験のコード・設定等を管理できるソフトウェアであって、かなり使い勝手がよい。試行錯誤しながら計算をまわしていると「この結果のときパラメータどう設定したっけ、、」みたいなことがよくあるが、実験毎にパラメータを全てMLflow Trackingに保存しておけばこのような事態を防げる。また、計算の途中結果(例えばlossとかaccuracy)をグラフで確認できるのも便利だ。
MLflow Trackingが公式にサポートしている言語は、Python, R, Javaの3つで、その他REST APIを使ってもmlflowのサーバーと通信できる。さて、例のごとく、C++でも数値実験の管理をしたいということで、MLFlow TrackingのREST APIを叩くライブラリを作成した。コード例や依存ライブラリの説明はgithubのREADMEを見てほしい。
現在実装しているAPIは以下の通り。さしあたり、自分が必要なものだけ実装した。
- Create Experiment
- Get Experiment
- Get Experiment By Name
- Create Run
- Log Metric
- Log Batch
- Set Tag
- Log Param
- Update Run
API一覧は下記URLのとおり。
artifactをサーバに送信するAPIが存在しないため、このライブラリではartifactをアップロードできないのがネック。ファイルのパスをタグ orパラメータに保存しておくしかないか。
ちなみに、例外でなくRustのようなResult型で実行結果を返すようにしたのだが、どうもコードが冗長になる。私の使い方の問題か?