Facebook AI 贾扬清:AI,从大数据问题演进到高性能计算问题
2018-11-06 来源:raincent
Robin.ly 是一个全新的视频内容平台,旨在为广大工程师和研究人员提高对商业,创业,投资,领导力的理解。第二期是Robin.ly线下活动,创始人Alex Ren 采访Caffe作者、Facebook Director of AI Infrastracture 贾扬清博士,并于场下互动问答。 以下为采访实录摘要,原始视频请访问www.robin.ly 完整视频请在文末扫二维码关注
Alex: 最早的时候听说Caffe是你的一个side project,不是你论文的主要内容。当时开发Caffe的初衷是什么?中间经历过什么过程,可以给大家讲一下吗?
Yangqing:主要的原因也是因为AI research,以前researcher写code,像Matlab之类的,很难reproduce。在2011年,2012年的时候大家还没有太强的reproduceable research的这样的想法,所以在AlexNet的paper出来之后呢,大家都没办法有一个比较reliable的平台,来实现它的结果。当时我们在Berkeley希望用Caffe来推动独立研究,所以当时内部开始试图来呈现它的结果,相当是一个于side results。
Alex: 整个的过程你大概做了多久?
Yangqing :两个月吧!
Alex: 那后来到了Facebook之后继续做Caffe你有遇到什么新的问题吗?
Yangqing: Caffe的话因为已经六年多了,所以基本上当时有很多历史遗留问题。最开始做Caffe的时候大家都是照着computer vision的模式来做的,所以很多design等等都是在CV方面比较make sense,在NLP等等其他地方都相对比较难一些。当时整个modular 的design等等还没有太清楚。Facebook在15年的时候其实很多产品里都还在用Caffe的runtime来部署,但是后来整个flexibility都会有些问题,所以这也是我们后来写Caffe2跟PyTorch的原因。
Alex: 前段时间你们宣布了PyTorch1.0的发布,我记得Caffe主要是做production的,而PyTorch主要是research这个阶段,当你把这它们合并在一起的时候,是企图解决什么问题呢?
Yangqing: 这个我们目前也是一个比较explorative的一个方向,包括我觉得整个行业大家都在往这个方向走。比如TensorFlow在TF2.0的announcement里面提到了eager mode,或者说是imperative mode。最大的一个挑战基本上是research和production,这两个 fundamentally是两个不太一样的priority。Research需要flexibility,一切都应该可以调;而Production是要performance的时候,最后总是会需要有一些相对比较flexible的地方。所以很多时候都是一个看具体的实际应用然后来consciously make some compromises。就比如说像computer vision也就是计算机视觉,包括像推荐系统这种实在是太大规模,even1% or 2% accuracy matters,在这种情况下我们会需要牺牲一些flexibility,来更加注重在performance上边。像一些新的应用比如说像自然语言处理,机器翻译等,可能对于resource的要求没有那么高。我们可以sacrifice比如说10%的performance,对于model iteration的要求比较高,所以这个就更加偏向于research这边。
贾扬清谈 PyTorch与Caffe的合并
Alex: 上次我跟你聊,你说到你比较关注硬件方面的发展。我想知道你的角度是什么,是software hardware co-design吗?
Yangqing: 更加偏向于software hardware co-design吧。CPU和GPU它的好处不光是在硬件上,而且是在软件上。最可怕的事情是什么呢,就是说我们知道它很好,但是最后我们大家发现说,没人能在上边写程序。Cause it’s too opaque。NVIDIA非常成功的原因是因为,我可以随便找一个人,我可以花半天的时间,他就可以开始写CUDAcode,只要他懂C++,我就能让他写CUDA code。NVIDIA,从04年CUDA出来以后到今天,NVIDIA把它整个software layer做的如此之好,使得它的入门门槛很低。如果我突然来一个FPGA,没有一个月的时间,没人能在上边写程序,所以说新的硬件最大的一个挑战不光是在硬件上而且是在软件上。这也是为什么我对软硬件协同设计很感兴趣。
Alex: 也就是说它搭建了一个eco-system,给developer们有更方便的方法去用,对吧?(对!)然后,我想问一个其他方面的问题。Facebook也是少有的做比较顶尖的AI research的一个公司,你在里边带领AI infrastructure这块的一些研究。我知道Facebook,Google这样的公司呢,你发现它有个特点,就是它有很多大牛都在一起工作,对吧?(嗯。)而很多别的公司经常有这种一山不能容二虎这种现象。我不知道你在这方面有什么体会,在这种环境里,我想有些人可能也在创业,或者在自己公司里lead research,你对他们有什么心得可以分享?是什么样的文化使得Facebook在research这方面有个cutting-edge research的结果?
Yangqing: 我觉得更多的算是计算机领域的文化吧,比如说大家最近经常能够听到的消息比如像金融这个领域目前逐渐的越来越难吸引到顶尖的人才。一定的原因就是因为,整个领域太封闭了,谁都不知道其他人在做什么。那么这个时候就有很简单的一个事,就是我们有句老话说的,叫独木难支嘛,如果一个领域大家都在钻着自己做自己的事情的话,有很多collective wisdom就很难被激发出来。而计算机这个领域的话,大家很多的想法,第一是说开源,第二是open research,第三是非常频繁的交流。有很多的平台本身就是,像我们用的Reddit啊,Hacker news都是一个很好的平台,包括Robin.ly等等,所以我觉得整个这样的一个文化使大家可以更快的把这个蛋糕做大,等到蛋糕做大了之后,谁都能从中获益。
Alex: 谢谢你提到了我们!你提到了Reddit,我看到了你Reddit上有篇评论,里边提了一个词叫unframework,因为当时是Caffe 2.0的时候你提的,能给我们解释一下是什么意思吗?
Yangqing:Unframework的idea基本上就是说以前大家在做AI的software的时候就是说,一个framework就什么都有嘛,对吧。当时比如说六年前大家说Caffe,Torch跟Theano,反正就是一个framework,你在里头或者外头想做什么也很难,就是说它是一整个kind of crisp。现在的话比如说,像我们有不同的硬件出来,有TPU,比如说我们有visualization等等,逐渐的就有点类似于一个unit operation system,就是说我做完一个operation system的时候不是说所有的差都完了我可以在上面装app,我可以在上面装extension了。所以就是说发展到今天,framework是一个很小的一部分,外面有很多其他各种譬如说硬件啊,visualization啊等等。举个例子比如说PyTorch目前我们在跟Google合作来一起做一个Tensorboard这样的,做一个a very nicevisualization tool for AI,就是不光限制在一个framework,而是说build different components,get components clip,用各种各样的方式plug起来。
Alex: 明白。那我问一下我最后一个问题吧,就是你当初也是典型的engineering research出来的,现在去lead的组织,有很多工程师。你在softskills这块,你觉得在这个过程中你有些什么收获,给大家有什么建议?
Yangqing: 这方面的话,可能一个人做事情和一群人做事情还是有一些区别的。第一个是我们所谓叫innovator’s dilemma:一开始大家会觉得这个team做的太慢了,这事儿我一个人能够两个小时就能搞定的。为什么这个team一天还没搞定。大家有时候怎么样来properly set expectation,因为自己一个人的bandwidth是有限的嘛,怎么样来帮助整个team能够合作把这个事情往前推。可能在单个的事情上efficiency不好但是在整个大的全组project上能够更加accelerate一些;第二个是怎么样grow people,就是create space for people to make mistakes,怎么样能让大家来逐渐take ownership。第三个是管理层面提到的give away Legos,就是说focus在别人需要你的地方而不是自己做的最好的地方。我觉得在做technical management或者technical leadership的这块儿其实还是挺有意思的。
Alex: 接下来欢迎场下同学提问。
Alex 介绍Robin.ly平台
Q1: 贾博士你好,我来自OPPO美国研究所。有个问题想请教你,前段时间有一个语言叫Julia横空出世,号称集百家之长,所以我想问问你对这个语言有什么看法,有没有打算基于Julia这个语言建立一个framework。
Yangqing: 我们其实尝试过很多各种各样的语言,所以说我不太好评论。Julia的好处是它对于low level language migration非常好,比如大家如果用Python的话,可能你在Python里写for loop, performance非常差。Julia对这个low level language binding的performance一直都是挺不错的。我们考虑过很多的language,包括我们自己Facebook以前有Torch,Torch是基于Lua的,我们最后发现了一点就是说,it’s not about the language itself,it’s about the eco-system。Python平心而论很多人都说Python是一个很烂的语言,但是它有社区,它的整个的eco-system非常好,如果我要装Python,我有Anaconda;如果我要用Python visualization,我有Matplotlib;如果我要有numerical computation我有NumPy和SciPy,如果我要做图像处理,我有Scikit-image。 所以说最后我们发现这个eco-system很重要,当年Luatorch遇到的很大的一个瓶颈是没有人知道怎么写Lua。大家都很懒,我也很懒,我不想为了学一个新语言而学一个新语言,whatever works for me。所以说这个时候Python作为一个很不错的compromise,似乎是目前整个industry大家比较common的选择。
Q2:你好,我有一个问题: PyTorch是一个用户很多的一个系统,还有一些用户比较多的系统就是TensorFlow,背后都有一个很大的community,有很大的公司在支持,但是其实你刚才也提到了就是TensorFlow也出了这个eager mode大家需求也都一样,都有这个research developability或者interactivity这方面的需求,deployment都有scalability或者performance这方面的需求。那最后有没有这两个系统或者说市面上所有系统合并到一起的可能,从business的角度来说什么样的条件会造成这种合并。
Yangqing: 我问你这样一个小问题。我们在用Uber,Gmail,或者calendar的时候,我们会担心是在Android上面,还是iOS上面吗?就是说essentially,到最后 product这边, as long as we have a platform for us to run models , it's probably gonna be not different. 对于uber来说,它可能并不担心Ios或者Android,假如说他们能合并,那这是一个最省事儿的事儿,那将来他们就不用写app写两套了。但是it's not a deal breaker。 然后从framework的角度来说,我觉得一方面大家开玩笑说 There's a war on frameworks, 对吧!从当年相对比较academic的Caffe 跟Torch 跟Theano 这三家,到现在Google的TensorFlow,Amazon的MXNet,Facebook的PyTorch,Microsoft的CNTK等等。到最后大家发现这帮framework writter其实就是大家天天在那聊天说,我们design应该怎么走啊等等。到最后大家的idea都会逐渐converge起来。所以我个人不会太担心最后 which framework wins on framework, or which framework migrates which framework. 最后的idea都差不多。
Q3: 我想问一个比较抽象的问题,看我能不能解释清楚了,现在这些framework,这些工具非常的成熟了,非常完善,这必然是件好事。但从另一个角度来讲他对computer vision researcher和graduate student的impact是非常不同的。比如说五年前/八年前你可以design自己的feature,做一个minimization variation whatever graphical model你可以发paper,这个玩法和现在必然不同,现在你要train model,你要自己想办法做一些新的architecture或者其它一些比较有窍门的东西才能发paper。那比如说十年之后你再去Berkeley读一个computervision PhD从头开始的话,这个玩法是什么呀。就比如说AutoML这种东西都出来了,很多东西可能就被取代了,就不需要了,那怎么玩?
Yangqing:大家还有另外的一个相关的comment就是说目前这个整个做deeplearning training需要的资源越来越多,学校到底怎么办对吧,谁也没有一万个GPU来train Auto ML model,那这个大家这个Auto MLresearch是怎么做的呢?我觉得可能第一个比较passive aggressive的answer是come to industry labs,and you can just get resources,但这是一个玩笑话,另外一方面是我觉得就是比如说像12年的时候大家都觉得Google的infinite resource,大家deep learning怎么做最后Alex做的方法就是2个GPU,我当时在Google实习,对我们来说还挺surprising的,就是说其实computation resource isn’t the wining factor。其实学术界的一个好处是,I naturally create一个constrain是说,you have to be efficient。我现在个人是在工业界,工业界有的时候大家被这些resource给宠坏了,就是说学术界其实一直都还是source of the new information and new ideas。很多时候可能模型并不一定需要太大,但硬怼performance或者硬怼containerresource大家在grad student这个地方就别做了,对吧。然后,挺有意思的,能够做的方向就是howwe actually basically just like look at the current models and then do newideas,Berkeley去年做了很有意思的一个paper叫CycleGAN,怎么样在generative advisorynetwork上面做一些新的工作。这些方面可能不需要太多的resource,包括是一两个CPU就差不多够了。所以可能就说回去再读PhD的话可能做法还是差不多的,就是看看最近新的idea在什么方向,然后更多的是iterate on ideas, not iterate on systems。
活动现场,贾扬清在左,Alex在右
Q4: 我有一个follow up的一个问题就是刚才你说很多algorithm需要特别大的一个计算资源,从硬件的发展上看你有看到一个趋势是说,硬件快速增长,越来越便宜,能力越来越强,能够让更多的人能够训练AlphaGo这种algorithm,你能看到这种趋势吗?
Yangqing: 硬件这方面again,I’m not an expert。David Patterson在最近他的talk里边提到Moore’s law is ending,is it a badthing,or is it a good thing?I actually say this is the golden age for hardware because a lot of things arebeing collaboratively redesigning, and iterating. And domain specific architecture is becoming the next new exciting idea. 所以我觉得更多是硬件这边会朝向更紧密地跟软件结合的这个方向。Imagine就是现在我们在写软件的时候,我们现在调我们的软件就不用we don’t give a damn about what kind of software we wrote yesterday,we can just change it。硬件这边的话还是大家又一点自己的constrain,硬件这边大家还是有一些follow一个一年或者两年的cycle。Imagine如果我们有一些新的方法能够,像我们做 throw away software 这样来做throw away hardware,假如我们每六个月就可以iterate一个硬件的version,这个时候对于整个硬件的industry会是一个挺新的一个paradigm,我自己不知道具体怎么做但是我觉得这方面从软件的角度来说我们希望有更多的硬件来支持计算,从硬件角度来说就是我觉得最近有好多的机会。
Q5: 首先谢谢贾博士speech 非常好,我有两个问题是关于OpenCL和 CUDA的问题。第二个问题是,OpenCL 和CUDA是不是算你们framework里的一部分。第二个问题是,你们用没用OpenCL,因为Intel或者amd他们是用OpenCL或者CUDA做他们的product,你们怎么看这两个产品之间的功能?
Yangqing: CUDA我们一般不会把他们看成我们framework的一部分, 我们更多的是把它会看成C或者C++这样的一个programming language。 用CUDA的主要原因是。NVidia对于CUDA的support非常好。我们以前在四五年前上,Caffe 上或者Torch上我们都有试过从OpenCL import,但其实很有意思的一个事儿是,目前好像没有太多vendor在热心推OpenCL这个方向,然后自从走了Metal的路后,对OpenCL 都不是太热心。Google这边在Android上面的话,更加会偏向于RenderScript 和 Vulkan。我目前也不是太清楚OpenCL 的eco-system有多大,目前的话就是说从framework 完整的角度来说, 我们没有太强的热心去做OpenCL 方向的工作,AMD最近的话,也差不多有一点moving away from OpenCL,and do HIP(Heterogeneous-compute Interface for Portability). 所以HIP这边可能是一个挺有意思的方向。对于in general怎么样来做一个parallel computation的abstraction,这方面是一个挺大的问题,也是一个挺有意思的方向,但是目前我们没有找到太好的方向。我们最近有一个开源的project叫Glow,试图来解决对accelerator,对special accelerator这方面,怎么样来帮助硬件的vendordesign nicer,design a completion stack,但是我们也没有考虑怎样unifyOpenCL,OpenGL,HIP,Vulkan,Metal,等等其他一些programming languages。
Q6: 我有一个关于硬件平台的问题,你提到软硬件一定要结合,才能发展。那你现在觉得从production eco-system 上看,有哪些地方软硬件结合做的还不是很好?
Yangqing: In general的话,目前的话是说,在production应用上,软硬件结合的只有CPU, GPU。所以说这个问题还是,除了google上可能有更多的insight之外,大家都还在探索的一个阶段。CPU 跟 GPU 差不多都已经足够well known了。最大的挑战可能就是说,怎么样来manage heterogeneous computation,因为在做prediction service的时候,传统CPU这边的话,整个架构都很homogeneous。我可以在productionlogic thread上来做computation也没什么问题。然后一旦走向GPU,或者accelerator之后,就会需要有更加desegregatedservice。比如prediction/computation stack是一个pool,然后production logic会是另一个pool。那么在这样的一个setting上面,怎么样把中间整个connection结合起来,是不是network bandwidth会变成一个新的bottleneck。整个latency或者怎么样来manage computationpool 然后capacity怎么样最后balancing。 这些传统的问题都会重新emerge起来。这方面还是需要一些early analysis。
Q7: 因为你特别focus在AI infrastructure的部分,刚刚讨论很多问题,不管是hardwarespecialization,或者contrast between compilation andinterprerator,事实上,不管是research/industry,事实上已经repeat很多次。所以我想请教你,以AI application,它present unique opportunity and change,for the system of hardware and software. How do you see the main difference?
Yangqing: 我觉得其实您说的特别对。有很多提到的问题是很传统的software engineer这方面的问题。AI 这方面的问题,其实是大家逐渐意识到这件事 it's not a big data problem but an HPC(High-performance computing) problem,以前大家基本是说,从十几年前开始,HPC,或者segmentationbig data,internet开始分道扬镳的感觉,一方面internetcompany,一方面所有的national lab。HPC这边的情况,就会focus在 computation efficiency, high connectivity。AI从现在来看的话,AI 非常强力的需要HPC这方面的 background,我们经常开玩笑说,MPA is fight。所以这方面有一些interesting opportunities。Essentially,HPC 跟big Data 在solve kind of different problems,AI 基本上就是we need to solve this and that.
Q: 这也许就是为什么NVidia可以很快的把CUDA拿来support AI的部分. CUDA是非常,如果我们看CUDA的话,像现在一些,像NCCL这样的communicationlibrary的话,有非常强的HPC的烙印在里头 ,it's kinda like MPI replica.
Q8: 你们Facebook在做HPC方面的硬件,既然提到了HPC。我是做compiler的,我做runtime。看现在的模型就觉得,这不是我十几年前做的HPC?我是spec出身的,全是computation,都是loop,做了很多loop的优化。因为这种东西,特别适合做那种非常傻的,只会计算,有大量cache的architecture,非常好, GPU就是perfect match。我在想说这个不难,说老实话。NVidia能这么快几年发展起来,通用CPU比这个复杂多了。我们那个branch prediction 那个面积太复杂了,但是Intel那个branch prediction,ARM他们未必能做那么好。它这么多年想在CPU这个application上赶上Intel前几年做的那个,这还差了好多年了。但是GPU就很快catch up了。我就想,人人都能做。那 Facebook在做什么呢?当然你可以不用讲,说 买GPU就好了
Yangqing: Facebook更多的还是一个软件公司,我们在做一些软件设计方面的design等等,我们也在和很多硬件的vendor partner在合作。包括比如说Glow 是怎么样来帮助build 一个 softwarestack,okular compiler stack。包括像我们做的Onnx,希望能够向硬件的partner 提供更多的insight, whatkind of models do we care about today. 然后从CPU优化上的话,我们其实有一个挺强的organization的团队,在做类似MKL,或者MKL-DNN这样的优化。所以 Why don't you talk to us?
Alex: 由于时间原因,我们今天的问答就到底为止,很荣幸今天能请到贾博士来和我们分享他在Facebook的工作,对AI的看法,对未来行业的想法。谢谢贾博士今天的分享!
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。