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

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

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。