xiaozhukuaitui 2019-06-19
机器之心原创
作者:太浪
去年 3 月 22 号,华为 HiAI 首席架构师杨鋆源第一次听到 PaddlePaddle 这个名字。当时,他的内心想法是,「业界深度学习框架已经很多了,开发者已经是选择困难,百度还有必要再做一个吗?」
如今,他的想法发生了改变:「做深度学习框架需要大量的投入,无论是做框架的提供者,还是广大的学员或者是开发者,都要花很大的精力去学习。平台必须坚持数年连续投入,百度愿意做这件事是国内开发者的幸事。向所有愿意在基础能力投入的组织和个人致敬,因为他们推动了整个产业的可持续性发展。」
杨鋆源想法的改变,源于一项为期六个月的培训。
今年初,百度联合「深度学习技术及应用国家工程实验室」成立「黄埔学院」,旨在为各行各业培养第一批「首席 AI 架构师」。
第一期学员共 35 人,分别来自不同企业和单位(包括国家卫星气象中心、中油瑞飞、中信银行、神思电子、OPPO、广东电网、广东长隆集团、中国联通软件研究院、华为、米文动力、爱奇艺等),当然杨鋆源是其中之一。
他们在北京进修半年,在半年时间里,他们结合自身行业和企业需求,使用飞桨(PaddlePaddle),将 AI 结合到业务实践中应用落地。
上周日(6 月 16 日)下午,他们在百度科技园熊掌报告厅上完「最后一课」后,28 位通过毕业答辩的学员获得了毕业证书,成为百度认证的业界首批「首席 AI 架构师」。
飞桨(PaddlePaddle)核心框架 v1.5 即将发布
在这半年时光里,陪伴着杨鋆源们一起成长的,还有 PaddlePaddle——中文名为「飞桨」,是由百度自主研发,集深度学习训练和预测框架、模型库、工具组件、服务平台等为一体的开源深度学习平台。
2016 年,在百度世界大会上,百度宣布 PaddlePaddle 开源,国内首个也是目前唯一一个开源开放、功能完备的端到端深度学习平台诞生。
去年,PaddlePaddle 核心框架 Paddle Fluid v1.0 发布了稳定版本;半年来,飞桨(PaddlePaddle)在易用性、性能、模型丰富度等方面取得了大量突破性进展,百度深度学习技术平台部总监、黄埔学院副院长马艳军说。
基于百度多年的产业应用经验,以及百度大脑生态伙伴的人工智能解决方案实践,飞桨(PaddlePaddle)目前已经支持六十多个经过真实业务场景验证的官方模型,涵盖视觉、自然语言处理、推荐等 AI 核心技术领域。
飞桨(PaddlePaddle)全景图
「飞桨(PaddlePaddle)核心框架 Paddle Fluid v1.5 马上就要发布」,马艳军当日透露。
飞桨(PaddlePaddle)总架构师于佃海、主任架构师胡晓光和董大祥分别从飞桨的基本能力、设计,模型的稳定性和易用性,飞桨在大规模分布式应用场景中的应用等方面,对飞桨在这半年里取得的进展做了更详细的介绍。
于佃海说,最近半年,他们在 OP 的完备性上做了很多建设;飞桨(PaddlePaddle)的 API 也逐渐稳定下来;他们还完善了对应的中英文双语文档,优化了底层性能,并增加了对动态图编程的支持。
胡晓光表示,飞桨(PaddlePaddle)模型库中模型的数量已经从早期的不到二十个模型,增长到六十多个,覆盖方方面面,还包含「非常前沿」的模型。
他还表示,飞桨(PaddlePaddle)提供的算法模型全部源于百度的工业实践,历经大规模数据、场景训练,特别是针对中文的语义表示、情感分析等,百度基于特有的数据算法已可提供成熟稳定的模型,大幅提升训练速度和实现效率。比如机器翻译的模型,在训练上比其他框架快 60% 以上,预测速度快近 4 倍。
董大祥透露,他们在大数据训练的过程中做了很多优化,包括数据分布式的 I/O,随机打乱等功能。他们将在飞桨(PaddlePaddle)的开源项目里逐步增强模型的异步能力,以更高性价比扩展节点。「易用性方面,1.5 版本会发布分布式训练的 API。」
「最后一课」:探讨飞桨(PaddlePaddle)在企业中的应用
当日,答辩结束后,百度黄埔学院的导师——百度马艳军、于佃海、胡晓光、董大祥给学员们上了「最后一课」,分享了飞桨(PaddlePaddle)在百度产品落地的经验。
他们还与学员——华为 HiAI 首席架构师杨鋆源、爱奇艺深度学习平台架构师周海维、米文动力 CTO 苏俊就「飞桨(PaddlePaddle)在企业中的应用」展开了圆桌讨论,他们围绕深度学习框架落地过程中的痛点、IoT 趋势给深度学习部署带来的挑战、国产深度学习平台应该如何发展等话题进行了探讨。
以下为圆桌讨论实录,经笔者编辑、删减后,以对话体的形式呈现给读者:
马艳军:首先,请三位学员介绍在使用深度学习框架的过程中,遇到了哪些开发上的痛点?
爱奇艺周海维:我们公司工程师团队人数不是特别多,特别是做平台的人数不是特别多,所以我们很希望能够看到飞桨(PaddlePaddle)有一些端到端的解决方案,特别是设计方面,比如直接提供 RPC 接口或者直接把最终的产品形态能够提供出来,对于我们开发的效率还有上线的时间压力,特别有保证。
华为杨鋆源:飞桨(PaddlePaddle)进步非常大,无论从基础能力还是开发资源上面都取得很可观的进步,同时我们也要看到在飞桨对于开发者的文档体系或者描述还有提升的空间,因为很难通过直截了当的东西看明白问题在哪儿,要从底层代码一层层去看。经过与飞桨的框架的集成的过程,我觉得飞桨(PaddlePaddle)在移动端有很大的发展空间。在整个业界发展来看,隐私以及执行速度方面飞桨都占很大的优势,我们希望在未来的发展里,能够通过芯片和飞桨,在移动端做更多工作。
米文动力苏俊:我们更加注重融合场景。深度学习对于传统算法提高的性能很多,但是一般来说,我们的检测手段有限。深度学习是基于现有的数据集做判断,但是实际情况和我们掌握的情况有比较大的区别,这个时候,深度学习的局限性会体现出来。
一般的人机检测,大家觉得没有什么问题,都比较成熟,但工业场景中不可避免会出现检测和人脸识别失效的问题,如何用基于数据分析的方法论和部署相结合,是一个痛点。
另一方面,深度学习并不适合所有的场景,怎么划定深度学习真正适用的领域的边界,让它可复制化,是现在很多场景里做的不太够的地方。
马艳军:深度学习在很多场景下都有很成功的应用;同时,在真实的业务场景实现部署,并把它的效果调到最优的状态,还是有不小的挑战。一般项目的落地会有一定的周期,接下来请胡晓光和董大祥分别介绍飞桨(PaddlePaddle)在百度产品的经验。
胡晓光:2014 年底,机器翻译领域提出深度学习算法的应用;2015 年 5 月,百度翻译就率先上线了深度学习系统。我们那个时候开发框架,面临一些多机和分布式多卡的问题,攻克了一系列技术问题。
而线上应用的时候又面临新的问题:集成飞桨之后,预测速度能不能满足相应的需求?百度整体流量很大,每天有上亿的请求,我们又花了很多时间做加速。百度翻译需要用大量服务器,我们花了接近小半年的时间针对不同场景做优化,使预测速度快了近 4 倍。
所以,做一个任务,如果用好框架,速度会很快;但真正在大规模的应用场景里落地,还有很多针对性的任务要做,包括针对不同场景做加速。
董大祥:百度有很多大数据的场景,数据的存储、压缩以及和深度学习框架之间的融合是需要很多工作的。我们的业务环境非常复杂,并不是说任何一个框架进去之后都可以很容易地和业务数据串联起来,进行快速的训练,并且是分布式的训练。
如果大家使用深度学习框架,首先,要对自己的业务非常了解,了解业务上整个数据流的来源以及特点,能够快速定义自己的问题,并用最简单的模型快速调试。小规模数据调试没问题,要考虑上规模训练,也就是分布式训练(百度基本上使用的是分布式训练,数百 CPU 节点的任务十分常见)。
业务落地的过程其实周期比较长,一般分两个情况:一个情况是,这个业务以前已经在用某一种深度学习模型的实现,也可能不是使用深度学习的系统。这时,把一个新的深度学习框架做到线上是有挑战的,需要很长时间的调研和打平,比如,怎么和线上策略打通,包括深度学习的训练效果和预测速度以及模型切换的周期,都需要精准打平。
像信息流场景一般需要快速更新模型,除了要求对业务的了解以及数据流能够精准的匹配到系统外,它对深度学习框架的训练速度也有非常高的要求,这也是为什么我们持续建设异步并行能力的原因。
很多实际业务场景,并不是需要花更多的时间把 1% 的准确率提上来,而是要把这个模型运转起来,能够快速跟上数据产出速度,快速迭代新的模型,让系统见到很多新的知识,这是信息流里面比较大的挑战。
大家用上深度学习框架以后,后面拼的主要是迭代周期。使用飞桨(PaddlePaddle)的业务线,想迭代一个新模型,百度的通常情况是,每个人都可以支持一条线,如果数据流很完备,大概几天可以迭代一个版本。
所以,在最开始选框架的时候,要注重长期维护的可能性。有一些框架第一部分使用起来比较容易,但如果后面迭代效率不高,对整个公司的贡献度并不高,这是为什么使用飞桨(PaddlePaddle)反而是比较快的实现方式。
马艳军:完整打通整个流程确实比较复杂,但是第一次流程打通了,后面更新数据、再迭代模型,让效果变得更好,可以变得很快。所以,大家要把第一次上线做扎实。
关于深度学习的部署,是很多同学关注的点。现在,IoT 的趋势越来越明朗,出现了各种各样异构的设备(不只云、端),这对于深度学习的部署是比较大的挑战,并且直接关系到整个应用的效果和整个应用的效率。接下来,我们聊一下这个话题。先请佃海介绍一下现在飞桨(PaddlePaddle)的情况以及计划。
于佃海:整体来说,我们对飞桨(PaddlePaddle)的预测部署能力是非常重视的。首先,我们公司内部业务的实际应用场景很就很多,我们的模型都要上线部署,所以必须把上线部署这个环节做好。第二,我们做端到端完整的深度学习框架,最大程度上便利开发者。
部署是很多开发者真正把这个东西落地的痛点。我们在这块投入很大,做了多个方面的工作:包括服务化的支持,以及对飞桨(PaddlePaddle)移动端的工作,支持手机上的各种部署,已经在百度 APP 上有广泛使用。还有很多场景都有类似的需求,比如自动驾驶。我们思考怎么把速度做的最快,同时兼容多种平台。我们让飞桨能够在不同的硬件平台上方便部署。端上的环境很复杂多样,我们也在不断完善,目标是做到更全的覆盖,并将模型做的更小。我们也提供压缩工具,有量化等多种方式全方位支持,把这个工作做好。
周海维:昨天跟董大祥老师交流的时候,他说百度在推理方面特别看重性能,特别看重计算速度。但这跟原来传统的有点区别,更看重单线程。
如果完全按照这个进行改造,我们要把整个引擎上下游全部改造一遍,不管是工程还是工作量,难度都很大。但效果可能很多倍,所以我们很希望做到这个事情。如果我们公司做的话,可能请董大祥老师把这部分开源出来,我们把这个短板能够补上。
杨鋆源:现在,安卓的体系里有一些算法支撑,但是,想发挥好芯片的极限性能,还是要针对芯片做单独的定制。
我们一直把模型作为数据文件,如果模型部署能够对于开发者提供模型托管能力,相当于根据不同的平台能够把模型自动下载到本地的方式,开发者可以节省很多适配工作,而百度天然具备这样的平台和优势。
苏俊:IoT 有比较明显的趋势,比如在框架层面和应用层面。
框架层面包括华为开源和百度开源,给 IoT 的发展打了一个很好的基础,能够解决我们模型不断迭代、自动部署的问题。随着业务推进,不断获取新的数据,如何有效地根据新的数据再调整模型,只用其进行训练还是有更好的方法?现在其实没有方法论的东西,我们还是基于原来的基础理论在做。
飞桨(PaddlePaddle)训练出来后,如何直接使用在设备上?针对这一点,我们的情况比较好,现在没有什么问题。
「我们今天拥有非常好的时机。国内现在有大量的需求在驱动着我们,我们能够预见,人工智能和产业的深度结合势必发展迅速。」百度 AI 技术平台体系执行总监、深度学习技术及应用国家工程实验室副主任、黄埔学院院长吴甜在毕业典礼致辞中表示,
「黄埔学院希望能切实帮助企业储备既能分析业务问题,又掌握模型算法,还能操刀落地应用,深谙算法与工程的紧密结合的企业创新型人才,如此由内需驱动,让我们拥有更多更好的创新机会。」