Pentium.Labs

System全家桶:https://zhuanlan.zhihu.com/c_1238468913098731520

导航

2019年总结

转眼间在明尼的生活也过去一多半了,也是时候做个总结了。

现在翻盘来看这一年还算是有点收获:去了很喜欢的公司实习、第一次在开源项目上留下了自己的名字、发现了自己更喜欢的研究方向、认识了很多令我钦佩的小伙伴。唯一的遗憾大概就是没能住上心心念念的有落地窗的Hub apartment…

 

19春季学期上了两门洗刷灵魂的好课:分布式系统和Machine Learning in Computer System。

国内开设分布式课程的学校其实屈指可数,但这门课在国外还是挺普遍的。个人感觉学会这个之后再看后端开发中的很多问题会明显高一个段位。最著名的分布式系统公开课大概就是大名鼎鼎的6.824,但明尼的教学计划其实缩水了一些:用Java、lab不用考虑Fault Tolerance、也不讲Raft。总体上算是入了个门吧。本来打算暑假再刷一遍6.824然而放鸽子了…咕咕咕

ML in Computer System是一门讨论课,就是大家一起读paper、做presentation和讨论。Paper大多是用ML解决很多system领域中的问题,比如数据库调优、编译器优化、虚拟内存索引、data placement等等。这门课某种程度上说真的是改变了我的成长轨迹… 我后来实习的project,还有对自己发展方向的调整,很大程度上都来自这门课。Jon真可以说是我system路上的启蒙老师…毕业的时候要找他合个影哈哈哈

 

在MLsys课上读到过SIGMOD17的一篇paper:OtterTune,是用ML的方法调节MySQL数据库的参数。当时这篇paper分到我做presentation。其实我这次presentation做的很不好,磕磕巴巴,后来还被Jon留下单独谈话了…结果后来没想到这篇paper就成了我实习项目的来源。当时我看到PingCAP参加了今年的Google Summer of Code项目,其中一个topic就是希望做一个Auto-tune RocksDB出来。这个scenario和OtterTune简直一模一样呀!于是我申请了这个项目,然后就开工了,后来没想到居然还真有点效果……期间mentor吴毅哥给了我非常多的帮助,也帮我打开了一个新世界的大门。这个项目的总结最后被整理成了公众号文章,后来又搞了个英文版发到了CNCF Blog。也算是在开源社区留下了自己的一点足迹。

 

暑假的Summer of Code之后,我也开始思考下一步的方向。其实来明尼之前我是一个典型的烂大街Deep Neural Network选手(import过几次TensorFlow就号称要搞机器学习的那种),但经过这几个月之后,我发现system其实才是我的真爱啊……学ML时繁杂的数学公式看得我直打瞌睡,但肝OS和分布式时学习底层结构、debug的过程却让我乐在其中。其实想想本科我更感兴趣的也是计组、OS、数据库这种课呀,只不过那时候自己也没觉察出来罢了,再加上肥工的教学水平也有点不敢恭维。其实这时候才开窍是有点晚了,因为明尼的AI搞的其实还行,但system却是个弱势学科,而且也没有啥扩张的意向…不过这年头搞system的人少,竞争也没那么激烈。

然后就是就业还是读PhD的问题了。其实很多人都觉得system是个不需要读博士的方向,很多成果都是senior大佬而不是学校实验室做出来的。我一开始也深以为然。但在Summer of Code结束之后我开始感觉,虽然AutoTiKV做的还算有点效果,但核心思想毕竟还是别人的。还有我司的拳头级产品Titan,核心思想也是FAST16的一篇文章,而我们是把它拿过来实现的。当然implementation的过程中也有很多艰难的工作要做,但什么时候我也可以提出一个自己的idea,能有所创新呢?想到这里其实目标就比较明确了,因为大多数情况下这种工作只有PhD能做出来。当然也不是绝对,但一定要有等同于PhD的那种能力……就以数据库为例,比如阿里的OceanDB、华为的GaussDB,很多feature都是靠招了大把PhD带出来的。一方面能出很多好的paper,一方面也能提高自己产品的竞争力。这种比纯粹工程上的优化还是高一个段位的。还有一个考虑就是博士生依然可以利用暑假实习、参与开源社区等机会提高工程能力,但上了班之后能潜心做研究的机会就很少很少了,也没有在学校的那种自由度了。我一开始对PhD的期望是精通某个领域,但其实这方面工业界的senior大佬比憋在学校的小朋友强多了…所以作为一个博士一定要争取有所创新,要达到做研究岗的水平。多想想业界的需求而不是为了毕业灌水。当然这个靠个人努力是不够的,好的环境和导师非常非常重要……

 

然后就是未来发展方向的选择了。一方面我感觉system要做好必须要搞全家桶,就是下至architecture、上至application都要比较懂。因为现在需要软硬件结合的工作越来越多了。比如数据库+NVM、向量化引擎+SIMD、还有MICRO上铺天盖地的深度学习加速器之类,如果有瘸腿就很难follow别人的工作。但另一方面还是要选好一个打算深入做下去的小方向。19秋季学期我就开始考虑这个事情,于是这个学期成了比较惨烈的一个学期……硬课(computer architecture)+实习(继续做AI+DB)+科研(分布式ML system)全压上了…好在最终还算有收获,全家桶初具成效,科研算是初步走上正轨,实习项目效果也还可以。我其实对很理论的东西不是很感兴趣(比如数据库+data mining、programming language这种),再结合学校里具体的一些情况,因此先跟着高年级PhD做一些decentralized distribute machine learning的工作,AI的饭还是有点香的……另一方面下学期有个storage system的讨论课,感觉也有很多好玩的东西可做,比起冗杂的RDBMS理论我还是更喜欢底层的一些东西。

 

接下来的一年希望能继续高速发展下去,多学些硬核公开课,做出一些更有价值的成果,不断发掘自己能力的上限。

 

2019.12.27    于IAH机场

 

posted on 2019-12-28 12:31  Pentium.Labs  阅读(688)  评论(2编辑  收藏  举报



Pentium.Lab Since 1998