作者abc2090614 (casperxdd)
看板DataScience
標題Re: [討論] 機器學習如何做好version control???
時間Sat Apr 14 09:19:46 2018
※ 引述《littleyuan (baby)》之銘言:
: 大家好
: 我是ML新手 跟的前輩是很優秀的超強者
: 但是前輩很不organized 寫的code總是不commit
: 主管希望下個項目之前我可以提出報告要如何改進並且希望前輩能跟進
: 我是覺得ML和其他寫程式有點不同
: 因為不斷測試參數 每次調參數都commit的話好像太繁雜 所以我一般是有了好結果才com
: mit一次 不知道大家一般怎麼做的
: 另一個問題是資料庫會更新 更新過程那原來的model 不變讀到的數據就不一樣了那出來
: 的結果也還是不一樣
: 這樣要怎麼reproduce做出和原來一樣正確率??
: 大家會寫個word檔紀錄每次Data的變化嗎?
: 想知道大家實際工作上是如何管理的呢?
我寫一點自己的想法。除了推文裡寫的
1F:推 abc2090614: ....這算大哉問等級的問題 (拉椅子等回答04/14 05:33
2F:→ abc2090614: 我通常是參數會存到另一個檔裡04/14 05:34
3F:→ abc2090614: /data 部分丟進.gitignore 會備份但盡量不動04/14 05:35
4F:→ abc2090614: 在訓練模型時不能一直用新data 不然會變多頭馬車04/14 05:36
5F:→ abc2090614: 取什麼data或一些business logic寫進.md或test cases04/14 05:37
6F:→ abc2090614: 之前有試過用GNU make 不過不太順手04/14 05:38
7F:→ abc2090614: 最近發現這個但還沒試過, 他的模板大致不錯, 有些04/14 05:39
8F:→ abc2090614: 我不太同意就是: 04/14 05:39
9F:→ abc2090614: google搜 cookie cutter data science04/14 05:39
我的作法是
開兩個repository
假設專案叫xyz
那我會開一個 xyz-explore 另一個 xyz-prod
xyz-explore裡面可能很亂 不會完全照 software version control 的方式作
但只要作出比目前存在 xyz-prod 裡好上一截的東西
就把 explore 裡的pipeline和參數搬過去
連同 sample data, 說明檔之類的一起弄進去
我覺得 git 是軟體界的東西 對軟體工程師的工作流程幫助很大
因為建軟體時有 spec 可以照著走
但作資料科學時常常前進一步後退兩步
或是今天新抓的data source 寫的 script 試的方法 明天結果跑出來跟垃圾一樣
如果 xyz-prod 裡的檔夠乾淨 通常老闆和其他人容易看懂 都ok
xyz-explore 裡面目前我還沒想到一個好的整理法
特別是常常在探索時寫的一堆 .sql .hql 真的不知道怎麼歸類
通常我都是一邊寫一邊建 .md 像寫日記一樣
回頭只要能找到自己當時為什麼會寫這段code 抓這個data
或這個不等式是因為什麼business logic 在幹嘛就行
xyz-prod 就盡量照著軟體界的 version control 走
經理和老闆想看的是 prod 不是 explore
把 explore 跟 production 工作流程分開的想法我是從這看來的
https://edwinth.github.io/blog/workflow/
之前有對這個想法寫過一篇 blog post 僅供參考
http://changhsinlee.com/exploration-product-workflow/
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 68.71.180.136
※ 文章網址: https://webptt.com/m.aspx?n=bbs/DataScience/M.1523668790.A.95B.html
10F:推 littleyuan: 謝謝你 真的很感謝 我會試著用這個方式做看看 我在ML 04/14 10:08
11F:→ littleyuan: 和programming界都很菜鳥還有很多在摸索 就連git也是 04/14 10:08
12F:→ littleyuan: 今年才開始使用 我會繼續精進的 04/14 10:08