Guild AI で機械学習の実験管理を整然と行いたい

機械学習の実験は、たくさんの設定値やハイパーパラメータをゴニョゴニョしていくので、結果の管理が大変です。

 

いろいろ調べて良さそうだったので、GuildAI使ってみました。

良さそうだった理由

- 簡単そう

- Jupyter Notebookと相性が良さそう

- 実験の再現が簡単そう

- 無料

 

今後に期待?

- 実験結果を数値だけでなく、画像やベクトルも管理できるようにしてほしい(できるのかもですが)

 

ただし、トラブったときにググってもあんまり情報出てきません。ある程度の自己解決できる中級者以上の方に向いているかもですね。*1

 

私はJupyter notebookで実験しています。

おおまかな流れ

コード書く→Guild AIを意識する部分は、設定をグローバル変数にしておくのと、結果を key:value でprint することだけです。便利。

  1. Jupyter notebookで実験用のコードを書く
  2. 実験の設定はグローバル変数にしておく→Guild AIがうまいことしてくれる 例: learning_rate = 0.01
  3. 実験結果は key:value 形式で printしておく→Guild AIがうまいことしてくれる 例:print("accuracy: {}".format(acc))
  4. 設定値を決めてguildaiから実験する。こんなかんじ `guild run file.ipynb param1=[1,2] param2=2`
  5. guild compare コマンドで、実験結果を比較する: guild compare  ちなみにCSVにも書き出せる。 guild compare --csv runs.csv
  6. tensorboardが好きな人は guild tensorboard

ハマるポイント

Jupyter notebookのセルで最終行をコメントアウトしてはだめ。エラーで落ちる。(おそらくバグ)

Scalarをkey:value 形式でprintするとき、keyにスペースいれたらだめ。(仕様)

かっこいいUIで実験結果を見たいのはわかるが、うまくいかないときには無理しない。guild compare --csv xyz.csvで書き出したほうが早い気がする。

 

*1:私も最初からGuildAIのバグの影響をもろかぶりして、原因解明に1時間くらいかかりました。バグの原因はIssueとして報告しときました

ValueError at the commented-out last line in Jupyter notebook · Issue #301 · guildai/guildai · GitHub