↑ 点选白字关注社会公众号申领资料
我们好
今天给我们撷取一位元老在Facebook担任ML Engineer六年的组织工作归纳与体悟,目前已去CMU竭尽全力修读AI phd,国外与国内虽然组织工作环境不同,但许多组织工作方法与思索都是能共同进步的,以下为书名。
作者:SpadeAce | 编辑:台词的演算法屋 https://zhuanlan.zhihu.com/p/384518276六年前加入 FB 的这时候,彼时只是把 FB 的组织工作经历当做 gap 两年去读 phd 的跳台,从来没Dharmapuri竟会在 FB 待这么较长时间。那时转头看一看,4年来他们成长了许多,是这时候做个专题报告了。
最后目标始终蛮明晰:去读 phd。本来的打算是在 FB 组织工作两年,赚两年签字费 + 大三做的 research 能用在提出申请上。不过RocoForex果真,大三 research 做的二团体无完肤 + 提出申请 gg,两年跑路的想法触礁了。。。只能竭尽全力组织工作 + 换组累积大背景了。
17年 bootcamp 幕臣的这时候,因为想做 ML + 大背景不够强,最后优先选择了 production 组做从0到1的机器学习工程项目。彼时的工程项目是 automate user report。从0到1搭一套简单的 ML 系统第一次做很有意思,竭尽全力再做就说实话了,控制技术上很难深入。18年底下定决心转组,去做更有控制技术广度的 ML 工程项目,也为 phd 提出申请竭尽全力做累积。彼时的优先选择有 Applied ML(AML)组 和 Ads Ranking 组(FB product ML 做的最重的组众所周知),优先选择 AML 的话可能将关注点是 infra 而不是 modeling,最后优先选择了 Ads Ranking。那时转头想,优先选择 Ads Ranking 可能将是我做的最正确的下定决心众所周知。在 Ads Ranking 我完成了他们原订的大部分最后目标。在 Ads Ranking 做了两年半,2021年5月末从 FB 离任,准备8月末去 CMU 读机器学习方向的 phd。
这六年组织工作感受真切的点归纳下来其实也不多:
1. 明晰(当前)他们内心深处最想的是什么,并为这个最后目标做出下定决心+牺牲努力。只有明晰了最后目标,做下定决心时才能不为外间驱使所动,始终如一他们的优先选择。对个人的最后目标经常与公司/老板娘的最后目标不相连接。就我对个人来说,过去五年最想的是 phd 期间做有意思的 research 的 experience,那么换组(牺牲生命了更快的 promotion+钱),做更偏 core ML 的 project(牺牲生命了更好的 rating+钱)的优先选择便自不过然了。
2. 做有象征意义,有用的组织工作。这也是我为什么会优先选择读 phd 的原因:我始终觉得推动自然科学的进步是最有象征意义的事情众所周知。当然,做 research 大机率会成为成功的个数,也许他们的 research 是证明科龙戈省。不过,个数越大,自然科学向前发展的机率也就越大。甘愿的去做自然科学的个数,去看一看世界最前沿的研究,并尽他们所能打打补丁,这种生活也不错。“怕什么真理无穷,进一寸有一寸的欢喜”,得到知识时的喜悦也是无与伦比的。那么如何衡量他们的组织工作带来的价值呢?首先这项组织工作应该是给世界带来价值的。比如我对个人认为,广告推荐系统是一项不能给世界带来价值的组织工作:靠贩卖用户隐私信息来获取利润。当然许多人会说,更精准的广告推荐能促进经济发展。但与此同时的 cost 是更大的:大部分人不希望他们的点选行为被 app tracking(这也是为什么 FB 根本不敢让用户来优先选择)。从以人为本的角度来讲,推荐系统带来价值确实有些牵强,真心希望做推荐系统的小伙伴们能考虑一下其他更有象征意义的组织工作。当然,必须要承认,能够自由优先选择组织工作是一个很大的 privilege,有经济压力的情况下还是什么来钱快做什么吧。。。第二呢,他们能够增加额外的价值。追逐学术热点灌水是没有用的:即使组织工作有一点点象征意义,你不做别人也会做。要做一些有用,且价值较难被别人取代的组织工作。
3. 多看多听多想,少做片面的结论。做到对事不对人。刚组织工作的这时候,遇到看不惯的事情总会轻易否定一对个人或者否定一个工程项目。比如之前同事着急 launch 一个做的非常失败的工程项目导致我需要熬夜打补丁,彼时心里非常不爽,并在心里彻底否定了这个工程项目以及工程项目的负责人们,觉得他们为了他们的年终 review 好看而不负责任的 launch,导致许多同事熬夜修 bug。这种武断的评价往往是不负责的,因为工程师们往往缺少 full context。也许 launch 的下定决心是 top down 下定决心的,或者本来是好心认为这个工程项目能够提高工程师们的效率,结果好心办了坏事儿。我经常会与我的老板娘们交流对于某些组织工作上事情的看法,并以“喷人”为主。但是80%的情况下,我之前的理解与判断都是片面的。当老板娘们提供了更多的 context,我往往会对我原来看不惯的事情抱以更多的理解。
4. 控制技术为产品服务。刚毕业的这时候,总觉得他们想做最厉害的控制技术。这个世界上最值得钦佩的人是控制技术大拿,其他组织工作都是虚头巴脑的“扯淡”。但其实不管多厉害的控制技术,最后始终要落地产生 production impact。许多这时候一个产品的成功控制技术并不是瓶颈,所以也就没有优化的必要了。所以想做控制技术的同学们,幕臣的这时候想一想控制技术真的是 bottleneck 吗?这个组离产品足够近吗?举个具体的例子,Ads Ranking 控制技术是 bottleneck,模型0.1%的提升就能带来亿级别的盈利而且离产品足够近;AML 相对来说是一个较差的优先选择,离产品组太远,导致难以拿到 production impact 以及升职空间受限。相应的,除去控制技术能力,people skill / communication skill 也极为重要(甚至比控制技术能力更为重要)。可惜上学时短视的他们并没有注重培养这方面能力。
5. 身体或心理健康最重要。这六年见证了两位同事的离世(其中一位在公司的食堂跳楼自杀,可想而知彼时承受了多么大的压力)。要有”此处不留爷,自有留爷处“的信心,留好 “fuck you money”,敢于与职场 PUA 做斗争。CS相关组织工作踩在了时代风口上,组织工作10年已经赚了其他行业水平相似的人一辈子的工资。作为一只在飞的猪,我始终真切认识到这个行业赚这么多钱是因为当前的供需,而不是他们的能力与之匹配。
6. 坚持是胜利。在 FB 压力最大 / 最 frustrated 的这时候是刚转进 Ads Ranking 的这时候。作为一只 ML 小白,许多东西看不懂。加之彼时负责 model 的 shipping,FB 的 infra 又极差(比如 4个 model 才能成功 1 个;infra 组写的 model shipping tooling 跑都跑不了,更别说逻辑正确了),document 几乎没有,Tech Lead 能够提供的帮助有限,每天都在 frustration 中度过。而且 project 又极其无聊,天天是调 feature + 调参,跟我预想的 core ML 组织工作有极大差距,每天都想跑路。于是乎我给他们定了一个时限,给他们一年时间坚持一下,如果还是不入门,那就换个地方。慢慢的,不懂的 ML technique 看得多了,也就熟悉了。model shipping tooling 不 work,能优先选择不用,用大神一个周末写出来的 script(10x engineer 诚不欺我,2天写出的 script 比一个 team 几个月写出来的都好 lol)。Project 无聊,能去提出申请换个更感兴趣的 project && 换个更 match 的 Tech Lead(此处应感谢优秀靠谱的老板娘)。就这样坚持了几个月,我终于入了门,并能提出新的想法。那时回过头来思索,这次困境让我收获良多。控制技术上,ML入了门,且知道了 well-designed system 与 ill-designed system 的区别;people-wise,知道了好的 Tech Lead 是什么样子的,以及他们适合与什么样的人合作。如果彼时没有坚持下来,可能将人生道路会完全不同(至少 phd 应该是 gg 的)
7. 更有同理心。不是每对个人都有一样良好的教育资源 && 家庭条件,可能将对他们来说轻而易举能做到的东西别人需要更多的努力。我以前看不惯对他们的组织工作不负责,为了一己私利作弊的人。比如知道他们的模型改变对于模型来说没有任何用处还硬要 propose。再比如为了 model launch 黑的说成白的(明明有 loss 非说没有,claim 不 significant)。那时慢慢也于此和解了:也许别人需要更好的 rating 来支持家庭,也许别人彼时正在经历苦难需要一些组织工作来保证不被开除。虽说作弊行为还是不对的,但是不了解 context 的情况下不要轻易否定别人。否定别人对于解决问题没有任何帮助,一个更好的解决方案是提出更好的 guideline 来杜绝作弊行为的发生。
8. 有数据的情况下,从0到1搭建一个 (supervised)ML model 是极其容易且 impactful 的事情。模型用 GBDT,再保证 training / serving data 一致,模型一般来说就够用了,不再成为 bottleneck。更重要的是知道在什么样的产品下应用ML。我对个人觉得这种比较成熟的控制技术与传统行业结合能够提高传统行业的效率,比如预测某件衣服卖的好不好并下定决心其库存。
9. 真切理解实践 hypothesis-driven 的机器学习方法论。首先观察数据发现 insight,然后提出可验证,好验证的假设,再做实验去证明/证伪假设。组织工作时见过许多非常糟糕的“hypothesis”,许多是先有一个好的且不知道为什么好的结果,再反推(bian)一个 hypothesis。比如某些模型魔改组织工作,先搭了个积木试试,发现结果好,再编一个 hypothesis:比如“更好的利用了 feature 的 high order interation”。至于具体是不是这样呢,谁知道呢?一个优秀的组织工作应该是具有具体的,有逻辑,易验证的假设,且验证假设以后应该大机率能提高模型的效果的。比如同样是刚刚的模型魔改组织工作,如果一开始我们发现一些 n-gram feature 有 mis-calibration,这个 insight 说明我们的 model 并没有很好的利用 feature 的 high order interation,然后我们能设计模型的结构来更好的 capture high order interation,最后验证新的模型结果减少了原来 n-gram feature 的 mis-calibration,完成了闭环。经过这样的验证,我们才能比较有信心的下结论:新模型的确更好的利用了 feature 的 high order interation。