百度Paddle会和Python一样,成为最流行的深度学习引擎吗?

时间:2021-10-01 19:25:56

PaddlePaddle会和Python一样流行吗?

  深度学习引擎最近经历了开源热。2013年Caffe开源,很快成为了深度学习在图像处理中的主要框架,但那时候的开源框架还不多。随着越来越多的开发者开始关注人工智能,AI 巨头们纷纷选择了开源的道路:2015年9月Facebook开源了用于在Torch上更快速地训练神经网络的模块,11月Google开源 TensorFlow,2016年1月微软开源CNTK。最近,百度也宣布开源深度学习引擎 PaddlePaddle。

  在这场深度学习的框架之争中,究竟哪家能够胜出?PaddlePaddle的负责人徐伟认为,没有一家公司能够完全主导这个领域,要单一公司的深度学习框架完全主导该领域,就等同于用同一种程序语言开发所有的软件,未来深度学习的生态系统会因使用场景有最佳的框架使用。

  话虽如此,对于程序员来说,如果选择了更为流行的编程语言,就会有更多可使用的库,也能更轻松的做出好的产品。而紧跟程序语言的发展历史,我们发现最终最为流行的,总是最容易上手的。

  Python是非常好的例子,在编程语言排行榜上,2014年Python只有第六名。但随着大量年轻程序员的涌入,他们更愿意选择简单、易学、文档好的Python作为优先的学习对象,很快C、C++程序员很多也开始使用Python编程了。

  而今天发生在深度学习框架上的竞争,似乎也在重演编程语言的历史。

  去年TensorFlow发布的时候,对于它的质疑声不绝于耳。首先是对单机版TensorFlow的质疑,认为它在和Caffe、Torch和 Theano相比并没有优势。而在Google开源了分布式版本后,人们说它比Caffe慢,比Torch臃肿,而且不能进行太大调整。但如今在HackerNews上关于最受欢迎深度学习工具的投票,TensorFlow获得第一,得票率是第二名的接近2.6倍。

  程序员Vonnik解释了这个现象:使用TensorFlow的大部分都是来自Udacity课程的学生,他们大部分都没什么经验。但正是这些学生和初学者,而非那些经验丰富的资深人士,把Python变成了全球最流行的语言,也把TensorFlow推到了排名第一的位置。

  从Python和TensorFlow的历史来看,我们有理由认为,最为简单、易用的深度学习框架,将会在未来的竞争胜出。

  百度 PaddlePaddle

  在和几款最常用的深度学习框架TensorFlow、Torch、Caffe比较之前,我们先重点介绍新出现的PaddlePaddle。

  Paddle其实已经有多年历史了。早在 2013 年,百度就察觉到传统的基于单GPU的训练平台,已经无法满足深度神经网络在搜索、广告、文本、语音、图像等领域的训练需求,于是在徐伟的带领下开始搭建Paddle——一个多机并行的CPU/GPU混布的异构计算平台。Paddle从最早的开发到如今的开源,就一直以大规模数据处理和工业化的要求不断改进。我们可以看到PaddlePaddle有很多优异的特性。

  Github上介绍,PaddlePaddle有以下特点:

  · 灵活

  PaddlePaddle支持大量的神经网络架构和优化算法,支持任意复杂RNNs结构,高效处理batch,无需数据填充。简单书写配置文件即可实现复杂模型,比如拥有注意力(Attention)机制、外围记忆层(External Memory)或者用于神经机器翻译模型的深度时序快进网络。

  · 高效

  为了利用异构计算资源的能力,PaddlePaddle中的每一级都会进行优化,其中包括计算、内存、架构和通信。以下是几个例子:

  1.使用SSE/AVX内联函数、BLAS数据库(例如MKL、ATLAS、cuBLAS)和定制化的CPU/GPU Kernal来优化数学运算。

  2.高度优化RNNs网络,在没有Padding的情况下,也能处理不同长度的序列。

  3.优化的本地和分布式训练,同时支持高纬稀疏模型。

  · 可扩展

  有了PaddlePaddle,使用多个CPU和GPU以及机器来加速训练可以变得很轻松。 PaddlePaddle能通过优化通信,获得高吞吐量和性能。

  · 与产品的连接

  PaddlePaddle的部署也很简单。在百度,PaddlePaddle已经被用于产品和服务中,拥有大量用户。应用场景包括预估外卖的出餐时间、预判网盘故障时间点、精准推荐用户所需信息、海量图像识别分类、字符识别(OCR)、病毒和垃圾信息检测、机器翻译和自动驾驶等等。

  在PaddlePaddle简单、可扩展的逻辑下,徐伟评价说:“这将使工程师们能够快速、轻松地将深度学习技术应用到他们的产品当中,我们想让更多的人使用人工智能,人工智能对于我们的未来生活是非常重要的。”

  深度学习框架对比

  PaddlePaddle最主要的类比对象,来自UC伯克利的贾扬清开发的Caffe和Google的 TensorFlow。

  这是一张来自Spark Summit 2016的图,PaddlePaddle在开源前就在*的行业会议中进行了展示。

百度Paddle会和Python一样,成为最流行的深度学习引擎吗?

  PaddlePaddle、Caffe和TensorFlow都可以支持分布式训练,但相比之下PaddlePaddle 有很突出的优势。

  PaddlePaddle和Caffe在设计上有一些类似的地方,但是相比Caffe聚焦在视觉领域,PaddlePaddle可以在各种不同的场景中应用。而相比TensorFlow,PaddlePaddle的上手难度更低,也没有太多的Abstraction,速度也会更快。悦德财富:https://yuedecaifu.com

  而在RNN的性能表现上,PaddlePaddle的速度也要优于TensorFlow。

百度Paddle会和Python一样,成为最流行的深度学习引擎吗?

  总的来说

  1)Caffe具有出色的CNN实现功能的开发语言,在计算机视觉领域,Caffe仍然是最流行的工具包。Caffe的开发语言支持C++和Cuda,速度很快,但是由于一些历史性的遗留架构问题,它的灵活性不够强。而且对递归网络和语言建模的支持很差。Caffe支持所有主流开发系统,上手难度属于中等水平。

  2)TensorFlow是一个理想的RNN API实现,它使用了向量运算的符号图方法,使得开发的速度可以很快。TensorFlow支持的比较好的系统只有各种Linux系统和OSX,不过其对语言的支持比较全面,包含了Python、C++和Cuda等,开发者文档写得没有Caffe那么全面,所以上手比较难,在性能方面,也不如Caffe及PaddlePaddle。

  3)Torch没有跟随Python的潮流,反而选择了C语言实现,用Lua语言进行封装。Torch对卷积网络的支持非常好,运行在C++、C#和Jave等工业语言的速度较快,也不需要额外的编译。但是它的上手难度也很高,对初学者缺乏规范的例子,而且需要先迈过Lua的门槛,这对初学者是很大的障碍。

  4)而此次百度的PaddlePaddle性能优先并兼顾灵活,通过使用GPU异构计算来提升每台机器的数据处理能力,获得了业内“相当简洁、设计干净、稳定,速度较快,显存占用较小”等好评。

  而在关键的进入门槛上,相比Google TensorFlow和Facebook Torch,PaddlePaddle的上手难度低得多,且拥有非常优秀的业界特征,包括NLP和推荐等应用场景、对RNN很好的支持、高质量代码、以及分布式训练等,已经足以满足大多数AI场景的需求。且PaddlePaddle更加务实,可解决实际问题。

  据徐伟介绍,PaddlePaddle将在本月底发布最新版本,全面支持Mac操作系统、以及Cuda8.0和GCC5.4,同时进一步优化了安装过程,可以帮助更多开放者更好地“上手”。

百度Paddle会和Python一样,成为最流行的深度学习引擎吗?

  所以我们可以初步下一个结论,在中国的开发环境下,Google TensorFlow和Facebook Torch的上手难度都比较高,TensorFlow最好的训练环境Google Cloud也难以在中国获得支持。而Caffe虽然已经有了多年的积累,但是毕竟目前只是在视觉领域有比较好的发展,而且相比百度能提供的产业链支持,在资源投入上可能会有比较大的局限。相比之下,坐拥中国的本土市场,上手难度低得多的PaddlePaddle,将会有更好的技术和生态的环境。也许不久的将来,PaddlePaddle就会和Python在编程语言中所做的事情一样,成为最流行的深度学习引擎。

百度Paddle会和Python一样,成为最流行的深度学习引擎吗?的更多相关文章

  1. 用Python实现随机森林算法,深度学习

    用Python实现随机森林算法,深度学习 拥有高方差使得决策树(secision tress)在处理特定训练数据集时其结果显得相对脆弱.bagging(bootstrap aggregating 的缩 ...

  2. 百度DMLC分布式深度机器学习开源项目(简称“深盟”)上线了如xgboost(速度快效果好的Boosting模型)、CXXNET(极致的C++深度学习库)、Minerva(高效灵活的并行深度学习引擎)以及Parameter Server(一小时训练600T数据)等产品,在语音识别、OCR识别、人脸识别以及计算效率提升上发布了多个成熟产品。

    百度为何开源深度机器学习平台?   有一系列领先优势的百度却选择开源其深度机器学习平台,为何交底自己的核心技术?深思之下,却是在面对业界无奈时的远见之举.   5月20日,百度在github上开源了其 ...

  3. Python、机器学习、计算机视觉、深度学习入门

    1.简明Python教程 2.Python计算机视觉编程 3.机器学习实践 4.吴恩达机器学习 5.李飞飞深度学习与计算机视觉

  4. python之感知器-从零开始学深度学习

    感知器-从零开始学深度学习 未来将是人工智能和大数据的时代,是各行各业使用人工智能在云上处理大数据的时代,深度学习将是新时代的一大利器,在此我将从零开始记录深度学习的学习历程. 我希望在学习过程中做到 ...

  5. 深度学习“四大名著”发布!Python、TensorFlow、机器学习、深度学习四件套!

    Python 程序员深度学习的"四大名著": 这四本书着实很不错!我们都知道现在机器学习.深度学习的资料太多了,面对海量资源,往往陷入到"无从下手"的困惑出境. ...

  6. 【Python开发】【神经网络与深度学习】网络爬虫之图片自动下载器

    python爬虫实战--图片自动下载器 之前介绍了那么多基本知识[Python爬虫]入门知识(没看的赶紧去看)大家也估计手痒了.想要实际做个小东西来看看,毕竟: talk is cheap show ...

  7. 【Python开发】【神经网络与深度学习】网络爬虫之python实现

    一.网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字. 把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛. 网络蜘蛛是通过网页的链接地址来寻找网页的. 从网站某一 ...

  8. python streamlit 速成web页面,深度学习模型展示.

    #  点我查看 参考文献 py中一个web应用,Streamlit 是一个开源 Python 库,可让您轻松创建和共享用于机器学习和数据科学的精美自定义 Web 应用程序.只需几分钟,您就可以构建和部 ...

  9. 【Python开发】【神经网络与深度学习】如何利用Python写简单网络爬虫

    平时没事喜欢看看freebuf的文章,今天在看文章的时候,无线网总是时断时续,于是自己心血来潮就动手写了这个网络爬虫,将页面保存下来方便查看   先分析网站内容,红色部分即是网站文章内容div,可以看 ...

随机推荐

  1. SQL Server中TEXT类型字段值在数据库中追加字符串方法

    在数据上我们往往会遇到ntext大文本类型,这种类型如果和 nvarchar类型相加会出现问题,所以有一中方法可以解决这种问题. 使用的sql   函数: TEXTPTR:返回要更新的 text.nt ...

  2. Android 程序打包和安装过程

    APP程序打包与安装的流程: APP的安装过程:

  3. Java Swing 探索(一)LayoutManager

    BorderLayout FlowLayout GridLayout GridBagLayout CardLayout BoxLayout 1.BorderLayout java.lang.Objec ...

  4. ExtJS4.2学习(18)时间控件(转)

    鸣谢:http://www.shuyangyang.com.cn/jishuliangongfang/qianduanjishu/2013-12-22/190.html 感谢“束洋洋 ”的付出. 前言 ...

  5. delphi中formatFloat代码初探(在qt下实现floatformat的函数)

    由于项目需要,需要在qt下实现floatformat的函数.之前写过一个,但是写得不好.决定重新写一个,参考delphi xe2下的实现.把xe2下的相关代码都看了一遍,xe2的代码思路在这里贴出来. ...

  6. ASP.NET - 记住滚动条的位置

    MaintainScrollPositionOnPostback ="true" 如果是滚动条在最下面,那么如果刷新页面,滚动条回到最上面. 使用这个属性之后,滚动条会在刷新之前的 ...

  7. Ubuntu14.04安装PHP5

    因为任务需要在Ubuntu14.04的server版本下安装PHP5,所以总结一下   使用root进行安装  要么在前面加上sudo进行安装. apt-get install php5-cgi ap ...

  8. LAP+mysql-主从+redis

    Redis是一个开源的,内存中的数据结构存储系统,他可以用作数据库,缓存和消息中间介.支持多种类型数据库结构,如字符串(strings),散列(hashes),列表(lists),集合(sets),有 ...

  9. httpClient 中的post或者get请求

    httpClient相对于java自带的请求功能更加强大,下面就以例子的形式给出: //HttpClient Get请求 private static void register() { try { ...

  10. linux后台运行程序(secureCRT断掉或关闭后继续运行程序)

    secureCRT断掉后想继续运行程序.也就是程序会在后台一直执行到结束. secureCRT通过ssh联接到client端运行程序,如果关掉窗口或者断开连接时,任务会被kill. 为了程序能够后台执 ...