作者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/cn.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