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

  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的稳定和向后兼容,具有完善的中英双语使用文档,形成了易学易用、简洁高效的技术特色。

机器学习中的开源框架相关推荐

  1. 11 个 AI 和机器学习模型的开源框架

    译文链接:http://www.codeceo.com/article/11-frameworks-for-ai-and-ml.html 英文原文:11 Open-Source Frameworks ...

  2. 关于Eclipse中的开源框架EMF(Eclipse Modeling Framework),第三部分

    Eclipse Modeling Framework(EMF)中包含了一个开放源代码的工具 JMerge,这个工具可以使代码生成更加灵活,可定制性更好.本文使用一个例子来展示如何将 JMerge 添加 ...

  3. github怎么隐藏自己的pr记录_在GitHub中向开源框架提交PR的过程

    最近在读RandomX的文档的时候发现一点小错误,现在就记录一下我提交PR的过程. 1.fork 2.需要将远程仓库clone到本地 git clone https://github.com/***/ ...

  4. 自动驾驶方程式赛车,微软发布机器学习开源框架 | AI一周学术

    大数据文摘专栏作品 作者:Christopher Dossman 编译:笪洁琼.conrad.云舟 呜啦啦啦啦啦啦啦大家好,本周的AI Scholar Weekly栏目又和大家见面啦! AI Scho ...

  5. tomcat中request对象是被创建的_常用开源框架中设计模式使用分析(全)

    一.前言 说起来设计模式,大家应该都耳熟能详,设计模式代表了软件设计的最佳实践,是经过不断总结提炼出来的代码设计经验的分类总结,这些模式或者可以简化代码,或者可以是代码逻辑开起来清晰,或者对功能扩展很 ...

  6. 史上最全Android开发中100%会用到的开源框架整理(1/5)

    其实这个开源框架整理很久了,只是一直放在有道云笔记里面,笔者还有很多写得文章都放在有道云笔记里面,有时间都好好整理一下放出来,本篇文章也会不定期更新,由于整理的开源框架分类都有200多个,所有这次只将 ...

  7. 使用自定义的item、Adapter和AsyncTask、第三方开源框架PullToRefresh联合使用实现自定义的下拉列表(从网络加载图片显示在item中的ImageView)...

    AsyncTask使用方法详情:http://www.cnblogs.com/zzw1994/p/4959949.html 下拉开源框架PullToRefresh使用方法和下载详情:http://ww ...

  8. 从GitHub中整理出来的15个最受欢迎的Python开源框架,你喜欢哪个

    从GitHub中整理出的15个最受欢迎的Python开源框架.这些框架包括事件I/O,OLAP,Web开发,高性能网络通信,测试,爬虫等. Django: Python Web应用开发框架 Djang ...

  9. [js高手之路]从零开始打造一个javascript开源框架gdom与插件开发免费视频教程连载中...

    百度网盘下载地址:https://pan.baidu.com/s/1kULNXOF 优酷土豆观看地址:http://v.youku.com/v_show/id_XMzAwNTY2MTE0MA==.ht ...

最新文章

  1. 【aelf开发者社区招募】重构 C#代码--中高级工程师预期小半天到一天
  2. 成功解决 ModuleNotFoundError: No module named ‘PyQt5.sip‘
  3. 【回文数】算法优化笔记
  4. C++中的定位放置new(placement new)
  5. 个人收藏的flex特效网址【经典中的极品】
  6. 基于平面 marker 的 Bundle Adjustmet
  7. 《计算机系统:核心概念及软硬件实现(原书第4版)》——1.4数据库系统
  8. Ubuntu16.04+ROS Kinetic环境下svo编译运行
  9. Hadoop Trash回收站使用指南
  10. java ajax json 乱码_ajax请求返回200,json中文乱码怎么破?
  11. eXeScope 注册机制破解
  12. Oracle集成基础安装包+补丁包
  13. 企业微信本地测试环境搭建
  14. java:换行符“\n”
  15. 数字频率计的功能及工作原理
  16. Sklearn 中的可用数据集
  17. ESD5V5U5ULC TVS DIODE SC74-6 TVS - 二极管
  18. 该内存不能为 read/written解决办法
  19. 虚幻4引擎开发的手游_虚幻引擎 4 手游《绝地求生:刺激战场》 开发经验分享...
  20. 图片转pdf、长图转pdf

热门文章

  1. 三星Q850T全景声回音壁发布,带后环绕5.1.2回音壁
  2. SSH中关于级联删除不能实现的一些问题
  3. matlab角标引用
  4. pythonsqrt取整函数_python取整函数
  5. 不越狱可以安装多个微信吗?教你不越狱安装多个微信技巧
  6. 【STM32+cubemx】0028 HAL库开发:MPU6050官方DMP的移植和使用(续上节)
  7. 【SOLIDWORKS学习笔记】装配体基础操作
  8. 联想t系列服务器,联想更新2019年款ThinkPad X与T系列笔记本电脑产品
  9. HashMap扩容机制(JDK1.8)-- 源码鉴赏与启发
  10. 从Rust到远方:WebAssembly 星系