Skip to content

PaddlePadele fluid 介绍

Qiao Longfei edited this page Dec 29, 2017 · 1 revision

项目简介

不同于第一代基于sequence of layers和第二代graph of operators架构, Fluid是命令式编程的深度学习框架,可以让用户使用编程语句表示神经网络,类似Pytorch和TF Eager Execution。在这些系统中,不再有模型这个概念,而是像通用程序那样描述训练或者预测的过程。Fluid与PyTorch或Eager Execution的区别在于Fluid不依赖Python提供的控制流,如if-else/for/while,而是提供了基于C++实现的控制流并暴露了对应的Python接口。

Fluid正在朝深度学习编译器演化,用户程序经过Fluid编译器编译成一种等价源代码,这个源代码可以被nvcc编译成可以使用CUDA的二进制,或者被icc编译成可以充分利用Intel CPU的二进制,另外也可被编译成分布式执行计划交给集群进行分布式训练/预测。

主要技术方案概述

  • 用Nested Block抽象深度学习计算过程
  • 用中间格式ProgramDesc描述Nested Block
  • 用Transpiler对ProgramDesc进行编译,使其支持多设备/多机分布式
  • 用Operator抽象出深度学习的基本操作,如用于计算的add_op/conv_op和用于控制的if_else_op/while_op
  • 用Kernel封装具体的计算过程,一个Operator可以有多种Kernel,支持多种device/data_layout/library
  • Operator自动选择合适的kernel进行计算
  • 框架自动推导数据shape/type/layout
  • 框架自动推导反向(backward)网络和优化(optimize)网络

技术创新性/应用效果及影响性/项目收益

  • 深度学习编译器是目前深度学习框架前沿的研究方向,Fluid在这个方向走在世界最前列。
  • 基于Fluid强大的表达能力,除了常见的feed forward/CNN/RNN等结构,Fluid也可轻松支持动态RNN、GAN(对抗生成网络)和RL(强化学习)等复杂网络结构。
  • 目前单机单卡性能/准确度已和Tensorflow持平,正在持续优化中。
  • Fluid的整体架构使统一百度内部深度学习框架成为可能,目前正在推进中。
Clone this wiki locally