小小體驗一下 Comet.ml

Apr 9 2018

kkbox

前幾天有一個新服務 Comet.ml 在 TechCrunch 下了個這樣的標題與介紹:

Comet.ml wants to do for machine learning what GitHub did for code

The service provides you with a dashboard that brings together the code of your machine learning (ML) experiments and their results. In addition, the service also allows you to optimize your models by tweaking the hyperparameters of your experiments. As you train your model, Comet tracks the results and provides you with a graph of your results, but it also tracks your code changes and imports them so that you can later compare all the different aspects of the various versions of your experiments.

大意是說,這個 Comet.ml 的服務,是被開發來給資料科學家用的服務。 它就像 GitHub 是給 developer 用的一樣,扮演著類似的功能,只是是特別對 model training 做一些特化。 所以它會把每次的建立模型的 1) 程式碼; 2) 參數; 3) 設計的模型; 4) 安裝了什麼 Python packages; 5) 模型練習的過程/成效/結果; 6) stdout; 7) 其它文字註解… 這幾項給通通存起來,方便日後回來校閱或比對。 更方便讓幾位資料科學家或演算法開發的工程師可以一起研究,有個依據。

一言以蔽之, 它是一個用來 紀錄 / 追蹤 / 比對 一個模型設計與開發的服務。

感覺挺有趣的,決定來試試看。 本著上次在公司裏頭鐵頭的 Data Team Workshop 的一些些印象, 加上它又有 repo,而且還是友善到不行的手把手 notebooks 型式, 很有機會可以拿來試驗一下這個 Comet.ml,即使我至今還沒完整看過 Tensorflow 或是 Keras 的文件或教學影片!

看來看去,就拿裏頭的 MNIST 來試好了。

用最簡單的兩個 Dense (Just your regular densely-connected NN layer) 做一個 model, 第一個 layer 的 output vector size 用 64, 第二個(最後一個) layer 的 output vector size 則是 10,設成與 MNIST 要分類的個數一樣。 丟下去跑一跑,在 Comet.ml 上跑出了這麼一個 Experiment

在 Comet.ml 上頭,每一次的實驗,就叫一個 Experiment。 透過它 monkey patched 過後的 Keras, 一旦你開始執行你的程式做 training, 它就會開始自動紀錄你 model training 的整個過程, 它會自動幫你把每次 training step 的 (loss, accuracy) 給記下來, 然後最後(按官方文件的說法)自動上傳到 Comet.ml 平台。 也可以再自行加上呼叫幾個 log function 來特意把一些想記的參數給上傳上去。 這個是我第一次的 experiment 的程式碼

相當的有意思,忍不住多把玩了幾下。 (結果就是睡到半夜四點醒來,還多下了一個 experiment XD)

最後,我弄了一個 CNN + Max pooling + 2 層的 Dense NN, 跑了兩個多小時,我睡醒後才看到結果。

心得:

  1. Comet.ml 應該會是一個好工具,不過它現在還有一些 bug。Firefox 不太行,然後有時會連線失敗。
  2. 它提供的 Optimizer (for Hyperparameter optimization) 試不成功 XD
  3. 順道認識了一個叫 Parameter Configuration Space (PCS) 的格式。
  4. Comet 支援 notebook 會有一些問題,至少在 stdout 上不太正常,另外就是要等到整個 notebook VM 都停掉了,才會把整個 experiment 停掉。
  5. 好好的設計與規畫的話,配合它的 Optimizer 的話,應該很適合拿來玩一些 Kaggle game。

這個是我整個小小試驗的 Comet Project: mnist

comments powered by Disqus