勤快学

Paddle 教程

Paddle:百度深度学习平台,人工智能领域包括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以及异构计算平台开源。

Paddle 介绍?

 

1. Paddle 是很高质量的GPU代码

 

2. Paddle 是非常好的RNN设计

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

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

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

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

5.2 Paddle :可以看到很多有意思的类似历史遗留的设计:采用了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的框架,百度的开发功底还是不错的。

Paddle 平台跟Tensorflow以及Caffe有何区别

2018年9月3日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异构计算提升每台机器的数据处理能力有重要联系。不过具体表现如何,还需等待几天观察一下大家的使用感受。