forked from PaddlePaddle/Paddle
    
        
        - 
                Notifications
    
You must be signed in to change notification settings  - Fork 0
 
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的整体架构使统一百度内部深度学习框架成为可能,目前正在推进中。