返回 登录
0

PaddlePaddle:百度分布式深度学习平台开源了

百度分布式深度学习平台Paddle宣布开源,支持Python、C++和SWIG,支持多机数据并行的深度学习模型训练,并提供了Sequence to Sequence模型的Demo。

还记得百度内部使用的分布式深度学习平台Paddle吗?在此前《程序员》文章《基于Spark的异构分布式深度学习平台》一文的介绍中,Paddle开发者提到了“在平台更成熟后,我们打算把Spark on PADDLE以及异构计算平台开源”。现在看来,Paddle已经开始成熟,因为在Github已经可以看到Paddle了(不过介绍里叫做“PaddlePaddle”),支持Python接口、C++以及SWIG,支持多机数据并行的深度学习模型训练,支持Apache-2.0 license,并提供了Sequence to Sequence模型的Demo。

Caffe作者贾扬清在知乎上评价:整体的设计感觉和Caffe心有灵犀,同时解决了Caffe早期设计当中的一些问题(比如说default stream)

图片描述

Paddle团队在Github上介绍,PaddlePaddle(PArallel Distributed Deep LEarning,并行分布深度学习)是一个易于使用、高效灵活、可扩展的深度学习平台,最初由百度科学家和工程师团队为将深度学习算法应用到很多百度产品上而开发。

特性

PaddlePaddle的四个特性简介如下:

  • 灵活性:PaddlePaddle支持广泛的神经网络结构和优化算法,很容易配置复杂的模型,如基于注意力(Attention)机制或复杂的记忆(Memory)连接的神经机器翻译模型。(Attention和Memory参考阅读:深度学习和自然语言处理中的attention和memory机制深度学习:推动NLP领域发展的新引擎

  • 高效:在PaddlePaddle的不同层面进行优化,以发挥异构计算资源的效率,包括计算、内存、架构和通信等。例如:

    • 通过SSE/AVX内部函数,BLAS库(例如MKL,ATLAS,CUBLAS)或定制CPU/GPU内核优化的数学运算。
    • 高度优化循环网络,以处理可变长度序列,无需填充(Padding)。
    • 优化高维稀疏数据模型的本地和分布式训练。
  • 可扩展性:PaddlePaddle很容易使用多个CPU/GPU和机器来加快你的训练,通过优化通信实现高吞吐量、高性能。

  • 连接产品:PaddlePaddle易于部署。在百度,PaddlePaddle已经被部署到广大用户使用的产品或服务,包括广告点击率(CTR)的预测,大型图像分类,光学字符识别(OCR),搜索排名,计算机病毒检测,推荐等。

PaddlePaddle支持使用Python接口或C++来构建系统,可以使用SWIG为开发者喜爱的编程语言创建接口。

Github上目前提供了图像分类、情绪分析、Sequence to Sequence模型、推荐和语义角色标注(SRL)等五个Demo

使用

Quick Start Tutorial看这里。涵盖深度学习应用的五个环节。

图片描述

Logistic Regression、Word Embedding、CNN、RNN等不同网络架构如下:

图片描述

↑↑↑ Logistic Regression

图片描述

↑↑↑ Word Embedding Model

图片描述

↑↑↑ Convolutional Neural Network Model

图片描述

↑↑↑ Recurrent Model

算法优化包括 Momentum, RMSProp, AdaDelta, AdaGrad, Adam 和 Adamax。这里可以使用极为适合循环神经网络的Adam优化方法及L2正则化和gradient clipping。

settings(batch_size=128,
         learning_rate=2e-3,
         learning_method=AdamOptimizer(),
         regularization=L2Regularization(8e-4),
         gradient_clipping_threshold=25)

源码文档在这里。方法和模型的讨论,可以联系paddle-dev@baidu.com。

评论