刚满 35 周岁的贾扬清是出生于浙江绍兴上虞的青年科学家,是业内主流 AI 框架 Caffe 的创始人、TensorFlow 的作者之一、PyTorch 1.0 的共同创始人,是全球最受关注的 AI 科学家之一。他曾任谷歌大脑研究科学家、Facebook AI 架构总监,于 2019 年 3 月正式加入阿里巴巴。在阿里巴巴,贾扬清的新 Title 是阿里巴巴集团副总裁、阿里云智能计算平台事业部总裁,不过内部更为流行的叫法是“阿里计算平台掌门人”。在 7 月 24 日于上海世博中心召开的阿里云峰会·上海 开发者大会现场,InfoQ 记者非常荣幸得到了对贾扬清进行一对一专访的机会,这也是贾扬清加入阿里之后首次接受国内媒体专访。
真正跟贾扬清近距离接触后笔者发现,这位被很多人称为“AI 架构大神”的 80 后青年科学家,更像一位温柔且平易近人的邻家“学霸”,虽然技能全面碾压但丝毫没有架子。加入阿里以来,贾扬清一直忙于了解集团覆盖范围极广的各项产品和业务,近两个月才开始在一些重要活动上以新身份亮相。他在访谈中直言,阿里非常大、方向非常多,短短几个月还未能全部了解完。虽然离职时多家媒体均报道贾扬清的 base 地是阿里硅谷研究院,但由于团队基本都在国内,贾扬清加入阿里后在杭州待的时间更多。新的身份给他带来了很多挑战,忙到没时间理发、一个月倒三次时差、参加活动大半天没吃上饭。但身为阿里集团副总裁的同时,贾扬清依然是典型的技术人,在聊到他最熟悉的 AI 技术和平台时会因为兴奋而语速加快。
在这次访谈中,贾扬清向我们透露了他加入阿里的原因,并对他目前在阿里主要负责的工作做了详细说明,他不仅回顾了过去 6 年 AI 框架领域发生的变化,也分享了自己对于 AI 领域现状的观察和对未来发展的思考。结合自己的经验,贾扬清也给出了一些针对 AI 方向选择和个人职业发展的建议,对于 AI 从业者来说有不少可借鉴之处。
从 Facebook 到阿里巴巴
被内部称为“阿里计算平台掌门人”的贾扬清目前直接领导阿里云智能计算平台事业部,而计算平台事业部同时负责大数据和人工智能两大平台,其中大数据方面包括 Flink、Spark 以及从阿里自己做起来的 MaxCompute 大数据平台,人工智能平台则包括底层资源管理、中间层 AI 框架开发等一系列工作。
相比原来在 Facebook 所负责的 AI 框架和 AI 平台相关工作,贾扬清现在在阿里所负责的工作范围更加宽泛。用贾扬清自己的话说,原来在 Facebook 他更多是大数据的用户,只是在 AI 训练的时候需要大数据平台提供支持;而在阿里计算平台事业部,他需要同时支持人工智能和大数据这两块。在贾扬清看来,阿里云智能计算平台事业部是全球少数的几个把大数据和人工智能放在一起的部门,但他认为大数据和人工智能本身就是紧密结合的,因此这两块放在一个事业部做非常有道理。
过去几年深度学习得以快速发展,很大程度上要归功于数据,而今天的人工智能在一定程度上其实可以说是“数据智能”,即 AI 需要大量的数据才能够提炼出来我们所谓的模型。于是,大规模人工智能可以归纳为两种计算模式,第一个是“智能计算”,就像 AI 工程师熟知的训练、模型迭代等,另外一个是“数据计算”,就是怎么样把大量的数据灌到人工智能训练和推理的链路里面。“数据计算”是大数据一直以来擅长的事情,把这两个计算结合到一块的时候,大量的数据处理跟高性能的数据链路,再加上现在人工智能的算法、高性能计算等一系列技术,才能把整个的解决方案给做出来。从这个角度来说,贾扬清认为人工智能跟大数据是天生结合在一起的。
除了技术范围不同,从 Facebook 到阿里巴巴也给贾扬清带来了另一个新挑战,那就是岗位角色的变化。早期还是研究员的时候,贾扬清只需要关注技术,后来升任 Facebook AI 架构总监后他转型技术管理,到现在成为计算平台事业部总裁,贾扬清需要管理技术、产品和业务,后两者对于他来说是更大的挑战,但也是很有意思的挑战。贾扬清告诉 InfoQ 记者:“就像开源要商业化落地一样,技术最后也需要经过产品和商业的锤炼,这是一定程度上我来阿里的原因。另外,云原声接下来是整个 IT 产业大势所趋的方向,在云上,技术肯定会有新一轮的进化,这个时候对于我来说是接受新挑战的一个非常好的时机。”
底层操作系统,阿里有飞天操作系统底座,同时也应用过很多像 Linux 这样本身就开源的系统,前段时间阿里就刚刚发布了自己的 Alibaba Cloud Linux 2 OS,接下来阿里会考虑如何将自己在这方面的能力以最优的方式贡献给社区。另外一块是再往上层的云原生,这一层可以广义地叫做操作系统,在一定程度上跟应用比较相关,比如 AI 平台、大数据平台,在上云的情况下可以认为他们也是大规模云原生的操作系统底座。接下来阿里在 K8s 等云原生系统上也会深入跟一些开源组织合作,加强 Flink、Spark 等开源大数据产品的输出。
AI 框架应该关注重复造轮子之外的挑战
在早前阿里一次内部演讲中,贾扬清表达了这样一个观点,他认为“AI 框架的同质化说明技术的挑战在其他更广泛的方向”。对于做出如此判断的理由,贾扬清向 InfoQ 记者做了更详细的说明。
贾扬清将当前 AI 框架的用途归结为最重要的两点,一是支持在框架之上简单灵活地建模,也可以叫做开发的灵活性;另一点是实现更高效的计算,因为一旦把 AI 算法应用到工程上,基础架构的效率会变得非常重要,比如推荐系统可能要跑在几万台甚至几十万台机器上,性能优化就必须做好。当前大多数框架都在朝这两个方向努力,包括 TensorFlow 2.0 加入了 Eager Mode 和 PyTorch 1.0 将旧版本的 PyTorch 和 Caffe 合并,都是在逐渐解决前面提到的这两个问题,补齐自己的短板。其实目前已有的框架都在互相学习和借鉴,大家要解决的问题已经开始逐渐变得清晰和明朗化,大家的设计也在朝着同一个方向走。“这个时候,从一定程度上来说,重新造一个轮子到底有多大的意义呢?这是 AI 工程师需要深入考虑的问题。”
更深地说,几年前,大家说到 AI 的时候有点将 AI 等同于 AI 框架这样的情况,但到了今天,整个 AI 工程的解决方案做出来,其实框架是里面很薄的一部分。贾扬清认为 AI 框架就好像计算机编程语言,比如 C++ 是一个比较好用的语言,但光有它是不够的,框架真正能体现价值的原因,在于它有非常好的生态,而且有非常多的科学计算和外部服务等。所以从框架开始,往上跟往下都有非常多新的战场或者说更多的领域需要我们关注。
往下可能包括系统上的创新,比如怎么做高性能计算、怎么做软硬件协同设计等;往上做的话,框架本身可能没有做太多大规模训练、模型迭代等工作的完整工具链。因此阿里现在关注的第一个是拥抱框架,第二是把 AI 整个链路做出来,比如前段时间阿里开源了一个 MNN 引擎,它可以让我们更好地在手机端、嵌入式端运行模型。另外,阿里还有一个开源项目叫 XDL,XDL 的一个想法是怎么构建大规模稀疏化的推荐系统,稀疏化建模是很多通用框架上非常缺的一层:在基本的框架上面,需要有一个高层的抽象,或者是更加跟业务相关的工具平台来解决这个问题。为什么大规模稀疏的系统有用呢?因为所有的推荐系统都是跟它有关系的,比如说阿里巴巴怎么样来做推荐,用户在不同的新闻网站上面感兴趣的新闻是什么,都涉及到稀疏数据,所以这一块光有通用计算框架解决不了,AI 端到端的工程需要在整个栈上发力。
软硬件协同设计
在贾扬清看来,AI 编译器是接下来比较有趣并且非常重要的一个研究方向。首先,深度学习框架之前往往需要手写各种算子的实现,如果有一个新硬件版本出来,这些函数往往需要重新优化;其次,做优化的时候,这些手写函数到底是不是最优的,即使是专家,是否能穷尽所有可能的办法找到性能最优解,都是不一定的。而像 XLA、TVM 这样的 AI 编译器就是在解决这些问题。
AI 编译器属于软硬件协同设计的范畴,旨在最大化芯片能力。当前新的芯片产品层出不穷,我们原来这种来一个硬件在上面手写设计软件的模式已经开始逐渐的跟不上了。现在的应用越来越复杂,结构也越来越复杂,我们也不知道手写的设计是不是最优的,这个时候就开始要考虑怎么做 AI Guided Compilation 或 Performance Guided Compilation,把硬件的能力跟软件的灵活性更好地结合在一起。以 TVM 这个项目为例,它可以在运行时的时候,通过计算模式跟硬件特征来设计或者生成最优的运行代码。这些都是软硬件协同设计正在探索的方向,已经变成比框架更有意义的方向,无论从科研还是应用上来说都是如此。
但软硬件协同设计要做好难度很大,需要对体系结构有丰富经验的人才行,这样的工程师很少而且培养也非常困难。如果我们能够将体系结构建模成一个可优化的问题,那么机器学习就可以派上用场了。
AI 与计算机系统架构
Jeff Dean 等人从 2018 年 3 月开始发起 SysML 会议,聚焦于机器学习 / 深度学习相关的硬件基础设施和计算机系统。那么 AI 到底能够给计算机系统架构带来哪些新的机会?贾扬清认为可以从两个方面来看。
Jeff Dean 在提到 SysML 的时候,其实提过这样一个概念,就是 Machine Learning for Systems and Systems for Machine Learning。今天我们做的更多的是 System for MachineLearning,指的是当机器学习有这样一个需求的时候,我们怎么去构建一个系统来满足它的需求。另一方面,在计算机系统构建的过程中,我们还可以考虑怎么通过机器学习的方法跟数据驱动的方法来优化和设计系统,解决原来系统设计对人的经验的依赖问题,这是 MachineLearning for System 可以解决的事情,不过目前这方面还处于相对比较早期的探索阶段,也是人工智能接下来还需要突破的瓶颈之一。
AI 商业化落地
工业界落地是贾扬清现阶段重点关注的另一个方向。与初入 AI 领域的时候相比,贾扬清认为现在 AI 领域最大的一个变化就是工业界对于 AI 的应用需求和算法输入变得越来越多了。最早在 2000 年初的时候,业内大家会有一个感觉:机器学习在 80% 的时候能够以 80% 的准确率解决 80% 的问题。这其实意味着它没有跨过可以实际商用的门槛。但到了现在,深度学习在不同领域取得了相当亮眼的成果,很多算法的准确度提升到了可以落地应用的阈值之上,如此一来工业界开始大量地使用算法,反过来又推动算法进一步发展,越来越多工业界的场景需求被反馈到科研上,同时也使 AI 研发人群数量有了一个非常大的增长。
但与此同时,人工智能在实际落地的时候依然存在行业壁垒。如何把人工智能的通用性做好,使 AI+ 行业能够真正地推动下去,这在贾扬清看来是人工智能领域目前面临的另外一个瓶颈。
从科研的角度来说,人工智能领域也存在不少待解决的问题,比如智能的本质到底是什么,我们现在更多在做的还是预测问题,那么怎么做因果关系和因果推理,怎么做可解释的人工智能,等等。
作为 AI 科学家中的佼佼者,贾扬清在短短几年里完成了从工程师、研究人员到技术管理者的蜕变,在职业发展生涯的不同阶段,大神也会面临不同的挑战。在采访的最后一小段时间,贾扬清跟我们分享了他从自己的职业发展生涯总结的几点小经验,希望对大家有所帮助。
持续学习,多和同行交流
AI 技术发展日新月异,对于开发者、工程师来说,最头疼的可能是每天都会不断涌现出新的技术、新的框架、新的算法模型等,一不留神可能自己掌握的知识就过时了,而且这也使研究方向的选择变得越来越困难(有多难、能否出新的成果、有没有别人做过了等都要考虑)。
贾扬清强调,AI 领域的工程师一定要主动吸收学习新的信息和技术成果,持续进行知识迭代。像 HackerNews、Reddit 的 Machine Learning 板块等都是很好的信息渠道。现在也有很多媒体在推动 AI 领域前沿一些新想法、新成果和新的科研方向的传播,这也是一件很好的事情。
至于研究方向的选择,贾扬清认为两条原则就够了,一个是兴趣,另一个是多和同行交流。
让自己成为技术多面手
正如前面提到观点,在贾扬清看来,现在 AI 框架已经不再是 AI 工程师的桎梏了,AI 工程师的岗位职责也会相应的发生一些变化,未来大家需要把自己的关注点更多地放在跟实际应用场景相结合上。接下来最大的机遇是怎么把 AI 真正落地,对于工程师来说,他就需要从单纯只做 AI 转变成具备全栈能力,包括怎么对接 IoT 设备、怎么把 AI 能力做到汽车上去等。工程师除了要加强自己的 AI 能力以外,也要把自己的技术能力培养得更加多面手一些。
贾扬清坦言,在一定程度上,其实“AI 工程师”这个称谓有点被滥用了,更多还是因为 AI 比较热而催生出来的角色。
“其实今天没有只是做 Java 的 Java 工程师,因为 Java 只是一个工具,AI 其实也只是一个工具,更重要的还是你拿它来做什么。就像每个工程师都得会编程,或者说每个工程师都得会基本的一些工程能力,AI 也是一项基本的工程能力。”对于普通开发者,不管是哪个领域的的开者,未来都可以学一学 AI 的应用,不一定需要学到知道怎么构建 AI 框架这个程度,只需要学会怎么把 AI 当成 Excel、Java 这样的工具来用,这是增强自己能力的一个比较有意思的方向。对于专门做 AI 的工程师或者科研人员来说,更多的还是需要在自己的领域深挖。从一线开发到管理:学会后退,成就他人