深度学习框架对比

来源:互联网 发布:人工智能三驾马车 编辑:程序博客网 时间:2024/05/22 09:41



PaddlePaddle


简单介绍


PArallel Distributed Deep Learning (并行分布式深度学习)  PaddlePaddle 是百度自主研发的性能优先、灵活易用的深度学习平台,是一个已经解决和将要解决一些实际问题的平台。已为百度内部多项产品提供深度学习算法支持,在深度学习框架方面,覆盖了搜索、图像识别、语音语义识别理解、情感分析、机器翻译、用户画像推荐等多领域的业务和技术, 如外卖的预估出餐时间、预判网盘故障时间点、精准推荐用户所需信息、海量图像识别分类、字符识别(OCR)、病毒和垃圾信息检测、机器翻译和自动驾驶等领域。


官网


http://www.paddlepaddle.org/

所用语言以及适合模型


C/C++ /cuda /  python   CNN/RNN/LSTM 

适用系统:linux osx


支持模式


支持CPU/GPU的单机和分布式模式。同时支持海量数据训练、数百台机器并行运算


优缺点


具有高质量的GPU代码;非常好的RNN设计;可以实现CPU并行运算

(1)灵活

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

(2)高效

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

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

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

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

(3)可扩展

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

(4)与产品的连接

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

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

 

 

TensorFlow

简单介绍


TensorFlow一大亮点是支持异构设备分布式计算,它能够在各个平台上自动运行模型,从手机、单个CPU / GPU到成百上千GPU卡组成的分布式系统。TensorFlow在很多地方可以应用,如语音识别,自然语言理解,计算机视觉,广告等等。但是,基于以上论点,我们也不能过分夸大TensorFlow这种通用深度学习框架在一个工业界机器学习系统里的作用。在一个完整的工业界语音识别系统里,除了深度学习算法外,还有很多工作是专业领域相关的算法,以及海量数据收集和工程系统架构的搭建。

TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。TensorFlow可被用于语音识别或图像识别等多项机器深度学习领域,它可在小到一部智能手机、大到数千台数据中心服务器的各种设备上运行。

相比于theano tensorflow的RNN仍有些不足

可以做测试(如果结果不是理想的输出,那么可以找github上的测试样例进行测试)

 

官网

https://www.tensorflow.org/

所用语言及适合模型


C++/CUDA/python  CNN /RNN/ LSTM

所用系统  linux、OSX


支持模式


灵活的架构可以部署在一个或多个CPU、GPU的台式以及服务器中

 

优缺点


(+)计算图抽象,如同 Theano

(+)比 Theano 更快的编译速度

(+)进行可视化的 TensorBoard

(+)数据和模型并行

(-)比其它框架慢

(-)比 Torch 更臃肿;更神奇;

(-)预训练模型不多

(-)计算图是纯 Python 的,因此更慢

(-)无商业化支持

(-)需要退出到 Python 才能加载每个新的训练 batch

(-)不能进行太大的调整

(-)在大型软件项目上,动态键入易出错

 

CAFFE

简单介绍


Caffe由加州大学伯克利的PHD贾扬清开发,全称ConvolutionalArchitecture for Fast Feature Embedding,是一个清晰而高效的开源深度学习框架,目前由伯克利视觉学中心(Berkeley Visionand Learning Center,BVLC)进行维护。


官网

http://caffe.berkeleyvision.org/

所用语言及适合模型


cmd/matlab/python  CNN  

所用系统:所有系统

支持模式


可以在CPU和GPU直接无缝切换,同时支持多GPU

 

优缺点


上手快:模型与相应优化都是以文本形式而非代码形式给出;

速度快:能够运行最棒的模型与海量的数据

模块化:方便扩展到新的任务和设置上

开放性:公开的代码和参考模型用于再现

社区好:可以通过BSD-2参与开发与讨论

 

(+)在前馈网络和图像处理上较好

(+)在微调已有网络上较好

(+)不写任何代码就可训练模型

(+)Python 接口相当有用

(-)需要为新的 GPU 层编写 C++/CUDA

(-)不擅长循环网络

(-)面对大型网络有点吃力(GoogLeNet,ResNet)

(-)不可扩展

(-)无商业化支持

 

Theano

简单介绍


2008年诞生于蒙特利尔理工学院,Theano派生出了大量深度学习Python软件包,最著名的包括Blocks和Keras。Theano的核心是一个数学表达式的编译器,它知道如何获取你的结构。并使之成为一个使用numpy、高效本地库的高效代码,如BLAS和本地代码(C++)在CPU或GPU上尽可能快地运行。它是为深度学习中处理大型神经网络算法所需的计算而专门设计的,是这类库的首创之一(发展始于2007年),被认为是深度学习研究和开发的行业标准。

深度学习领域内的很多学术研究人员依赖于 Theano,这个用 Python 编写的框架可谓是深度学习框架的老祖宗。Theano 像 Numpy 一样,是一个处理多维数组的库。与其他库一起使用,Theano 很适合于数据探索和进行研究。(高校做的,偏学术)


官网

http://deeplearning.net/software/theano/

所用语言及适合模型


python CNN /RNN/ LSTM

所用系统  所有操作系统


支持模式


Cpu,gpu,多gpu并行

 

优缺点


(+)Python+Numpy

(+)计算图是很好的抽象

(+)RNN 完美适配计算图

(-)原始 Theano 在某种程度上有些低水平

(+)高层次 wrappers(Keras,Lasange)减轻了这种痛苦

(-)错误信息没有帮助

(-)大型模型有较长的编译时间

(-)比 Torch 更「臃肿」

(-)对预训练模型支持不佳

(-)在 AWS 上有很多 bug,调bug很难


Deeplearning4j


简单介绍


Deeplearning4j是“for Java”的深度学习框架,也是首个商用级别的深度学习开源库。适用于人脸/图像识别;语音搜索;语音转文字(Speech to text);垃圾信息过滤(异常侦测);电商欺诈侦测


官网

https://deeplearning4j.org/

所用语言及适合模型

基于java

所用系统

支持模式

 

 

优缺点

这是一个面向生产环境和商业应用的高成熟度深度学习开源库,可与Hadoop和Spark集成,即插即用,方便开发者在APP中快速集成深度学习功能



总结





总的来说

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

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

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

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






 

0 0
原创粉丝点击