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在开源前就在顶级的行业会议中进行了展示。

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

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

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

  总的来说

  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,同时进一步优化了安装过程,可以帮助更多开放者更好地“上手”。

  所以我们可以初步下一个结论,在中国的开发环境下,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 2008 R2 开启允许远程连接

      方法/步骤 1 登陆SQL Server 2008(windows身份认证),登陆后右击,选择“属性”.   2 左侧选择“安全性”,选中右侧的“SQL Server 和 Windows 身份验证 ...

  2. this(C# 参考)

    原文地址:https://msdn.microsoft.com/zh-cn/library/dk1507sz.aspx this 关键字引用类的当前实例,还可用作扩展方法的第一个参数的修饰符. 注意 ...

  3. Flask+mongodb 实现简易个人博客

    最近学习完了<flask-web开发>,实现了一个简易的个人博客网站,由flask+mongodb+bootstrap做成, 这个软件是在阅读<Flask-Web开发>后写的一 ...

  4. Qt之QSizePolicy

    简述 QSizePolicy类是一个描述布局水平和垂直方向调整策略的属性. 大小策略会影响布局引擎处理部件的方式,部件加入布局以后,会返回一个QSizePolicy,描述了其水平和垂直方向的大小策略. ...

  5. Android 反编译工具简介

    Android 反编译工具: 所需工具:1 apktool : 用于获取资源文件 2 dex2Jar : 用于将classes.dex转化成jar文件 2 jd-gui: 将jar文件转化成java文 ...

  6. UITabBarController加载之后不显示sub view controller

    原代码: fileprivate func createSubiewControllers() { let newsVC = NewsViewController() let newsItem = U ...

  7. WebForm MapPageRoute 路由配置(转载)

    使用场景是:MVC 混合使用 WebForm,然后对 WebForm 进行路由配置 http://www.cnblogs.com/xishuai/archive/2015/02/26/web-form ...

  8. Scout YYF I(POJ 3744)

    Scout YYF I Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5565   Accepted: 1553 Descr ...

  9. Sui 弹框固定

    SUI是一套基于bootstrap开发的前端组件库,同时它也是一套设计规范,可以非常方便的设计和实现精美的页面,是一个简单易用.功能强大的UI库.自己在使用sui过程之中,总是忘记它的一些Api,今天 ...

  10. Log4J实用配置指南

    转自:http://www.cnblogs.com/licheng/archive/2008/08/23/1274566.html 1         概述 本文档是针对Log4j日志工具的使用指南. ...