こんにちは,DSOC 研究開発部 インターン生の内田です.先日プチ卒業旅行として伊豆の温泉旅館に行ってきました.伊豆といえば バナナワニ園 ですよね,異論は認めません.バナナワニ園のワニたちは基本的に動かないので思わず「休日の俺じゃん」って呟いてしまいました.
さて,今回はCVとは直接関係ないですが,多くの人が頭を悩ませている実験管理に関する話題です.
機械学習と実験管理
機械学習,特に深層学習を用いたプロジェクトにおいては,精度を引き出すためにハイパーパラメータが非常に重要です.一口にハイパーパラメータといっても,モデルサイズや学習率,バッチサイズなど挙げるとキリがありません.
最適なハイパーパラメータを定めるには,Grid Searchなりでパラメータを探索し,精度などと共にロギングする必要があります.バナナワニ園のワニのように怠惰な私にとって,パラメータや結果をマメに記録しておくことは簡単なことではありません.現状では表示可能な項目はなるべくTensorBoardに集約して,TensorBoardのログディレクトリにその他の結果を全部吐かせるようにしています.これなら後からでも漏れなく参照できるので安心ですが,TensorBoardに表示できない項目の検索・比較は面倒です.
上記の背景から,もう少し高機能な実験管理ツールを使ってみたい気持ちが常々あります.ただし,導入にあたってはいくつか条件があります.パッと思い当たるのは次のような感じです.
移行コストが低いこと
ロガーに値を手動で報告する場合,ツールを変えれば当然プログラムの書き換えが生じます.一気に書き換えるのも手ですが,バックアップとしてローカルのログも残しておきたかったりもするので,ロガーの命令をキャッチしてよしなにやってくれると嬉しいです.モデル管理機能
学習済みモデルと実験を紐づけてUI上で管理できると嬉しいです.社内サーバでのホスティング
最近 Comet.ml や Neptune.ai のようなクラウド上で実験管理を行えるSaaSが出てきていているのですが,業務で扱うデータの性質上,外部のサーバにデータを送信するのはご法度です.とはいえ個々人のインスタンスに閉じているのもスケールしなさそうなので,社内サーバにデプロイして共有できる程度が望ましいです.