知人が言っていました。この広告は、90日以上更新していないブログに表示しています。機械学習プロジェクトに並行して取り組むことが多くなり、もう少しスマートに実験結果の管理をしたいと思っていました。古い実験結果をもう一度見るために再度学習から実行し直したりと効率が悪くなっているので、実験結果の分類と検索をうまくして、過去の実験再度実行したり、過去の実験結果を再度分析したりできるようにしたいなと考えています。ライブラリと使い分けざっくり見た感じだと、実験結果を長期的に(プロジェクトをまたいで)管理し続けるためにはSacredやOmniboardが役立ちそうで、プロジェクトごとにまとめられた結果を見たりするにはTensorboardが適していそうです。Sacredは実験再現性を向上することを目的として作られたライブラリで、実行中・実行後の実験をDBとかで管理してくれます。OmniboardはSacredのフロントエンドです。OmniboardとSacredを使うと、スクリプトを実行した時点から管理されるので、サーバ上で実行されている実験を管理したりするのにも役立ちそうです。実験の実行と管理をするサーバを立てました。構成要素は次の通りです。Omniboardサーバの実行からあとで検索する用途まで自前のプログラム実行プログラムparamikoを利用スクリーンショット今回調査したライブラリに関するメモTensorboardTensorboardはTensorflow専用というイメージがありますが、Tensorflow以外でTensorboardを使うためのTensorboardXなるものがあるらしいです。Dockerイメージを使った導入記事もあり、参考にしてみました。Windowsですが、Dockerは使わずに、WSL上に導入してみました。手順はUbuntuとほぼ同じです。tensorboardでは、tesnorboard起動時のlogdirに指定したディレクトリ内でサブディレクトリで整理する感じになりそう。Tensorboardはサブディレクトリを読んで、別のデータとして表示非表示を変更できるようにしてくれて、(実験一回分はTensorboardでは、runと呼ばれている。)この機能を使うとユーザはrunごとの結果の比較や縮尺を変更した比較などがやりやすくなる。画像のように正規表現で絞り込んで、狙ったそれぞれのrunの表示非表示を変更できる。下の画像では、runは一つだが、groupが複数あるので複数runsが表示されている。(data/loss/focal_lossなど)やりたい実験ごとにディレクトリを区切るそれぞれのディレクトリ以下に実験を再現できるパラメタすべてを入れる。実験に関する情報(パラメタ、依存パッケージやそれらのバージョン、マシンに関する情報など..)パラメータを関数間で引き回さなくていいのがすごいいい気がする。任意の関数にcaptureデコレータで設定を突っ込める。引数定義がargparseと比較して楽にできる。関数を呼び出す場合に、どの引数が設定されていて、どの引数を与えないと行けないかわかりにくくて、バグを生んだり開発スピードが下がりそう。dictionaryを引き回すほうがわかりやすいかも。OmniboardSacredにあるMongoDBに実験結果を保存する機能のフロントエンド。実験結果の一覧を見れる。タグとステータス以外で検索が出来ない。issueに上がっているので今後サポートされる可能性はある。EC2などリモート上でJupyterがすでに動いている前提です。...2019-02-08基本的なデータ構造のちょっとした整理データ構造、一般的な用途、MLとの関係を表にまとめました。sklearnについて調査した月別アーカイブはてなブログをはじめよう!sam_yusukeさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。