如何评价百度刚刚开源的Paddle平台?

2016-09-01 13:08:03 来源:济宁新闻网

宗仁,黄鑫联合编辑

百度今天开源了其深度学习平台 paddle,引发了挺多人工智能领域开发者的兴趣,包括一些之前一直在 Tensorflow 和 Caffe 上练手的开发者。不过鉴于深度学习的开源平台目前并不多,作为开发者也作为热心吃瓜群众的头等大事,就是想知道这个平台怎么样?别人怎么看这个平台?以及这个平台跟 Tensorflow 以及 Caffe 有何区别?

这个平台本身怎么样

paddle 本身在开源前就一直存在,始于 2013 年的时候,因为百度深度实验室察觉到自己在深度神经网络训练方面,伴随着计算广告、文本、图像、语音等训练数据的快速增长,传统的基于单 GpU 的训练平台已经无法满足需求,为此在徐伟的带领下,实验室搭建了 paddle (parallel Asynchronous Distributed Deep Learning)多机并行 GpU 这个训练平台。

但今天开源的 paddle 当然不是 3 年前的简单模型,3 年前 paddle 可能还是一个独立的深度学习平台,不能很好地支持把数据从其他平台接入的需求。但今天的 paddle 已经在处处强调,它的特色是让 Spark 与 pADDLE 耦合起来,是一个基于 Spark 的异构分布式深度学习系统。并且经过和百度相关业务的紧密摩擦后,它已经迭代了两个版本:从 Spark on paddle 架构 1.0 版,到 Spark on pADDLE 架构 2.0 版。根据平台开源的规则,大概是在百度内部用的非常得心应手,修复了一系列 bug 后,实验室才终于打算把 Spark on pADDLE 以及异构计算平台开源。至于百度为什么要开源,这个理由大家都懂的

深度学习平台目前还有很多 bug吸引更多的开发者来尝试和使用深度学习技术,对提高 paddle 的档次是绝对有帮助的。

外界人士对这个平台的评价

知乎上贾扬清的回答,目前是比较正面的评价。

1. 很高质量的 GpU 代码

2. 非常好的 RNN 设计

3. 设计很干净,没有太多的 abstraction,这一点比 TensorFlow 好很多。

4. 高速 RDMA 的部分貌似没有开源(可能是因为 RDMA 对于 cluster design 有一定要求):paddle/RDMANetwork.h at master baidu/paddle GitHub

5. 设计思路比较像第一代的 DL 框架,不过考虑到 paddle 已经有年头了,这样设计还是有历史原因的。

5. 1 config 是 hard-code 的 protobuf message,这对扩展性可能会有影响。

5. 2 可以看到很多有意思的类似历史遗留的设计:采用了 STREAM_DEFAULT macro,然后通过 TLS 的方式定向到非 default stream:paddle/hl_base.h at 4fe7d833cf0dd952bfa8af8d5d7772bbcd552c58 baidu/paddle GitHub (所以 paddle off-the-shelf 不支持 mac?)

5. 3 在梯度计算上采用了传统的粗粒度 forward/backward 设计(类似 Caffe)。可能有人会说所以 paddle 没有 auto gradient generation,这是不对的,autograd 的存在与否和 op 的粒度粗细无关。事实上,TensorFlow 在意识到细粒度 operator 超级慢的速度以后,也在逐渐转回粗粒度的 operator 上。目前只看到这里。总之是一个非常 solid 的框架,百度的开发功底还是不错的。

估计不少人都读过贾扬清的评价,下面我们贴一个前百度数据工程师,极视角 CTO 缨宁的评价:

看了一下,从设计理念来看和 Caffe 挺像的,但网络模型没有 Caffe 那么容易定义。最大贡献是做了分布式,提高了建立模型的速度。再详细的感受就得看代码和上手用了。

另一个跟上面两位观点反差较大的某研究深度学习的学者表示:

Tensorflow 的架构可以认为是一个升级版的 theano, theano 比 Caffe 还要早几年,只是 Caffe 最早 train 好了,同时发布了一些成功的卷积神经网络模型因此得到更多关注。Tensorflow 和 Caffe 没啥太大的关系,可能借鉴了 Caffe 某一些实现技巧,本质上没啥关系。 百度这个很有可能是看到 Caffe 的成功之后实现的,很大程度模仿的 Caffe, 同时试图修改一些东西使其看的和 Caffe 不一样。

我估计使用 Caffe 的人不会投向它,使用其他的工具的人(tensorflow, keras, theano, torch,mxnet)也不会投向它, 大家说几天然后就一个月之后看一下它的 github 的关注量和 github 上能够找到的别人写的代码量你就知道他是否能有什么浪花(后面可以看看有没有人用他来参加 kaggle 或者其他比赛或在科研发布代码)。现在基本每个大公司都发布自己的深度学习框架(或者机器学习框架),例如微软, 亚马逊, 雅虎,好像都没有大动静。

这个平台跟 Tensorflow 以及 Caffe 有何区别

雷锋网申请了 paddle 的今天公测版本,目前还在审核中,虽然不能直接下载体验,但和其它两个平台的区别也不是毫无踪迹。根据我们之前对 Caffe, Tensorflow 的了解,以及今天 paddle 放出的数据。

如何评价百度刚刚开源的 paddle 平台?

附接口语音

Caffe cmd, matlab, python

Tensorflow python, c++

paddle python, c++

(注:其中 python 是开发者主要使用的语言, 只有 Caffe 修改 model 内部的时候要用的c++。(如有异议,欢迎各开发者进一步交流)

总的来说

1)Caffe 可以说是第一个工业级深度学习工具,始于 2013 年底由 UC Berkely 的贾扬清编写的具有出色的 CNN 实现功能的开发语言,在计算机视觉领域 Caffe 仍然是最流行的工具包。

Caffe 的开发语言支持 C++ 和 Cuda,速度很快,但是由于一些历史性的遗留架构问题,它的灵活性不够强。而且对递归网络和语言建模的支持很差。Caffe 支持所有主流开发系统,上手难度属于中等水平。

2)Tensorflow 是 Google 开源的第二代深度学习技术,是一个理想的 RNN ApI 实现,它使用了向量运算的符号图方法,使得开发的速度可以很快。

Tensorflow 支持的比较好的系统只有各种 Linux 系统和 OSX,不过其对语言的支持比较全面,包含了 python、C++和 Cuda 等,开发者文档写得没有 Caffe 那么全面,所以上手比较难。

3)而此次百度的 paddle,作为基于 Spark 的异构分布式深度学习系统,通过使用 GpU 与 FpGA 异构计算提升每台机器的数据处理能力,暂时获得了业内相当简洁、设计干净、稳定,速度较快,显存占用较小。的评价,跟它通过使用 GpU 与 FpGA 异构计算提升每台机器的数据处理能力有重要联系。不过具体表现如何,还需等待几天观察一下大家的使用感受。

济宁IT新闻