降低一切门槛:开发框架三国杀在争什么?
在我们谈论AI开发时,我们就究竟在谈论什么?
更多的开发者:开发者数量显然是一切的前提,数量广阔的开发者就像蒲公英的种子,会把深度学习开发框架以及相关的软硬件服务带到各个企业中去,帮助巨头们的AI布局在四处扎根生长。
更活跃的开发生态:建立在大量开发者数量之上,用案例和经验对开发社区进行填充,鼓励开源和共享,让AI的开发变得更加简单,从而进入更多行业和场景。
更高级别的开发项目:自身框架中诞生一款杀手级应用,可能是每个巨头都会有的理想目标。高价值和高效用的应用AI很可能带来大量簇拥者,一齐涌向该框架的生态之中。
总之,如何降低门槛以一切手段吸引开发者进入,成为了三大开发框架的共同目标。
最典型的例子就是TensorFlow与PyTorch之间的竞争。
在目前的开发框架中,TensorFlow凭借着谷歌的技术优势一直表现的较为强势,在开发者越来越多时,其开发社区生态也在进行良性发展。
但占据了优势后,TensorFlow开始随着谷歌一同收拢自身的开发生态。比如谷歌曾经推出过一系列赋能开发者的培训计划,向开发者提供课程教学。但结果是所有的教学全部都建立在TensorFlow之上,所提供的硬件API也只能接入TensorFlow,而TensorFlow的社区资源和开发工具更新,又部署在谷歌云之上。并且TensorFlow在最近单方面和Caffe等开发平台“友尽”,使得开发者们无法进行平台之间的迁移。
而Facebook就抓住了这一点。将原来的开发工具Torch进行升级,联手微软打造神经网络交换格式帮助开发者降低迁移成本。同时PyTorch设计了更方便的数据加载API接口,使开发过程中加载并行数据更加顺畅,相比TensorFlow降低了不少API方面的学习成本。
在自定义扩展上,PyTorch也改变了TensorFlow依靠样板代码才能实现的情况,通过为CPU/GPU编写接口这种更易行的方式添加自定义拓展,使得开发过程中的自由度大大提高。
综合来看,在开发框架的竞争中,赛点在于更低的学习成本和迁移成本,以及更高的易用性和社区友好度。
在这几个方面,西方战场之外的PaddlePaddle也以灵活、易用著称。
在应用效率上,PaddlePaddle在运行RNN算法时比其他主流框架占用更少的内存,速度却提升了1-2倍。
在训练部分的调用方式上PaddlePaddle集中了浏览器和客户端等多种主流调用方式,并支持CPU、GPU、FPGA等多种硬件,从而极力降低开发成本。同时还支持多种深度学习模型,使得开发者可以更关注模型的高层结构,抛开底层编码,使得 TensorFlow 里需要数行代码才能实现的功能,在 PaddlePaddle 里可能只需要一两行。
除此之外,PaddlePaddle还展示出了很多适用于应用层面的功能。例如在最新的Fluid版本中让开发过程更接近常见的高级语言,减少深度学习中“黑箱”状况的出现,让开发者不再用“玄学”调参,更进一步明晰开发和优化中产生的对应关系,使得开发过程更有可复制性。
还包括PaddlePaddle支持弹性使用计算资源完成深度学习训练,根据需求变化设置资源消耗的弹性区间。对于时常面对着繁多计算任务的大型企业来说,此举可以帮助他们节约大量资源,让深度学习的开发和训练成本进一步降低。
近日有新闻报道,Google发布TensorFlow.js,支持在浏览器上进行机器学习的相关工作,但在降低开发者使用浏览器发展机器学习的门槛方面,PaddlePaddle确实做得更早也相对成熟。同时为了让更多开发者和企业能够将现有项目接入到中PaddlePaddle,PaddlePaddle做到了从基础训练到分布架构彻底开源。这一点即使在以开源精神著称的硅谷都很稀有。