专访百度PaddlePaddle开源平台

雷锋网AI研习社按:PaddlePaddle的前身是百度在年自主研发的深度学习平台,在百度内部已经使用多年,支持百度内部各项业务。年8月底百度开源了PaddlePaddle之后,在短时间内迅速成为全球开发热度(GithubPullRequest数量)增速最高的开源深度学习平台。PaddlePaddle项目不仅提供深度学习框架,还提供各种简化调试和支持大规模训练的附加技术。PaddlePaddleVisualDL开发不到半年的时间,在Github上的“star”数就逼近了开发了两年多的GoogleTensorBoard。PaddlePaddle的社区增速和其技术迭代速度密不可分。刚开源的时候,PaddlePaddle的设计思路和四年前开发的Caffe类似。在一年时间里,连续推出了“v2”和“Fluid”两代新技术:其中v2像MxNet和Caffe2一样参考TensorFlow增加了operators的概念;Fluid类似PyTorch,但是不依赖Python的控制流(if-else、for等),而是提供自己的解释器甚至编译器,所以不受限于Python的执行速度问题。在年11月的百度世界大会上,PaddlePaddle发布了三项新功能:PaddlePaddleFluid提供高级语言中的while和if等控制流结构,提升使用者的开发效率,同时利用编译优化技术保证计算性能。PaddlePaddleCloud支持使用者在浏览器里开发AI应用,在云端调试运行,开发者不需要在个人电脑和机群之间切换,提升了工作效率。PaddlePaddleEDL是全球首个支持弹性作业调度的开源AI云解决方案,通过与Kubernetes合作实现弹性作业调度。三大新功能的推出,进一步加强了PaddlePaddle的易用性,提高了效率,并降低了开发者的使用门槛。陆奇曾表示,开源代码写得好,不仅能解决大家的痛点,开源代码也会变得越来越强,开源代码的生命力必然会超过封闭体系的代码。PaddlePaddle开源至今,还会为开发者提供哪些服务?怎样在大量流行开源框架的竞争之下脱颖而出?如何成为陆奇口中所说的“越来越强”的开源平台?带着这些疑问,雷锋网AI研习社采访了百度PaddlePaddle的技术负责人王益,他将分享在开发PaddlePaddle过程中的经验点滴。嘉宾简介:王益,在加入百度之前曾任硅谷AI创业公司ScaledInference创始科学家,LinkedIn高级主任数据科学家,腾讯社交广告技术总监,Google研究员。王益曾在清华大学和香港城市大学学习,并取得了清华大学机器学习和人工智能博士学位。此外,他还是IEEE的高级会员,著有《推荐系统实践》一书。以下是雷锋网AI研习社对王益的采访内容:PaddlePaddle其实已经有很多年的历史了,从年发展至今,PaddlePaddle在设计的过程中经过了哪些重大变化?王益:PaddlePaddle的年版本是百度杰出科学家徐伟老师主持设计和开发的,其设计思路和同时代的Caffe“心有灵犀”:表示一个模型的方式都是“一串layers”。这个设计沿用了三年。年8月底,PaddlePaddle开源之后,我们在徐老师指导下做了两代升级:年4月推出PaddlePaddlev2,年底推出PaddlePaddleFluid。PaddlePaddlev2的推出把PaddlePaddle的技术升级到了年Google推出的TensorFlow的水平——把layers“打碎”成更细粒度的operators,同时支持更复杂的网络拓扑“图”而不只是“串”。PaddlePaddleFluid的设计思路和PyTorch以及TensorFlowEagerExecution很像——已经不再有“模型”的概念,也就不在意“图”(graphofoperators)或者“串”(sequenceoflayers)了,而是只有“程序”的概念。当然,从程序是可以导出一个图的,这也是从一个PyTorch程序可以被导出成ONNX文件格式的模型一样。需要提醒的是,PyTorch和EagerExecution程序中的控制流(比如if-else,for)都是用的Python,而Python执行速度慢且难以提速,这是一个瓶颈。Fluid程序也是一个Python程序,但是执行这个程序会先把自己输出成一个protobufmessage,随后调用Fluid解释器(而不是Python解释器)来解释执行这个protobufmessage,这样比Python解释器的执行速度更快,和TensorFlow执行图的速度一样。甚至更进一步,我们在开发编译执行的方式——写一个transpiler把protobufmessage表示的程序翻译成C++程序,然后可以用nvcc、icc、gcc编译成二进制代码,直接运行在服务器和手机上。从而彻底解决PyTorch和EagerExecution程序的执行速度受限于Python的执行速度的问题。在知乎上,Caffe的作者贾扬清称赞了百度的PaddlePaddle,并说“整体的设计感觉和Caffe心有灵犀”。那么,您认为,跟Caffe以及TensorFlow、PyTorch、MXNet等热门框架相比,PaddlePaddle的优势在哪?王益:知乎上贾扬清的称赞是在PaddlePaddle开源之初。如我上文所述,当时的PaddlePaddle和Caffe确实很像。今天在百度内外推动的都是PaddlePaddleFluid了,是一个比PyTorch和EagerExecution更激进的技术思路。陆奇曾表示,要将PaddlePaddle发展成具有中国特色,最适合中国国情的深度学习平台。请问“适合中国国情”的深度学习平台怎样理解?它和国外的深度学习平台有何区别?王益:从我的理解来看,一方面是基础计算架构要适应中国的现状;另一方面是计算技术上要世界领先,能人所不能。这两方面都有很多可以做的工作,而且百度还是足以自信的。虽然现在很多深度学习应用用一个几台机器的小集群就可以解决,但是Webscaled应用,比如广告和搜索引擎,或者新的应用,比如通过Lidar、Radar、cameras采集海量数据的无人车,都是需要大规模深度学习计算能力的。通过扩展Kubernetes这样的先进的集群管理系统,PaddlePaddleEDL比GoogleKubeFlow优势很明显——EDL不仅可以把PaddlePaddle程序在Kubernetes上跑起来,而且可以弹性调度——不忙的时候一个训练作业多用一些资源,忙的时候少用一些,但是资源变化不会导致作业失败;而KubeFlow只是把TensorFlow程序在Kubernetes上跑起来,不能实现弹性调度。另外,EDL不仅调度深度学习作业,也弹性调度其他作业,比如Nginx、MySQL等,从而极大地提升集群总体利用率——在国家深度学习重点实验室机群上实测效果高达91%,远超一般的高性能计算集群的30%左右的利用率。这样的技术在公有云和私有云上的推广,很容易就能用1/3的机器做同样的工作,为一家单位一年节省的计算成本可以高达百万、甚至数百万美元。深度学习平台和编程语言一样,不是一个独立的程序,而是一个社区——训练要能在国内的云服务上跑;要能部署到国内的企业的私有云上;国内的科技创新企业在制造定制化的加速芯片,PaddlePaddle应该是连接这些基础创新和应用的桥梁;要开放中文数据和中文模型——比如图像识别的label是中文的;语音识别和语音合成等应用也是和中文强相关的。现在Google正加速TensorFlow在国内的推广(开设TensorFlow


转载请注明:http://www.aierlanlan.com/tzrz/7911.html