「沐神」工作五年的沉思录 &「这就是李沐」开挂人生的深度解读

472 阅读25分钟

作者:李沐

链接:zhuanlan.zhihu.com/p/374777591

沐神,想必大家或多或少有所了解。

硅谷技术人才,深度学习框架MXNet作者之一,也是《动手学深度学习》作者之一。

最近有一篇关于他工作五年的总结,在AI圈爆火~

今天,分享给还没有看过的朋友,大佬工作五年的总结,是什么样的。

工作五年反思

五年前的今天我飞往西雅图参加亚马逊的面试。面试完后连夜做红眼航班飞往波士顿赶去参加老婆在MIT的博士答辩。答辩一半的时候电话响了,对方说恭喜你面试通过,想聊下薪水。我说其实就面了你们一家,直接给就是,先挂了。

答辩完第二天跟老婆去市政局登记结婚。在宣誓厅门口排队的时候,老板打电话过来,很兴奋的说你来了后可以做这个做那个。我说是挺好的,但先要结婚去了。老板一愣,道了一声恭喜,继续往下说。我不得不打断:得先走了,轮到我们进去宣誓了。

五年一眨眼就过去了。外面来看最大的变化是多了两个娃。但最大的变化来自认知,是人生观、世界观、价值观的改变。博士毕业的时候曾写过我的体会。

➡️博士这五年

很多同学留言说深受鼓舞。现在我想同样给大家分享这五年工作中的经验和感悟。更确切说是失败的教训,因为每一点就是付出了学费后获得的教训。希望这些同样能对大家有所帮助和启发。

事情的价值是对社会的价值 读书的时候,你会有明确的目标,例如考试的分数、深造的学校、或找到好工作。工作后的最大不同是你有太多可以追求的目标。这个带来的改变是你需要决定哪些事情现在做,哪些以后做,哪些可以不去做。

决定优先级应该是根据事情的价值。我现在评估一件事的价值是它对社会的价值,用公式来写就是

受益人数 x 人均时间 x 单位时间价值差

受益人数 x 人均时间 x 单位时间价值差

这里能从一件事情受益的人数,和受益的人均时间是这件事本身属性。第三项取决于你对这件事完成的好坏,就是你做得比别人做的类似的事情要好,从而受益人从你这里受益比从别人那里多。

这个公式可以用在各种不同的事情上,接下来我们会不断使用它。这里先举几个例子。例如伟大的产品一般具有极高的价值。拿微信来说,它是手机通讯软件,面向几十亿手机用户,每人每天会使用数小时,所以它价值的前两项非常大。因为微信用户体验很好,它比其它替代品的用户体验好给用户带来的价值就是价值差。所以微信是一个非常有价值的产品。

举个小点的例子,例如你带人写一篇论文。论文影响的人数就是这个研究领域的大小;作用时间是别人做一个跟你工作相关的研究所花的时间,可能一辈子就几个月;价值差则是你的研究相在前人工作之上的贡献。这样看来,你需要做热门领域和跨时代论文才能取到高价值。但我们知道一篇论文一般贡献不大、也就几个人会读,所以算下来基本没什么价值,为什么大家还是会积极“灌水”呢?

这里我们还要细看两个价值:一是你通过这个研究熟悉了一个新领域或者新方法,对你个人有学习价值。二是你带人做研究能提升他们在想方法、做实验、和写论文上能力,对他们价值很大。所以即使是知名研究者,名字也会出现在很多新手习作一样的论文上面。

再举一个更小的例子。过去四年里我花在带娃上的时间比工作多。在相当一段时间内都觉得事业被娃耽搁了。直到后来我用这个公式来算:虽然人数只是两个人,但受益时间相当高,一周五十小时以上。而且父亲就一个,有我陪和没我陪对小孩来说区别巨大(自我感觉),所以价值公式的后两项很高。此外,带娃对我个人也有价值,包括如何去理解思维方式完全不一样的他人,以及时刻跟自己想暴怒的冲动做斗争,最终达到佛性的状态。这样算下来心里就顺了。

服务社会最后也是服务自己

上面这个价值公式强调的是事情对他人的贡献。在用它之前,我的价值公式更关注自己。例如我常用一件事情的好玩程度,或者里面的技术含量来划分优先度。问题是虽然享受做事情这个过程,但之后的成就感不高。有点类似打完游戏后的空虚。因为做完后经常发现,这个虽然酷炫但没什么用,没多少人理睬。原因是对个人的有直接高价值的事情,对他人价值不一定大。很有可能这件事情本身只对很小群人有意义,可能每个人受益时间短,或者其实是_重复造轮子_,市面上已经有了差不多的替代品。

如果优化对社会的价值,你会得到对自己的延后回报。这个回报包括了你知道做这个事情对他人有用时带来的更高层次的内心满足,以及他人从你这里受益时给与的馈赠(给你点赞、或者老板给你升职加薪)。当然,这两者不一定同时出现。很多时候你创造的价值不一定被别人关注(数十年维护那些大家用起来习以为常的开源工具包),也有时候大家会夸大吹捧你的贡献。你应该积极寻求别人的肯定,这会给你更多的资源做更大事情。但你应该更关心内心的满足,因为更可控、不容易别他人误导。更多是它会给你内在动力去把事情做得更好,这是你能不断成长的根基。

技术最终是为产品服务

技术专业的同学刚进入公司通常会继续做技术。刚毕业那会儿我觉得进入大公司就是做技术,成为世界上最好的技术专家之一。而且不要做产品,因为如果做产品的话我为什么不自己创业呢,赚的钱还是自己的。后半句没什么问题,但前半句忽略了技术最终是为产品服务这一事实。虽然因为公司的不同,对技术进入产品的预期时间会不同,但通常在半年到五年之间。预期是超过五年的公司屈指可数,而且大多已经作古。所以就算你在公司的研究部门,也应该知道公司对于技术落地时间的预期。否则时间一到就会面临公司削减不达预期的技术的投资。最坏情况是你们上新闻了:某某公司研究院院长离职,部门成员各奔东西。

那么什么样的技术能进产品?通常你会根据公司现有的产品有个大致的想法。接下来你要知道这个产品的主要价值是什么(套用之前的公式)。然后你需要去琢磨你做的技术对这个产品的价值。如果你的技术能提升产品的核心功能,哪怕是一点点,也会得到资源来落地技术。例如提升微信的视频压缩技术、今日头条的推荐算法、苹果的外壳材料。反过来,如果没有抓住主干,例如微信装皮肤、今日头条网页版加速,苹果操作系统兼容其他硬件。就算你可以做到比现有技术提升很多,产品团队也可能没动力帮你,甚至一开始就告诉你别做这个。

所以不管你是在产品团队做技术,还是在公司研究院,都应该对产品的价值有所了解。例如深入理解产品经理的口头禅:市场、刚需、痛点、高频。同时也应该知道你手上的技术对产品的价值,用它来指导你对技术路线的规划。

不想当将军的士兵不是好士兵

人的满足感来自于对比,不管是对比别人还是对比自己过去。这个欲望驱动你去追求有更大价值的事情。这意味着你需要更多资源去做大做强。最起码的是你需要一个团队。你可能是这个团队的管理者、领导者、或者兼任两者。

也许你更喜欢一个人做技术,至少我一开始是这么想的。但随着你的能力的增长,别人对你的责任的期望也越大,你不可避免得去带一个团队。否则你得去其他地方找满足感。与其别动的被推到了这个位置,不如一开始就做好准备。

这里有大量的职场书籍可以参考。我自己的经验很简单:领导者是带路者,需要有好眼光。管理者是后勤官,让团队执行高效。下面分别解释这两点。

放眼在三年以后

领导者最重要的是在带着团队探索未知领域时找出正确的方向。也就是说保证你们做的产品或技术是有价值的。因为做一件事需要时间,所以你得预判事情在未来的价值。如果判断不准,大家辛苦做了很久,做完后发现效果一般,那么团队士气就会低下。各种问题就会接踵而来。

你去想一件事情未来的价值时,时间不要太短也不要太长,三年比较合适。假设你想继续沿着现在的方向走,那么需要考虑三年后你关注的用户群和使用时间是不是会发生变化。变多是好事,不变表示你做不了太大,但如果会变少,你得考虑要转向了。你还需要警惕新技术的出现,很可能新的技术会短短几年就完全推翻旧技术(深度学习、智能手机、电动车)。分析那些失败的例子,当事人其实很早就察觉到了新技术,但低估了它的能量。他们只看到了新技术比现有成熟技术的不足,然后套用成熟技术的发展速度在新技术上,低估了三年后新技术能到达的高度,和用户喜新厌旧的程度。

如果你要做一个新的方向,那你可能不再有技术积累优势,就是跟别人比你给用户带来的价值差可能不明显,甚至更低。那么你需要找到好赛道(投资人口头禅),通常是颠覆性的新技术,以及随之带来产品和用户的变化。只有在快速变化的赛道上,新入局者才更容易通过更准确的预测未来的价值来弯道超车。也就是乱世出英雄。

好的眼光需要一个长期的训练。你需要不断的去做深入思考,获得自己独特的观点,而不是靠朋友圈里大家的高见。所以你需要时不时放下手头的事情,给自己空出时间做深入思考。例如我会时不时去家附近的Bay Trail走上几个小时,边走边想。

管理的核心是诚心待人

如果你有一个明确的团队目标,和一个高质量的团队,高效执行是水到渠成的事情。所以管理者有三个核心事情:招人、留住厉害的成员、和帮助落后的。招人最理想是招比自己厉害的人。另外是每次招的人都比同级别的一半人厉害,这样能保证团队扩张时能不断提升团队质量

能力突出的成员在哪里都会受欢迎。你的一个任务是让他们能尽可能长的留在团队里(虽然最终是要走的)。一个办法是把自己放在他们的位置,想象你想你的领导如何待你。例如我自己最希望的是不断做有更大价值的事情(成就感),并从中学到新东西(个人提升)。在我困难时候老板能给与支持(经常发生)。其他的都可以换算成当前待遇,例如可以多少时间做不喜欢的事情(不赞同一件事的价值,但又没能说服别人不做)、上下班路上很堵、食堂没中餐。所以大方向上是创造轻松的环境、每年能新立项有价值的项目、和尽量给大家争取待遇。

对于绩效不理想的队员,你需要经常性的指出问题并给予建议,如果一段时间没改进则需要讨论是不是当前项目不合适。如果仍然无进展的话,那只能帮助他们换组,或者要求他们离开。同样,你需要把自己代入对方的位置,明白想得到什么样的帮助和尊重。绝大部分时候,不是他们人不行,只是你们不合适。愉快的分手能让前成员更快的找到更合适的职位(从而避免他们给你寄刀片)。

专注!专注!

有人说创业公司一个常见死因是在有了一定成绩后盲目扩张。这个在哪里都成立。不管你是一个人,带一个团队,还是领导一家公司,资源总是有限。集中资源在最有价值的事情才能保证成功。例如苹果好几十万人,但对于产品线的扩张上非常谨慎。从而能保证每一款产品都砸上足够多资源来颠覆市场。在初期你也许可以广撒网多捕鱼,一旦事情的价值慢慢清晰,我们需要逐步集中资源。因为同时把做几件类似的事情最好,不如只把一件事情做到极致、做到市面上最好。这样你总是可以得到正的价值差。一个第一比十个第二好,第三通常都活不长。同样的道理也可以用在生活、社交、和学习上。

只要投入力气,短板可以变成优势

以前每次发布MXNet的新特性时,知乎同学都是吐槽:回去写好文档先。大家都知道程序员不喜欢写文档。我从小语文和英语都是在及格线徘徊,更是心有抵触。17年的时候痛下决心来写文档,我把我所有留下做技术的时间都花在上面,最后跟大家一起写出了《动手学深度学习》这本教科书,现在被全世界近200所大学采用做教材。所以,你的不足能成为你的机会。只要你直面它,狠下心来花力气,不断去改进,你的短板会变成优势。

扬长避短

所有命运的馈赠,都在暗中标好了价格。当我把精力都花在文档上时,便忽略了MXNet本身。没能组织投入大量资源去持续提升它的性能和易用性,导致它没能做到前二。从价值上来说,《动手学深度学习》和MXNet在用户数和用户价值上差不多,但用户使用深度学习框架时间多于读教材,所以MXNet价值更大。在不擅长的领域花费了大力气打赢一仗,但在优势领域失去了价值更大一个,很难说是划得来。所以,在扬长和补短上面,一定是要根据价值来判断,而不是面子。

分布式系统里通讯开销才是大头

当一台机器算力不够时,我们用多台机器协同工作来共同完成任务。虽然分布式系统是很多家互联网公司的基础架构,但提升性能仍然是很难。因为每台机器实际算力会有不同,时不时还会罢工。而且一台完成自己的小任务时,经常需要等其他机器任务的结果,导致频繁数据通讯和等待。所以大家都知道提升性能的关键是减少通讯开销。

当你需要一个大团队来协同做一件事时,同样通讯开销是大头,优化起来比分布式系统能难,因为人的差异性和不稳定性比机器大多了。人的能力不同,做事效率不同。每个人分工的不同,导致做事方式也不样,甚至优化的目标都不一样。大部分人只关心自己的事情,不想也不愿操心别人的事情。如果不能有效把所有人拧在一起,就是一盘散沙,做不成大事。如果你刚进职场,最关键的一点是你需要意识到:你需要预留足够多的时间和精力来沟通。不要抱怨这是你们公司的制度问题,这是大团队作战时的固有现象。

升职

我因为运气不错升到了一个比较高的职位,从而有机会经常参加公司的从高级工程师、科学家到总监的升职评定。虽然公司、职位、级别不同带来差异性,但总体来说,一个人能否升职成功取决于她做的最大项目对公司的价值是不是达到这个职位的要求。这里有三个要点:一是项目对公司的价值。意味着针对的人群和价值差都是公司关心的,而不是你个人或者社会关心的。这里价值通常就是给公司赚了多少钱,或者3-5年后可能会赚多少钱。二是看的是你最大的项目要够“档次”。累积很多项目,想通过不看功劳看苦劳升职可能是行不通的。三是你在项目中的贡献,例如你负责多大一块,是贡献了代码、团队协调、宣传、制定计划、还是申请到了资源。一个常见误解是跟人合作会降低我的贡献。如果你和合作者配合不好,导致1+1远小于2,那么你的贡献确实降低了。但如果通过合作把项目价值做大了,那么你分到的贡献是不会少的。特别是如果项目价值上了一个档次,那就更好了。

升职有一个经常被忽略的“潜规则”是影响力。随着职位的升高,公司对你的影响力的期望也越高。从能影响一个小团队,包括制定技术路线、帮助队员上手、解答疑惑、甚至是帮助别人来完成工作,到影响隔壁组(经理),影响隔壁部门(高级经理),影响隔壁集团(总监),最后到影响整个公司战略(副总裁)。

除非你是天生的领导者,不然你得花力气去培养自己的影响力。简单来说是在管好自己的事情外,积极的去帮助别人。当别人信你、咨询你意见、愿意找你合作时,那你就有了对他们的影响力。你可能会觉得帮别人会耽误自己的活。但从公司角度来看,是需要鼓励这种奉献精神,而且要予以奖励。此外,你从中赢下的信任给你带来名声和人脉,长远来看是很有用的。

加薪

大公司里薪酬相对透明,每个级别对应的薪酬通常可以在网上找到。一个级别内薪酬有浮动,一般有个最小值和最大值。80%在中值附近,两头各10%,分别是刚升到这个级别的人和快要到下一个级别的人。可以简单的认为,随着能力的提升,你的薪酬会从最小值逐步跳到最大值,然后升职到下一个级别对应的区间。

不同级别的薪酬中值通常是个等比序列,而不是等差。例如比你高一级的人可能工资比你多一半,但高三级的人不是比你多150%,而是多238%。在这个模型里,你需要优化你的五年后,或者十年后能到达的高度。所以在比较offer时,你不要太关心它们之间的数字差价,而是关心去你去了之后的发展(你说我现在多拿点去买币,说不定马上就财富自由了,那也是一个思路 )。

总结:专注于最有价值的事情

如果把这五年的感悟精炼成一句话的话,会是很平淡的一句:专注于最有价值的事情。首先,你需要对价值有清晰的认识。接着,对一件事情,不仅是要认识当下的价值,更多的是对未来价值的预测。其次,当你通过不断的快速试错对未来有了把握的时候,你需要逐步的把你能调用的资源专注到最有价值的那一件事情上,尽你可能的做好。

如果一生中能做好几件有着极大价值的事,那也就值了。


这是李沐

“大神”,是很多人对李沐的印象。作为一经推出便大受追捧的 MXNet 深度学习框架的主要贡献者之一,李沐功不可没。

在这里插入图片描述

李沐的职业生涯

倒叙来看,李沐目前为止职业和学习生涯大致是这样的:亚马逊首席科学家,2017 年 3 月至今百度首席架构师,2014.4-2015.12CMU 读博士,2012-2017Google Research 实习生,2013 年夏百度高级研究员, 2011.4 - 2012.8香港科技大学研究助理,2009 - 2010微软亚洲研究院实习,2007 年夏上交 ACM 班现状:在亚马逊发光发热

按照李沐的领英个人页面介绍,他在亚马逊的工作职责主要有:

领导 AWS AI 科学团队,使深度学习易于使用

包括使用动手笔记本教授深度学习:Dive into Deep Learning使CV/NLP/GNN更容易:GluonCV,GluonNLP,Deep Graph Library

减少深度学习的机器成本:

  • DL框架:MXNet
  • DL编译器:TVM

这其中提到的教授深度学习笔记,就是李沐在 2019 年 1 月在 UC 伯克利上线的深度学习入门课程 Introduction to Deep Learning。同授这门课程的还有李沐的亚马逊同事 Alex Smola。课程内容大致是按照李沐老师的开源新书《动手学深度学习》来安排的。
课程主页:Introduction to Deep LearningGitHub:berkeley2017 年,李沐在其个人微博上总结了这一年他所在的亚马逊人工智能部门的两大重点工作:更灵活的前端 Gluon 和更可拓展的后端 NNVM compiler。
其实早在 CVPR 2017 上,李沐就提出了 MXNet 的重要新接口 Gluon,还撰文介绍MXNet/Gluon 的教程:cvpr17随后,在 2017 年 10 月,亚马逊 AWS 和微软共同宣布推出深度学习库 Gluon。Gluon 为各种水平的深度学习开发人员设计,帮助开发者在云端、App 和其他设备上设计原型,创建、训练和部署复杂的深度学习模型。
目前,Gluon 已经与深度学习引擎 Apache MXNet 合作,并已支持另一个深度学习引擎——微软认知工具包(CNTK)。2017 年 10 月 7 日,亚马逊和华盛顿大学合作发布了开源的端到端深度学习编译器 NNVM compiler。
NNVM 是华盛顿大学博士陈天奇等人 2016 年发布的模块化深度学习系统,2017 年 8 月中旬,他们又推出了将深度学习工作负载部署到硬件的端到端 IR 堆栈 TVM,支持将包括 MXNet、Pytorch、Caffe2、CoreML 等在内的深度学习模型编译部署到硬件上并提供多级别联合优化,使得速度更快,部署更加轻量级。NNVM compiler 对 CoreML 的支持,让开发者可以在非 iOS 设备上部署 CoreML 模型。

自带光环的过去

说完了李沐大神的现状,现在我们来简单回顾下他带有传奇色彩的人生经历。

ACM 班“沐哥”

2004 年,李沐从上海交通大学计算机系 ACM 班毕业,在学校人留下“沐哥”的传说。在同期同学的眼中,李沐作为 ACM 班的典型代表,是个颇有领袖气质的人,以至于自然而然地获得一个“沐哥”的称号。他还是一个德智体美劳全面发展优秀学生,从专业课到个人大学四六级考试成绩都名列前茅,且兴趣广泛。在上海交通大学,他又度过了四年硕士生涯。在后,2011 年 4 月-2012 年 8 月,他在百度担任高级研究员,创建了一套分布式机器学习广告系统。同年,在接到 CMU 的 offer 之后,他决定赴美深造。在李沐于 2017 年发布的文章《博士这五年》中,他提及了这段经历。2011 年,李沐收到 CMU 的offer,在当时还在百度的余凯和张潼的引荐下,李沐决定辞职离开百度,开启 CMU 博士生涯。

CMU 师从 Alex Smola 和 Dave Andersen

在 CMU,李沐师从机器学习大师 Alex Smola 和 分布式系统教授 Dave Andersen,在两个导师的辅导下,李沐迅速成长。此后,李沐加入了余凯的百度“少帅计划”,他选择了与相熟的陈天奇一起,把 CXXNet 作为起点,开始做深度学习相关项目。

创建 MXNet

此后,在陈天奇写 xgboost 的分布式启动脚本时,他们发现很多基础部件例如启动脚本,文件读取应该是可以多个项目共同使用,而不是每个项目都造一个轮子,于是李沐与陈天奇在 Github 上创建了一个叫 DMLC 的组织,用来加强合作和沟通。也就是这个组织,此后创建了全世界最受欢迎的深度学习框架之一——MXNet。MXNet 创建的背后,还有一段小故事:当时 CXXNet 其实已经达到了一定的成熟度,但它的灵活性有局限性,用户只能通过一个配置项来定义模型,而不是交互式的编程。此时,李沐同时还负责另外一个项目 Minerva,这是一个类似 numpy 的交互式编程接口,但这个灵活的接口对稳定性和性能优化带来很多挑战。同时给两个项目做分布式扩展的李沐很自然地想到,也许可以把两个项目合并起来,取长补短。在召集了两个项目的开发人员讨论了几次之后,新项目就此诞生,并被命名为 MXNet,意为 mixed-net,即 Minerva 和 CXXNet 的组合。当时,李沐同时在做 difacto 和 MXNet 两个项目,在同吴恩达的一次见面之后,李沐听从了他的建议,把全部精力放在了 MXNet。这样,在谷歌 Jeff Dean 牵头创建的 TensorFlow 开源压力之下,MXNet 专注于自己的所长,才有了后面的大获成功。

《动手学深度学习》热卖

最后再提一点,《动手学深度学习》这本由李沐,美国伊利诺伊大学香槟分校计算机科学博士 Aston Zhang,李沐在 CMU 的导师 Alex Smola ,以及来自社区的 100 多位贡献者合著的深度学习书籍,推出之后便大受欢迎,曾在 6 月份登上京东 24 小时热销榜 Top 1。目前,这本书的交互式版本已推出了在线预览版,面向在校学生、工程师和研究人员,旨在帮助读者从入门到深入、动手学习深度学习,即使是零基础的读者也完全适用。