机器学习中的开源框架

在深度学习领域的五大巨头里,它们都各自力挺一种深度学习框架:

  1. 谷歌有自家的TensorFlow、

  2. Facebook有Pytorch、

  3. 百度有PaddlePaddle、

  4. 微软有CNTK、

  5. 亚马逊的AWS则有MXNet,

  6. 华为有国内全栈的MindSpore,

  7. 一流科技的OneFLow

每种框架都有其优缺点,选择的时候更加需要根据自身业务的实际需求。例如需要用到对时间序列分析的,那么就会使用循环神经网络Transformer、BERT等网络结构,而Pytroch、MindSpore、PaddlePaddle、Tensorflow的处理就非常好,Google的TensorFlow则是支持其他机器学习算法,拥有更加完善的AI体系,还支持强化学习Reinforcement learning算法。常言道,欲先攻必先利器,在正式进入深度学习之前,让我们一起来了解一下各大主流深度学习框架之间的关系与其优缺点。

Tensorflow

TensorFlow框架的前身是Google的DistBelief V2,是谷歌大脑项目的深bai度网络工具库,一些人认为TensorFlow是借鉴Theano重构的。首先目前面临比较麻烦的事情是版本分裂严重,2.0推出之后到2.4之间的版本几乎不可用,接口变更太多,runtime效率比1.X普遍损失50%左右的性能。另外缺少符号循环,当我们说可变长度序列时, 更需要该功能。不幸的是, TensorFlow不提供功能, 但是有限折叠可以解决这个问题。好处是有着庞大的维护团队,看看Google AI blog 每个月好几篇AI创新文章,基本上都是基于Tensorflow开发,另外还提供富有挑战性的数据集挑战赛。还是挺过瘾的。SUM:TensorFlow更适合大规模部署,特别是需要跨平台和嵌入式部署时。

Pytorch

PyTorch是Facebook出品的。本质上是Numpy的替代者,而且支持GPU、带有高级功能,可以用来搭建和训练深度神经网络。如果你熟悉Numpy、Python以及常见的深度学习概念(卷积层、循环层、SGD等),会非常容易上手PyTorch。基本上可以做到Python Native的编程模式。当然缺点是有的,例如在做大规模分布式并行的时候、大模型大击群、端侧部署和安全可信部署的时候,需要定制性修改大量的代码。SUM:PyTorch更有利于研究人员、爱好者、小规模项目等快速搞出原型。

MXNet

MXNet 是亚马逊(Amazon)选择的深度学习库,拥有类似于 Theano 和 TensorFlow 的数据流图,为多 GPU 配置提供了良好的配置,有着类似于 Lasagne 和 Blocks 更高级别的模型构建块。得益于AWS的强大支撑,其在云端非常友好,可直接与S3,HDFS和Azure兼容。不过缺点也很明显,社区还是比较小,另外学习曲线比Pytroch高,目前还做不到Python native。SUM:MXNet注重云侧分布式部署,对于AWS重度爱好者是一个DL利器,方便原型算法设计后进行云侧部署。

OneFlow

OneFlow是一流科技开发的深度学习框架,作为国家4大重点实验室(浙江之江实验室)的首选框架,通过之江的科研实力进行对外辐射,这一点还是很佩服的。其核心代码执行都是以Task列表的形式实现,不同的求解器都是在执行一个task流。另外在分布式多机多卡和单机多卡中,runtime的设计使用了分布式Actor机制使得框架天然支持流水线,所以分布式还是很友好,性能也很高。问题就是社区实在太小,很多资料参考不完善,另外易用性跟Pytorch相比,有待提升。SUM:性能和易用性兼顾确实很难,如果玩分布式GPU集群希望性能高,那么OneFlow可能很适合。

MindSpore

MindSpore是华为推出的深度学习框架,作为华为战略平台性的产品。MindSpore坚持走底层框架优化路线,一切皆编译,所以把动态图和静态图做到动静一致,如果想学编译,看看MindSpore的源码还是很有趣的。优点就是支持昇腾芯片、GPU、CPU等异构平台,在昇腾+MindSpore组合下能做到性能遥遥领先友商竞品,另外GPU+MindSpore组合下在分布式性能跟OneFlow持平。在接口方面优点类似Pytroch,易用性能有保障。缺点在于社区目前还是比较小,文档友好型还真的要提高;另外API接口目前还优点混乱,需要持续升级收敛。SUM:MindSpore兼顾易用性和性能,在分布式集群和华为全栈下有独特的性能优势,易用性在国内框架属于优选,想学习国内AI框架推荐MindSpore。

PaddlePaddle

PaddlePaddle是百度研发的开源开放的深度学习平台,是国内最早开源、也是当前唯一一个功能完备的深度学习平台。依托百度业务场景的长期锤炼,PaddlePaddle有最全面的官方支持的工业级应用模型,涵盖自然语言处理、计算机视觉、推荐引擎等多个领域,并开放多个领先的预训练中文模型,以及多个在国际范围内取得竞赛冠军的算法模型。

PaddlePaddle同时支持稠密参数和稀疏参数场景的超大规模深度学习并行训练,支持千亿规模参数、数百个几点的高效并行训练,也是最早提供如此强大的深度学习并行技术的深度学习框架。PaddlePaddle拥有强大的多端部署能力,支持服务器端、移动端等多种异构硬件设备的高速推理,预测性能有显著优势。目前PaddlePaddle已经实现了API的稳定和向后兼容,具有完善的中英双语使用文档,形成了易学易用、简洁高效的技术特色。

你可能感兴趣的:(机器学习,机器学习,深度学习,tensorflow)